![]() |
Цитата:
2 Psycho Tiger: т.е. все равнозначные контроллеры наследуются от общего, который использует одно и то же хранилище вьюшек? Ну да не суть. Идею понял, в настоящий момент пытаюсь воплотить со своими поправками, интересно, что получится. 2 wvxvw: У меня была скриптовая система, но заточить на что-то большее чем составные читы не вышло. В итоге я её выпилил, т.к. оказалось, что на as3 тоже самое налепить эффективнее по многим параметрам (даже учитывая небыстрый наш компилятор mxmlc). А вот о возможности динамической генерации скрипта при записи сценария и позабыл. Вчитываюсь... Действительно, тяжеловато понять что тут происходит. Итересно, как бы эта система выглядела для простого сценария: - юзер нажал кнопку "открыть окно" - юзер дождался, пока пройдут все асинхронные процессы и окно таки откроется - юзер нажал кнопку "сделать ерунду" - убедиться что в ответ на нажатие кнопки "сделать фигню" появился Alert "вы делаете фигню, нельзя!" С глобальным регистром view[class of view] еще что-то могу представить: Не мудрствуя лукаво, создаем конвеер Потапенко и добавляем туда задачи: - юзер нажал кнопку "открыть окно" берем у главной вьюшки кнопку по геттеру и эмулируем нажатие: Код AS3:
долбим по ENTER_FRAME следующее Код AS3:
Код AS3:
Код AS3:
|
Цитата:
|
Ну как бы в этом как раз и смысл, чтобы часть программы, которая должна взаимодействовать с пользователем сделать через "посредника" - этот посредник и будет вести лог + этот же лог будет самой программой выполнив которую тестируемая программа в точности воспроизведет то, что делал с ней до этого пользователь.
Самым неудачным местом в этой системе будет то, что нужно будет решить какие вызовы делать через встроенный язык - и они будут однозначно медленнее прямых вызовов, кроме того, у встраиваемого языка могут быть ограничения связаные со всякими особенностями окружения (констуирование объектов со сложными ссылками, например). Я когда-то думал о вариантах для встроенного языка, и собственно вот размышления по этому поводу: Что-то совсем примитивное бейсикоподобное - легко написать, ни использовать - у меня тавма детства от бейсика :) Да и я толком не знаком ни с одной из реализаций. Но, в принципе, как скриптовый язык - нормально. ЭкмаСкрипт - очень плохо подходит для работы с интерактивной консолью (объявление функций, сложный синтаксис). Но зато близко по духу АС3. Баш - есть ограничения на то, что можно сделать интерактивно + очень много внимания уделяется раскрытию путей к файлам, которое в такой ситуации не нужно. Питон - вобщем, было бы даже ничего так, но изза того, что индентация влияет на то, как парсинг - показалось ненадежно. Из лисповых вариантов - Анси Лисп - было бы здорово почти по всем параметрам, но очень уж он громоздкий. ЕмаксЛисп - вполне бы даже подошло. Схема - отравить жизнь ближним функциональным стилем. :) Но даже еЛисп очень уж большой и полная реализация заняла бы много места. Поэтому кропаю какую-то часть чего-то очень похожего на него. Можно, кстати, подумать об Эрланге - он довольно простой язык, но есть специфические конструкции которые в однопоточной среде тяжело реализовать. Кроме того, интерактивный шел хоть и есть, но не полноценный. |
Это что же получается, сначала мы кликаем по кнопкам и записываем скрипт
А потом запускаем скрипт, который кликает по кнопкам и записывает скрипт :) И мы же ручками ещё должны дописать проверки(assert'ы) к этому скрипту после записи? Генеральная идея понятна, просто не понятно что вообще в примере происходит :( Ещё некоторые опасения не понятны: По-моему, как раз взаимодействие с особенностями окружения не проблема, если выбрать скрипт на базе экма. Сам использовал hscript (но пришлось вдоль и поперек перепилить логику, ибо в оригинале для использования внутри as3 неудобен и даже не совсем работает - первым делом как заставил работать выпилил итераторы, бесполезные в as3, и впилил нормальный для as3 for each/for in, еще функции пришлось подрасширить) После "доточки" на нем строчилось как на as3, только без типизации и дерганье as3-функций/создание объектов через new выполнялось без проблем. Чем так плох java-script-подобный язык для консоли? По скорости тоже не понимаю опасений - ведь поднятие окон, выполнение запросов на сервер занимает куда больше времени чем вызов через скрипт. Там же не планируется диких алгоритмов с кучей проходов. Цитата:
|
http://code.google.com/p/flash-embedded-language/
Вот, залил что есть. Оно конечно страшненько пока что выглядит, но в принципе, при желании, я думаю, что можно будет разобраться. Ассерты - не, это не из той серии... это скорее CI тест / чтобы проверить, что ничего не испортили / программа вообще запускается и выполняет запланированные сценарии. Т.е. возможно, в теории можно будет как-то написать скрипт, чтобы он не просто воспроизводил действия пользователя, а еще и ошибки ловил и сам себя восстанавливал после ошибок и продолжал дальше... но мне это видится очень сложным... Т.е. ассерты - это для юнит тестов. Код, который идет на CI в принципе "считается" рабочим, т.е. он не должен сразу же падать с кучей ошибок, скорее задача найти трудновоспроизводимые баги. Цитата:
Экма для последовательного исполнения - ну как бы совсем не айс... в том смысле, что например: Код:
var foo = bar(); |
Цитата:
Единственное - непонятно как эмулировать движения мыши - всех наследовать от одного спрайта с перегруженными mouseX и mouseY чтоли... |
Я думал в совсем другом направлении... Можно было бы попробовать эмулировать работу мыши, например, с помощью такой штуки: http://www.semicomplete.com/projects/xdotool/ и писать скрипты не во флеше а сделать оболочку запускающую плеер. Но тут фишка в том, что это будет не скоррелировано с действиями настоящих пользователей, т.е. прийдется самому писать сценарии / выдумывать.
Можно, конечно, попрововать во флеше ловить все события на уровне capture - но будет очень много шума, особенно от передвижения мышки, печатания текстов и т.п. |
| Часовой пояс GMT +4, время: 01:06. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.