|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Кто нибудь пишет тесты?
Заинтересовало, кто нибудь тестируют ли своё приложение и какие для этого использует фреймворки.
Нагуглил только ASUnit для юнит-тестов, который мне не очень понравился, если честно. Я приверженец BDD, как примеры – рубевский RSpec или джаваскриптовый Jasmine. Причем юнит-тесты – полбеды, я не нашел ничего для e2e-тестов (и, если честно, слабо представляю как можно сделать "общий" фреймворк для того во флеше). Возможно, ради возможности e2e-тестирования во флеше придется изначально правильно проектировать архитектуру – собственно, есть ли сейчас фреймворки с таким функционалом? Ну и, напоследок: те, кто знаком с тестированием занимаются ли оним во флеше?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Modus ponens
|
Во флеше - давно пользовался той библиотекой, которая вместе с Флекс билдером шла.
Сейчас использую свои наработки для JS - написаное на основании org-babel / noweb (literate programming). Есть идея в будущем написать на основе elnode CI сервер. Я понял, что очень многие тесты мне нужно выполнять на протяжении длительного времени (возможно дней, или даже больше), с постепенный заполнением отчетности по мере того, как тест выполняется. Это требует другого рода интеграции с тестовым сервером, чем та, которая предлагается традиционно (короткие сесси: где тесты заканчиваются практически сразу же.)
__________________
Hell is the possibility of sanity |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Хм. Ты думаешь во флеше актуальны тесты длинной более... ну не знаю, 10 минут? Типа е2е тест на прохождение длиннющего квеста в ММО?
Как я говорил в соседних темах, в emacs'е я полный ноль. Нагуглить что такое org-mode/babel проблемы не составило, однако я так и не понял, как на их основании ты делаешь тесты. И если я правильно понял это для тестирования JS кода – чего не хватило в существующих? Ну, например кармы (бывший testacular) с пакетами от angularjs или жасмина. Что касается CI на *node, как ты планируешь тестировать там вообще флеш? Собрать там свой плеер? :O В общем, расскажи пожалуйста подробнее, очень интересен твой опыт.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Modus ponens
|
Ну вот пример, сейчас у меня задача выяснить производительность канваса на разных телевизорах. Для этого я взял старую игрушку "Люксор", переписал ее немного, чтобы можно было статистику снимать. Написал бота, который в нее играет, и она часами крутится на нескольких устройствах, шлет данные.
Таким образом обнаружил один баг, который редко выпадает + получил представление о том, как вообще другие игрушки будут себя вести. Noweb - это не чисто эмаксовская фишка. Это идея Доналда Кнута о том, как писать код. В двух словах, код сначала пишется на упрощенном естесственном языке, а потом части этого кода реализуются на конкретном языке нужном для работы. В чем-то похожая идея в Огурце (Cucumber) - но там именно тесты пишутся на естесственном языке.
__________________
Hell is the possibility of sanity |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Проблема тестирования во флэш, в том, что нуждаются в тестировании в основном не столько логика отдельных юнитов, а асинхронные взаимодействия. Для тестов нужно городить моки и обёртки для логина к серверу и прочее и и прочее..
Тут уже без человеческого QA не обойтись. А по сути вопроса - я кроме FlexUnit ничего толкового не видел. И да - там даже асинк-тесты есть))) Добавлено через 3 минуты Цитата:
__________________
Отряд Котовскага |
|
|||||
Modus ponens
|
Я имел в виду что-то немного другоe. Когда продукт более-менее готов, то происходят две вещи:
1. простых тестов не остается, тесты как правило подразумевают всю программу работающей. 2. очень жалко запускать тест после того, как все уже сделано, и логин, и загрузили все ресурсы, и какая-то часть программы отработала, и тут один ассерт - и начинай все по-новой. Что я бы хотел / собираюсь сделать: чтобы тесты вместо того, чтобы фейлить напрямую, могли общаться с сервером, сообщая ему об ошибках / подозрительных ситуациях. Пример с тем же Люксором: шариком стреляем по другим шарикам, иногда получаем бонусный шарик, и баг проявляется в том, что если бонусным шариком попасть по самому первому из цепочки двигающихся шариков, то в зависимости от того, в какую сторону двигались шарики в это врема, вместо того, чтобы сбить их, бонусный шарик к ним цепляется и начинает себя вести как обычный шарик Сорри за такие подробности. Вобщем, после того, как это случилось, игра не падает, более того, еще несколько ходов, и этот баг исчезнет, никак не повлияв на игру. Баг очень сложно воспроизвести, т.как шарики выкатываются рандомально, у бота логика тоже не совсем прямолинейная, вобщем, ждать пока баг выпадет можно и час, и даже больше. А теперь, предположим, у вас в коде два ассерта, которые как-то связаны с вашим предположением о том, как же должны себя вести шарики. И вдруг ваш код, после часа работы падает с первым ассертом, так и не дойдя до второго? - обидно, не? Сейчас у меня просто примитивный скрипт на Питоне, который бежит на отдельном сервере, и которому я что-то рапортую из теста. Но хотелось бы все в одной коробке, чтобы и отчет сразу шел на нужный сервер, и вообще... интеграция
__________________
Hell is the possibility of sanity |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Цитата:
Речь про то, что достаточно сфейлить одному ассерту в рамках одного теста?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Modus ponens
|
Ммм... Literate Programming - это способ написания програм, общая идея. У него есть несколько реализаций. Есть cweb и есть noweb. Но это, опять же, только описание того, как оно работает, а реализации - ну вот org-babel - реализация, которая умеет это делать.
Literate Programming ~ программы можно писать сначала на обычном языке, а потом транслировать в ЯП. Noweb ~ программа написанная с использованием Literate Programming будет состоять из блоков: <<*>>= - отправной точки, <<имя>> - ссылки на блок кода <<имя>>= код @ - реализации кода. org-babel ~ механизм реализующий Noweb. Пример AS программы написаной на LP: <<class declaration>>= class Program extends Sprite { public function Program() { super(); <<initialize greeter>> } <<greeter program>> } @ Чем это хорошо для тестов: ну, посмотри Cucumber. Типичный тест выглядел бы как-то так (не в Огурце): С последующим расскрытием содержания теста в уже настоящий код. Чем такие тесты полезны? - например, если QA не пишет на языке, на котором написана программа, видя такой тест они смогут понять, что именно не работает.
__________________
Hell is the possibility of sanity |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Теперь понял. Мощная у тебя задумка
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 17:28. |
|
« Предыдущая тема | Следующая тема » |
|
|