Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.07.2013, 11:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 1  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
По умолчанию Кто нибудь пишет тесты?

Заинтересовало, кто нибудь тестируют ли своё приложение и какие для этого использует фреймворки.
Нагуглил только ASUnit для юнит-тестов, который мне не очень понравился, если честно. Я приверженец BDD, как примеры – рубевский RSpec или джаваскриптовый Jasmine.
Причем юнит-тесты – полбеды, я не нашел ничего для e2e-тестов (и, если честно, слабо представляю как можно сделать "общий" фреймворк для того во флеше). Возможно, ради возможности e2e-тестирования во флеше придется изначально правильно проектировать архитектуру – собственно, есть ли сейчас фреймворки с таким функционалом?

Ну и, напоследок: те, кто знаком с тестированием занимаются ли оним во флеше?

Старый 03.07.2013, 13:09
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Во флеше - давно пользовался той библиотекой, которая вместе с Флекс билдером шла.
Сейчас использую свои наработки для JS - написаное на основании org-babel / noweb (literate programming).
Есть идея в будущем написать на основе elnode CI сервер. Я понял, что очень многие тесты мне нужно выполнять на протяжении длительного времени (возможно дней, или даже больше), с постепенный заполнением отчетности по мере того, как тест выполняется. Это требует другого рода интеграции с тестовым сервером, чем та, которая предлагается традиционно (короткие сесси: где тесты заканчиваются практически сразу же.)
__________________
Hell is the possibility of sanity

Старый 03.07.2013, 21:05
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Хм. Ты думаешь во флеше актуальны тесты длинной более... ну не знаю, 10 минут? Типа е2е тест на прохождение длиннющего квеста в ММО?

Как я говорил в соседних темах, в emacs'е я полный ноль. Нагуглить что такое org-mode/babel проблемы не составило, однако я так и не понял, как на их основании ты делаешь тесты. И если я правильно понял это для тестирования JS кода – чего не хватило в существующих? Ну, например кармы (бывший testacular) с пакетами от angularjs или жасмина.
Что касается CI на *node, как ты планируешь тестировать там вообще флеш? Собрать там свой плеер? :O

В общем, расскажи пожалуйста подробнее, очень интересен твой опыт.

Старый 03.07.2013, 23:26
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну вот пример, сейчас у меня задача выяснить производительность канваса на разных телевизорах. Для этого я взял старую игрушку "Люксор", переписал ее немного, чтобы можно было статистику снимать. Написал бота, который в нее играет, и она часами крутится на нескольких устройствах, шлет данные.
Таким образом обнаружил один баг, который редко выпадает + получил представление о том, как вообще другие игрушки будут себя вести.
Noweb - это не чисто эмаксовская фишка. Это идея Доналда Кнута о том, как писать код. В двух словах, код сначала пишется на упрощенном естесственном языке, а потом части этого кода реализуются на конкретном языке нужном для работы.
В чем-то похожая идея в Огурце (Cucumber) - но там именно тесты пишутся на естесственном языке.
__________________
Hell is the possibility of sanity

Старый 04.07.2013, 01:16
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 5  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Проблема тестирования во флэш, в том, что нуждаются в тестировании в основном не столько логика отдельных юнитов, а асинхронные взаимодействия. Для тестов нужно городить моки и обёртки для логина к серверу и прочее и и прочее..
Тут уже без человеческого QA не обойтись.
А по сути вопроса - я кроме FlexUnit ничего толкового не видел. И да - там даже асинк-тесты есть)))

Добавлено через 3 минуты
Цитата:
Я понял, что очень многие тесты мне нужно выполнять на протяжении длительного времени
Есть team-city. Например у нас при коммите в мастер и при номере версии x.x.0, т.е. новой - в тимсити создавался таск по сборке и после него запускались суперпупертесты из всего набора + внешние тесты( не кодом) по замеру потребления памяти, скорости итп..
__________________
Отряд Котовскага

Старый 04.07.2013, 02:24
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я имел в виду что-то немного другоe. Когда продукт более-менее готов, то происходят две вещи:
1. простых тестов не остается, тесты как правило подразумевают всю программу работающей.
2. очень жалко запускать тест после того, как все уже сделано, и логин, и загрузили все ресурсы, и какая-то часть программы отработала, и тут один ассерт - и начинай все по-новой.

