Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CodeFest'10. Высоцкий С. — Автоматизация тестир...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
CodeFest
September 23, 2010
Programming
79
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CodeFest'10. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest
September 23, 2010
More Decks by CodeFest
See All by CodeFest
CodeFest 2019. Илья Редько (ONLY) — Дизайн без правок
codefest
1
930
CodeFest 2019. Александр Зезюлин (Wargaming) – Прекрасное далёко
codefest
0
890
CodeFest 2019. Александр Баяндин (Badoo) — Нетрадиционное использование автотестов
codefest
0
1.4k
CodeFest 2019. Антон Кочепасов (Rambus) — Как считать на питоне быстрее, чем на C++
codefest
0
890
CodeFest 2019. Александр Лысковский (iFarm Project, Alawar, Welltory) — Как придумывать новое: продукты, бизнесы, ниши
codefest
0
980
CodeFest 2019. Роман Квартальнов (Zephyr) — Почему Project Manager косячит?
codefest
0
1.2k
CodeFest 2019. Florian Rival (Facebook) — Beyond Web-Apps: WebAssembly, JS and React to rewrite native apps
codefest
0
1.3k
CodeFest 2019. Андрей Паньгин (Одноклассники) — JVM TI: как сделать «плагин» для виртуальной машины
codefest
0
1.3k
CodeFest 2019. Владимир Плизга (ЦФТ) — Перевод Spring Boot микросервисов с Java 8 на 11: что может пойти -не- так?
codefest
0
1.8k
Other Decks in Programming
See All in Programming
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
200
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
XHTMLが残したもの
yosuke_furukawa
PRO
2
800
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
710
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
260
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
460
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
170
SREの越境 / SRE Collaboration
y0hgi
0
130
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
460
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
120
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
550
Intent as Code
shoppingjaws
6
1k
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Speed Design
sergeychernyshev
33
2.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
Site-Speed That Sticks
csswizardry
13
1.5k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
30 Presentation Tips
portentint
PRO
1
390
Raft: Consensus for Rubyists
vanstee
142
7.7k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
Faster Mobile Websites
deanohume
310
32k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Transcript
Codefest 2010 Автоматизация Тестирования Flex/Flash GUI
Очень простой подход к тестам GUI:
Более сложный подход к тестам GUI:
Мы это пропустим, потому что: Долго Сложно
Причем тут Flash?
В чем проблема?
Как решить? Автоматизировать черный ящик Сделать ящик более
прозрачным
Автоматизация черного ящика
Распознавание образов
Использовать координаты на экране
Победа? Слишком сложно писать Слишком сложно поддерживать
Сделать черный ящик прозрачным
MSAA Ограниченный доступ до информации Ограниченные возможности по
расширению Не все объекты поддерживают
Flash ExternalInterface Очень Много Работы
Flex Automation Framework Все отлично
Хочу работать с Flex Automation Framework Нужно: Понять как
работает Выбрать Инструменты
Flex Automation Framework. Принципы работы
Как работает Flex Automation Framework?
Ничего не понял. Объясните проще Нужно: Написать делегаты
Сделать отдельную сборку Начать писать тесты
Когда надо писать делегаты? Не надо Надо
Зачем писать делегаты? Для того чтобы работать с: Новыми
событиями Новыми объектами Сложными объектами
Какие же есть инструменты?
Дешево и сердито: Flash-Selenium. Доступ до FlexExternalInterface
FunFx. WatiR Flex-ui-Selenium. Внезапно... Selenium
Дорого и надежно: HP QuickTest Professional IBM Rational
Functional Tester SilkTest
Прочее TestComplete Увы только MSAA Ranorex
Скрипты на C#, vb.NET и т. д. RIATest Свой простой скриптовый язык FlexMonkey Тесты в ActionScript Sauce OnDemand Облачный сервис
Примеры WARNING: будут куски кода
Пример #1. Pop-up. Проблема: Pop-Up не видно
Пример #1. Pop-up. Почему? SystemManager Pop-up Приложение Агент
Пример #1. Pop-up. Что делать? SystemManager Pop-up Приложение Агент Какая-то
Кнопка
Пример #1. Pop-up. Кусок кода. public override function get numAutomationChildren():int
{ return popUp is IAutomationObject ? 1 : 0; } public override function getAutomationChildAt(index:int):IAutomationObject { return popUp as IAutomationObject; }
Пример #2. Идентификаторы. Login Password ? ?
Пример #2. Идентификаторы. Что делать? Попросить разработчиков проставлять идентификаторы
и делать это хорошо. Самим залезть в код и проставить идентификаторы. Переопределить get для AutomationName.
Пример #3. Сложный и последний. Не графический объект может
существовать в приложении Такие объекты не являются AutomationObject Если такой объект будет обнаружен агентом, то мы получим исключение
Пример #3. Сложный и последний. Кусок кода: private function get
automationContent():Array { var children:Array = []; if (container != null) { for (var i:int=0; i < container.numChildren; i++) { var child:IAutomationObject = container.getChildAt(i) as IAutomationObject; if (child != null) { children.push(child); } } } return children; } public override function getAutomationChildAt(index:int):IAutomationObject { return automationContent.length ? automationContent[index] : super.getAutomationChildAt(index);}
Flex Automation Checklist Выбрать инструменты Подготовить тестовую среду
Специальная сборка Делегаты Что-то еще Начать писать тесты
Сергей Высоцкий
[email protected]