|
|
|||||
Цитата:
2 Psycho Tiger: т.е. все равнозначные контроллеры наследуются от общего, который использует одно и то же хранилище вьюшек? Ну да не суть. Идею понял, в настоящий момент пытаюсь воплотить со своими поправками, интересно, что получится. 2 wvxvw: У меня была скриптовая система, но заточить на что-то большее чем составные читы не вышло. В итоге я её выпилил, т.к. оказалось, что на as3 тоже самое налепить эффективнее по многим параметрам (даже учитывая небыстрый наш компилятор mxmlc). А вот о возможности динамической генерации скрипта при записи сценария и позабыл. Вчитываюсь... Действительно, тяжеловато понять что тут происходит. Итересно, как бы эта система выглядела для простого сценария: - юзер нажал кнопку "открыть окно" - юзер дождался, пока пройдут все асинхронные процессы и окно таки откроется - юзер нажал кнопку "сделать ерунду" - убедиться что в ответ на нажатие кнопки "сделать фигню" появился Alert "вы делаете фигню, нельзя!" С глобальным регистром view[class of view] еще что-то могу представить: Не мудрствуя лукаво, создаем конвеер Потапенко и добавляем туда задачи: - юзер нажал кнопку "открыть окно" берем у главной вьюшки кнопку по геттеру и эмулируем нажатие: - юзер дождался, пока пройдут все асинхронные процессы и окно таки откроется долбим по ENTER_FRAME следующее _window = register.getView(Window) if (_window == null) { _numTicks++; if (_numTicks > waitLimith) { throw "не дождались!"; } } else { //дождались _conveyor.play(); } - убедиться что в ответ на нажатие кнопки "сделать ерунду" появился Alert "Вы делаете ерунду, нельзя!" var alert:Alert = register.getView(Alert); if (alert == null) { _numTicks++; if (_numTicks > waitLimith) { throw "мы ждали, ждали, а окно Вы делаете ерунду так и не всплыло"; } } else { if (alert.text != "Вы делаете ерунду, нельзя!") { throw "Вообще-то, мы ожидали другое окно"; } _conveyor.play(); } Последний раз редактировалось expl; 19.04.2012 в 00:05. |
|
|||||
попробую еще раз: http://active.tutsplus.com/tutorials...lay-web-games/
|
|
|||||
Modus ponens
|
Ну как бы в этом как раз и смысл, чтобы часть программы, которая должна взаимодействовать с пользователем сделать через "посредника" - этот посредник и будет вести лог + этот же лог будет самой программой выполнив которую тестируемая программа в точности воспроизведет то, что делал с ней до этого пользователь.
Самым неудачным местом в этой системе будет то, что нужно будет решить какие вызовы делать через встроенный язык - и они будут однозначно медленнее прямых вызовов, кроме того, у встраиваемого языка могут быть ограничения связаные со всякими особенностями окружения (констуирование объектов со сложными ссылками, например). Я когда-то думал о вариантах для встроенного языка, и собственно вот размышления по этому поводу: Что-то совсем примитивное бейсикоподобное - легко написать, ни использовать - у меня тавма детства от бейсика Да и я толком не знаком ни с одной из реализаций. Но, в принципе, как скриптовый язык - нормально. ЭкмаСкрипт - очень плохо подходит для работы с интерактивной консолью (объявление функций, сложный синтаксис). Но зато близко по духу АС3. Баш - есть ограничения на то, что можно сделать интерактивно + очень много внимания уделяется раскрытию путей к файлам, которое в такой ситуации не нужно. Питон - вобщем, было бы даже ничего так, но изза того, что индентация влияет на то, как парсинг - показалось ненадежно. Из лисповых вариантов - Анси Лисп - было бы здорово почти по всем параметрам, но очень уж он громоздкий. ЕмаксЛисп - вполне бы даже подошло. Схема - отравить жизнь ближним функциональным стилем. Но даже еЛисп очень уж большой и полная реализация заняла бы много места. Поэтому кропаю какую-то часть чего-то очень похожего на него. Можно, кстати, подумать об Эрланге - он довольно простой язык, но есть специфические конструкции которые в однопоточной среде тяжело реализовать. Кроме того, интерактивный шел хоть и есть, но не полноценный.
__________________
Hell is the possibility of sanity |
|
|||||
Это что же получается, сначала мы кликаем по кнопкам и записываем скрипт
А потом запускаем скрипт, который кликает по кнопкам и записывает скрипт И мы же ручками ещё должны дописать проверки(assert'ы) к этому скрипту после записи? Генеральная идея понятна, просто не понятно что вообще в примере происходит Ещё некоторые опасения не понятны: По-моему, как раз взаимодействие с особенностями окружения не проблема, если выбрать скрипт на базе экма. Сам использовал hscript (но пришлось вдоль и поперек перепилить логику, ибо в оригинале для использования внутри as3 неудобен и даже не совсем работает - первым делом как заставил работать выпилил итераторы, бесполезные в as3, и впилил нормальный для as3 for each/for in, еще функции пришлось подрасширить) После "доточки" на нем строчилось как на as3, только без типизации и дерганье as3-функций/создание объектов через new выполнялось без проблем. Чем так плох java-script-подобный язык для консоли? По скорости тоже не понимаю опасений - ведь поднятие окон, выполнение запросов на сервер занимает куда больше времени чем вызов через скрипт. Там же не планируется диких алгоритмов с кучей проходов. Цитата:
Последний раз редактировалось expl; 19.04.2012 в 01:16. |
|
|||||
Modus ponens
|
http://code.google.com/p/flash-embedded-language/
Вот, залил что есть. Оно конечно страшненько пока что выглядит, но в принципе, при желании, я думаю, что можно будет разобраться. Ассерты - не, это не из той серии... это скорее CI тест / чтобы проверить, что ничего не испортили / программа вообще запускается и выполняет запланированные сценарии. Т.е. возможно, в теории можно будет как-то написать скрипт, чтобы он не просто воспроизводил действия пользователя, а еще и ошибки ловил и сам себя восстанавливал после ошибок и продолжал дальше... но мне это видится очень сложным... Т.е. ассерты - это для юнит тестов. Код, который идет на CI в принципе "считается" рабочим, т.е. он не должен сразу же падать с кучей ошибок, скорее задача найти трудновоспроизводимые баги. Цитата:
Экма для последовательного исполнения - ну как бы совсем не айс... в том смысле, что например: нормально - но чтобы отследить что же на самом деле происходило (т.е. bar не должен был вызваться т.как его еще не было) не получится.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 19.04.2012 в 02:34. |
|
|||||
Цитата:
Единственное - непонятно как эмулировать движения мыши - всех наследовать от одного спрайта с перегруженными mouseX и mouseY чтоли... |
|
|||||
Modus ponens
|
Я думал в совсем другом направлении... Можно было бы попробовать эмулировать работу мыши, например, с помощью такой штуки: http://www.semicomplete.com/projects/xdotool/ и писать скрипты не во флеше а сделать оболочку запускающую плеер. Но тут фишка в том, что это будет не скоррелировано с действиями настоящих пользователей, т.е. прийдется самому писать сценарии / выдумывать.
Можно, конечно, попрововать во флеше ловить все события на уровне capture - но будет очень много шума, особенно от передвижения мышки, печатания текстов и т.п.
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 15:14. |
|
« Предыдущая тема | Следующая тема » |
|
|