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
CodeFest
September 23, 2010
Programming
80
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
940
CodeFest 2019. Александр Зезюлин (Wargaming) – Прекрасное далёко
codefest
0
900
CodeFest 2019. Александр Баяндин (Badoo) — Нетрадиционное использование автотестов
codefest
0
1.4k
CodeFest 2019. Антон Кочепасов (Rambus) — Как считать на питоне быстрее, чем на C++
codefest
0
890
CodeFest 2019. Александр Лысковский (iFarm Project, Alawar, Welltory) — Как придумывать новое: продукты, бизнесы, ниши
codefest
0
990
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
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
420
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
ジョジョの世界をXRで再現する
mofurune
0
160
ActionController meets Protocol Buffers
sorah
0
450
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5k
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
160
ChromeでローカルLLM
ryu1013
0
140
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
600
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
27
30k
Next.js: The final boss of Web Performance
guaca
0
210
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
370
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
A Tale of Four Properties
chriscoyier
163
24k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
820
Rails Girls Zürich Keynote
gr2m
96
14k
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]