PDA

Просмотр полной версии : Юниттесты в ас3


Dukobpa3
05.11.2011, 02:42
Никогда не использовал юниттесты, но мои серверщики ими уже все уши прожужжали как это круто и удобно и ускоряет разработку. Пишут они на питоне и те штуки которые показывали для работы с базой и сервером действительно впечатляют, но я в упор не могу придумать примеров где это может пригодиться в ас3, ведь флеш это восновном визуализация всего и вся. Да, есть конечно еще и модули работы с сервером, получение данных из БД, тут еще куда ни шло, могу как-то прикрутить, но не больше.

Поделитесь опытом, кто использовал, как использовали, и как вообще можно это использовать в ас3.

expl
05.11.2011, 15:30
У нас половина самопальной недоGUI-либы покрыта тестами, ибо по другому с багами боротся тяжело,
транспорт частично покрыт
В самих играх:
- парсинг некоторых книжек (тупо потому что так быстрее дебажить)
- хитрая специфичная для конкретной игры система перенаправления событий (100% coverage, проверял :) )
- логика изменения модели контроллером по получении данных от сервера (сервер не сообщает изменения, а просто присылет новый список объектов и вот этот страшный код делает diff и соответственно добавляет или удаляет объекты, имзеняет их свойства в хитрой иерархии, без тестов просто источник багов)
- некоторые вычислительные алгоритмы типа "найди уровень по текущему опыту и таблице изменения опыта на каждом уровне" - вроде и не сложно, но ошибиться с +1/-1 как нефиг делать, а дебажить без тестов долго
- расчет изменения параметров итемов по времени (естественно, тесты синхронные, просто фейковый таймер подставляется)
и т.д. и т.п.

Если надо написать какую-то хитрую коллекцию или линкованный список - юнит-тестирование применять однозначно.
Просто потому что в этом случае не надо протягивать в тестируемый объект кучу зависимостей, а дебажить в разы быстрее и есть гарантии что предыдущие методы этого списка не отломаете.

Не сразу очевидным оказалось то, что протестировать алгоритмы завязанные на RANDOM практически не возможно - только ручное тестирование с выводом в трейс. Просто потому что не выполняется условие повторяемости. И замена рандом-генератора детерменированным тоже ничего не дает - нам ведь надо протестить распределение вероятности, а не то что здесь вот должно появиться 125.

Но это все юнит-тесты. Интеграционные тесты я не писал никогда.

Где посмотреть примеры?
очень многие as3 либы на github.org или code.google.com