Что я бы хотел / собираюсь сделать: чтобы тесты вместо того, чтобы фейлить напрямую, могли общаться с сервером, сообщая ему об ошибках / подозрительных ситуациях. Пример с тем же Люксором: шариком стреляем по другим шарикам, иногда получаем бонусный шарик, и баг проявляется в том, что если бонусным шариком попасть по самому первому из цепочки двигающихся шариков, то в зависимости от того, в какую сторону двигались шарики в это врема, вместо того, чтобы сбить их, бонусный шарик к ним цепляется и начинает себя вести как обычный шарик Сорри за такие подробности.
Вобщем, после того, как это случилось, игра не падает, более того, еще несколько ходов, и этот баг исчезнет, никак не повлияв на игру. Баг очень сложно воспроизвести, т.как шарики выкатываются рандомально, у бота логика тоже не совсем прямолинейная, вобщем, ждать пока баг выпадет можно и час, и даже больше.
А теперь, предположим, у вас в коде два ассерта, которые как-то связаны с вашим предположением о том, как же должны себя вести шарики. И вдруг ваш код, после часа работы падает с первым ассертом, так и не дойдя до второго? - обидно, не?
Сейчас у меня просто примитивный скрипт на Питоне, который бежит на отдельном сервере, и которому я что-то рапортую из теста. Но хотелось бы все в одной коробке, чтобы и отчет сразу шел на нужный сервер, и вообще... интеграция
__________________
Hell is the possibility of sanity

Старый 04.07.2013, 10:45
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 7  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Често говоря давно присматриваюсь к TDD, но все никак не могу себя заставить писать код в этой манере. А так, из того, что видел, на меня сильное впечатление произвел SinonJS если бы нечто подобное было на AS3 это было бы круто)

Старый 04.07.2013, 14:53
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Noweb - это не чисто эмаксовская фишка.
Не-не, речь об org-babel'е. Если это подвид noweb'a то, выходит, описание алгоритма перед реализацией является подвидом тестов? Я не могу уловить мысль, если честно.
Цитата:
Что я бы хотел / собираюсь сделать: чтобы тесты вместо того, чтобы фейлить напрямую, могли общаться с сервером, сообщая ему об ошибках / подозрительных ситуациях.
Возможно, я не о том, но когда я запускаю тест я вижу сколько красных (и каких) и сколько зеленых. Протестировав одну фичу, которая сфейлила – будет тестироваться следующая.
Речь про то, что достаточно сфейлить одному ассерту в рамках одного теста?

Старый 05.07.2013, 00:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ммм... Literate Programming - это способ написания програм, общая идея. У него есть несколько реализаций. Есть cweb и есть noweb. Но это, опять же, только описание того, как оно работает, а реализации - ну вот org-babel - реализация, которая умеет это делать.
Literate Programming ~ программы можно писать сначала на обычном языке, а потом транслировать в ЯП.
Noweb ~ программа написанная с использованием Literate Programming будет состоять из блоков:
<<*>>= - отправной точки,
<<имя>> - ссылки на блок кода
<<имя>>=
код
@ - реализации кода.
org-babel ~ механизм реализующий Noweb.

Пример AS программы написаной на LP:

Код:
<<*>>=
<<package declaration>> {
    <<imports>>
    <<class declaration>>
}
@
Код:
<<class declaration>>=
class Program extends Sprite {
    public function Program() {
        super();
        <<initialize greeter>>
    }
    <<greeter program>>
}
@
Код:
<<package declaration>>=
package tld.foo.bar
@
Код:
<<imports>>=
import flash.display.Sprite;
import flash.events.MouseEvent;
@
Код:
<<initialize greeter>>=
super.addEventListener(MouseEvent.CLICK, this.sayHello);
@
Код:
<<greeter program>>=
<<greeting>>
<<say hello>>
@
Код:
<<greeting>>=
private var greeting: String = "Hellow World!";
@
Код:
<<say hello>>=
private function sayHello(event: MouseEvent): void {
    trace(greeting);
}
@
Ну а org-babel уже нам поможет это собрать / показать с комментариями или без.

Чем это хорошо для тестов: ну, посмотри Cucumber.
Типичный тест выглядел бы как-то так (не в Огурце):
Код:
<<*>>=
<<prepare tic-tac-toe game>>
<<player plays A0>>
<<computer plays B1>>
<<player plays A3>>
<<computer plays C0>>
<<player plays A1>>
<<assert player wins>>
@
С последующим расскрытием содержания теста в уже настоящий код. Чем такие тесты полезны? - например, если QA не пишет на языке, на котором написана программа, видя такой тест они смогут понять, что именно не работает.
__________________
Hell is the possibility of sanity

Старый 05.07.2013, 14:30
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Теперь понял. Мощная у тебя задумка

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.