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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
По умолчанию Крик души о ТДД во вью

Собственно на сервере использую, нравится. Там по сути только модель и команды, главное проследить чтоб в модель попали нужные данные, и чтоб после обработки они были правильно отформатированы. Всё.

Теперь клиент. Архитектура мвц.
Пишу максимально инкапсулировано. Ну т.е. Я люблю всякие там статик манагеры для доступа к пулу вью, моделей и прочих одноранговых плюшек, но каждый объект выдает наружу только ивенты + парочку или вообще без паблик методов.

Так вот.
Тестируем модель. Ну тут ок. Как сервер. На фход скормили данные, проследили чтоб математика правильная была, всё круто.
Следующим тестом проверяем чтоб по таким-то изменениям были такие то диспатчи. Асинхронные тесты в помощь, но в целом не сложно.

Теперь контроллер.
Всё немного сложнее. В модель мы кормили данные, в контроллер же скамливаем какую-то мок-вью, через нее диспатчим, следим чтоб контроллер как-то реагировал. Усложняется тем что реакция контроллера выражается в вызове паблик метода модели. Т.е. ему нужно мок-вью, которая умеет спамить клики + мок модель, которая умеет слушать коллбеки. Но ладно, разобрались.

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

//**************************************
Короче пыжусь вот я со вьюхами но никак ни к чему не пришел внятному. В хаксе более менее проканывает, потому что там после компиляции все приваты становятся пабликами, так что могу чуть ли не насквозь всё смотреть.

В ас3 и инкапсуляцию нарушать неохота, но и танцевать вокруг событий с двух сторон как-то слишком сложно получается.

//**************************************
Вот и интересно как кто чего в этом плане делает.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Я не делаю, но если делал бы - то в ядро архитектуру вшивал бы функционал для интеграционных / е2е.
Не то чтобы круто, но других идей у меня нет.

Поднимал тему о бдд несколько месяцев назад, кстати - wxvxw там рассказывал свои мысли.

Старый 23.11.2013, 14:35
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 3  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
BDD вроде бизнес, а не тех решение? Нет?

Цитата:
в ядро архитектуру вшивал бы
Для е2е согласен, для ТДД как-то не очень. Вроде тесты должны помогать, а не заставлять менять архитектуру (которая зарекомендовала себя на не одном проекте). Я привык к мвц, мне нравится. А тут получается надо совсем уж подходы поменять. Энтити систем какую-то или типа того? Ну каждую энтити проще будет протестить, это да. Только как-то неохота вот так вот брать и всё менять.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Ну, я понимаю разницу примерно так, как описано здесь здесь. Мне нравится BDD тем, что он читабельней и "портируемей". Ну, то есть, сравни rspec (руби/рельсы тест фреймворк), капибару (тоже руби/рельсовое, но уже с клиент-сайдом в лице браузера) и жасмин (чисто клиентское). Умеешь "читать" один из этих фреймворков – сможешь прочитать любой другой. Но по сути, разницы нет. TDD только говорит о том, что сначала тест – потом код, а BDD говорит ещё и как этот тест писать. Ну, это моё виденье =)

Цитата:
Для е2е согласен, для ТДД как-то не очень.
Ну так и e2e тоже может быть ТДД, это вещи не взаимосвязанные. Можно написать код, а потом покрыть его тестами, а можно сначала написать тест, а потом озеленять его. Просто ТДД чаще применяют к юнит-тестам.

Честно, я бы на твоём месте особо не заморачивался – если ты пишешь юнит тесты, это уже хорошо (вроде, Flex::Unit для этого есть?). Замечательно, если покрытие ещё побольше, чем 30% и просто супер если действительно есть хотя бы немного е2е. Я всё таки сторонник, что тесты должны отнимать не больше времени, чем непосредственно сам код.

Что касается самих подходов – в моей голове всё проще; Действия пользователь чаще всего скатываются до "кликни здесь, нажми букву, кликни сюда" – и тест я вижу записанные так же. Что-то вроде
Код AS3:
find('main', 'inventoryButton').click.expect('window', 'inventory', 'open').find('inventory', 'potion').click;
player.hp.should.equal(100);
А между действиями по типу click и expect взводить таймер на 1 мс. Это вынесет всю обработку уже в следующий фрейм – нужно же время, чтобы инвентарю открыться.

Старый 24.11.2013, 03:21
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 5  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
e2e это ж типа тестирование внешней тулзой в основном.
Но архитектура должна позволять распарсить ДОМ.

Т.е. Запускаем тестирование и пошли курить. А тулза там кликает по кнопкам и проверяет функционал с точки зрения пользователя. (для этого и распарсить ДОМ, чтобы можно было диспатчить клики от имени кнопки)

Или я че-то не то рассказываю?
__________________
Кто к нам с чем для чего - тот у нас того от того.


Последний раз редактировалось Dukobpa3; 24.11.2013 в 20:21.
Старый 24.11.2013, 19:49
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Egde 2 edge это интеграционный тест – просто название другое. Кто-то говорит, что есть различия – но даже если и есть, то они весьма надуманные, имхо.
Суть тут такая, что это тестирование всего скопом. Комплексная работа всего приложения – от вьюх до контроллеров. В MVC логично ограничиваются тем, что подёргали вью – посмотрели модель. Если всё окей, то и контроллер окей – традиционно его считают "клеем" между вью и моделью.
Я это всё к чему: если тестировать браузером – то всё более-менее просто: есть DOM, он один для всех сайтов и либу для тестирования можно выложить отдельно (capybara, например). С флешем всё чуть сложнее, но по сути дисплай лист то же самое дерево; Другими словами, можно нагородить механизмов рефлексии для получения любого элемента. Что касается моделей – опять же, на бэкэнде это БД и изменения можно посмотреть там почти "напрямую", для флеша опять же придется городить свою систему.
В конечном счете, я смирился с тем что если я хочу такое тестирование – мне придется почти полностью переписывать механизм под каждый конкретный проект. В целом, решение спорное, но если проекту действительно требуется серьезное тестирование – то это хоть что-то.

По поводу внешней тулзы – всегда, конечно, приятней если логика тестирования будет отделена от логики самого приложения. Но конкретно в случае флеша я бы не сильно расстроился, если бы эти тесты полностью доставлялись клиенту. У чувака что-то глючит (а такое может быть из за багов / разных версий флешплеера), подсказали ему комбинацию клавиш и смотрим, все ли тесты прошли.

P.S. Только сейчас подумал, что, вероятно, ты DOM употреблял не в контексте браузеров, а в контексте дисплай листа; Если да – то да, ты меня понял верно.

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
DOM употреблял не в контексте браузеров, а в контексте дисплай листа
Именно это и имел в виду.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

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


 


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


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