SlideShare a Scribd company logo
Автоматизация Flex-приложений с помощью Selenium RCИгорь Хрол
Немного о себеИгорь ХролСпециализируюсь на автоматизации тестирования с 2006годаИнструменты:Selenium, HP QTP, Watir, TestComplete, JmeterE-mail: khroliz@gmail.com
Что будет в докладе?Немного о проектеКакой стоял выбор для автоматизации Flex’a?Сравнение инструментовВыбранное решение и архитектураTips&TricksТекущие результаты работы
О проектеwww.atg.com (с января 2011-го – часть Oracle)Середина 2009-го – вся UI-автоматизацияна HP QTPКонец 2009-го – первые версии приложения с Flexи решение начать автоматизацию на Selenium
Варианты Flex-автоматизацииHP QTP +  Flex QTP add-inSelenium-Flex API + Selenium RC + JavaFunFX + Watir + Ruby
Результаты оценки – скорость работы (JSP)Цикличное создание-удаление 100 сущностей в JSPВремя выполнения сценария в минутах
Результаты оценки – скорость работы (Flex)Цикличное создание-удаление 100 сущностей вo FlexВремя выполнения сценария в минутахQTP не поддерживает Firefox с Flex
Результаты оценки – скорость работы (Flex)Цикличная навигация по Flex – 100 разВремя выполнения сценария в минутахQTP не поддерживает Firefox с Flex
Недостатки QTPНестабильная работаРаспознавание UI-объектов с учётом практически всей иерархии объектовОтсутствие удобного языка и средств разработки
Схема работы Selenium Flex APISelenium RCКод тест-кейса (С#, Java, Python, Ruby и другое)HTTPБраузерSelenium Coreuser-extensions.jsТестируемое приложениеExternalInterfaceFlex
Поддержка различных браузеровНужна ли вообще?Различные версии IEGoogle Chrome, Safari, Opera…Ну и конечно Firefox
Структура фреймворка - локаторыПодобие ХPath, но не совсемОбщая структура:property:valueproperty1:value1,property2:value2property1:value1/property2:value2property1.subproperty11:value11,property2:value2/property3.subproperty31:value31Примеры…
Пример локатораid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/className:BrowsePanel/id:ancestorNavBar/id:dropdownButtonArea/id:nodeTextid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/className:BrowsePanel/id:ancestorNavBar/id:dropdownButtonArea/id:nodeTextid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/className:BrowsePanel/id:ancestorNavBar/id:dropdownButtonArea/id:nodeTextid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/className:BrowsePanel/id:ancestorNavBar/id:dropdownButtonArea/id:nodeTextid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/className:BrowsePanel/id:ancestorNavBar/id:dropdownButtonArea/id:nodeText
Пример локатораid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/name:mainPanel/className:HBox,numChildren:2,getChildAt(0).className:PropertyStatusIndicatorPanel,getChildAt(1).getChildAt(0).getChildAt(0).text:SKUs/styleName:defaultPropertyLabelid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/name:mainPanel/className:HBox,numChildren:2,getChildAt(0).className:PropertyStatusIndicatorPanel,getChildAt(1).getChildAt(0).getChildAt(0).text:SKUs/styleName:defaultPropertyLabelid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/name:mainPanel/className:HBox,numChildren:2,getChildAt(0).className:PropertyStatusIndicatorPanel,getChildAt(1).getChildAt(0).getChildAt(0).text:SKUs/styleName:defaultPropertyLabelid:merchandising.manageCommerceAssets_0,root.numModalWindows:0/name:mainPanel/className:HBox,numChildren:2,getChildAt(0).className:PropertyStatusIndicatorPanel,getChildAt(1).getChildAt(0).getChildAt(0).text:SKUs/styleName:defaultPropertyLabel
Структура фреймворкаСоотношение: класс из Flex’a↔класс из Java-фреймворка
Структура фреймворкаJava-класс инициализируется:своим локаторомлокатором контейнера
Структура фреймворка«Склейка» локаторов на уровне базового конструктора
Структура фреймворка - синхронизацияПри обращении к Java-объекту – ждём соответствующего объекта на UIСинхронизации нет???
Tips&Tricks – FlexSpyОсобенности:Запускается внутри флеш-объекта (может вызывать побочные эффекты)Лучше добавить его вызов на какую-нибудь комбинацию клавиш
FlexSpy
Обнаружение свойств объектов FlashInspectorПлагин к FirefoxТребует:Установки FirebugDebug-версию FlashPlayer’аFlashFirebug – другой аналог
СложностиАльтернативная разработка Selenium Flex API своими силамиУлучшена система локаторовИсправлено несколько дефектовРазработаны методы для работы с DataGrid’амиРасширено количество вызываемых событийНадеемся скоро это внести в виде своей доли в проект sfapi
Сложности«Нативные» нажатия на кнопки – например для закачивания/скачивания файловРешение: AutoITСоздание выполняемых exe-файловИспользование DLL через JNA
Интеграция с существующим кодом на QTPЦель: выполнение действий во Flex-еиз QTP с помощью существующего Java-кодаАлгоритм:Запуск браузера из Selenium’aСохранение сессииРабота с отрытым браузером из QTPВызов отдельных java-процессов с передачей в них сессии
Поддержка WebDriver (Selenium 2)БраузерКод тест-кейса (С#, Java, Python, Ruby и другое)WebDriver APIJavaScript evaluationExternalInterfaceТестируемое приложениеFlex
Результаты~400k строк кода~4500 java-классов (~3500 автоматизированных тест кейсов)Около 5 суток работы тестовРасширяемое решение
Вопросы

More Related Content

PPT
Adobe Flex константин ковалев
PDF
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
PDF
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
PPT
Selenium 2.0: обзор новых возможностей
PDF
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
ODP
Play/Scala as application platform (for http://wbcamp.in.ua 2013)
PDF
JavaScript Базовый. Занятие 03.
PPT
Основы Symfony и отличия Sf 3.x от Sf 2.x
Adobe Flex константин ковалев
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
Selenium 2.0: обзор новых возможностей
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
Play/Scala as application platform (for http://wbcamp.in.ua 2013)
JavaScript Базовый. Занятие 03.
Основы Symfony и отличия Sf 3.x от Sf 2.x

What's hot (11)

PPTX
Postman тестирование api v1.0 (1)
PDF
Виталий Каторгин, Wamba
PPT
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
PPTX
Микрофреймворки PHP
PPT
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
ODP
Linux drivers
PDF
#MBLTdev: Опыт использования MVVM в реальных проектах
PDF
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
PDF
Symfony как микрофреймворк
PDF
WordCamp Russia 2015: Фильтры и события в WordPress.
PPTX
ППП (Пишем Плагины Правильно)
Postman тестирование api v1.0 (1)
Виталий Каторгин, Wamba
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Микрофреймворки PHP
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Linux drivers
#MBLTdev: Опыт использования MVVM в реальных проектах
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
Symfony как микрофреймворк
WordCamp Russia 2015: Фильтры и события в WordPress.
ППП (Пишем Плагины Правильно)
Ad

Similar to Automation Flex Applications with Selenium rc (20)

PDF
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
PDF
Mobile web apps
PDF
Павел Юрийчук - Разработка приложений под мобильные браузеры
PPTX
Прокачиваем WebDriverAgent или как тестировать iOS-приложения после ядерного ...
PDF
YaC 2013 Notes
PPTX
Full Stack разработка на JavaScript
PDF
Mobile Web Apps development essentials
PDF
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
PDF
Владислав Моргун
PPTX
Meeting #4. Frameworks.
PPTX
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
PDF
Изоморфный JavaScript — будущее уже здесь
PPT
JavaScript-библиотека
PPTX
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PDF
Тестирование безDOMных объектов
PDF
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
PDF
Изоморфные Java script приложения с catberry.js
PDF
Разработка мобильных приложений на HTML5
PPTX
Devtools
PPTX
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Mobile web apps
Павел Юрийчук - Разработка приложений под мобильные браузеры
Прокачиваем WebDriverAgent или как тестировать iOS-приложения после ядерного ...
YaC 2013 Notes
Full Stack разработка на JavaScript
Mobile Web Apps development essentials
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Владислав Моргун
Meeting #4. Frameworks.
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Изоморфный JavaScript — будущее уже здесь
JavaScript-библиотека
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Тестирование безDOMных объектов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
Изоморфные Java script приложения с catberry.js
Разработка мобильных приложений на HTML5
Devtools
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Ad

More from automated-testing.info (20)

PDF
Александр Кабалюк – SilkTest
PDF
За пределами PageObject
PDF
Философия и построение тестового фреймворка на основе BDD в PHP проектах
PDF
Швейцарский нож для Android
PDF
Автоматизация тестирования как сервис
PDF
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
PDF
Тестирование производительности Ajax приложений с помощью JMeter
PDF
Быстрое расширение Robot Framework под свои нужды с использованием Python
PDF
“Обезьянье тестирование” в мобильных проектах
PDF
Проблемы автоматизации крупных проектов: TestComplete
PDF
Совершенный тестовый фреймворк
PDF
В поисках магической кнопки или как приручить SOAP UI
PDF
Фреймворк для регрессионного тестирования на основе WebDriver
PDF
Codeception - WTF?
PDF
Keyword driven testing
PDF
Why it is not working
PPTX
Andrey Azimov - Как найти работу тестировщику?
PPT
Jenkins auto configureforbranch-php
PPTX
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
PPT
Alexei Zozulenko - Test automation failure
Александр Кабалюк – SilkTest
За пределами PageObject
Философия и построение тестового фреймворка на основе BDD в PHP проектах
Швейцарский нож для Android
Автоматизация тестирования как сервис
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
Тестирование производительности Ajax приложений с помощью JMeter
Быстрое расширение Robot Framework под свои нужды с использованием Python
“Обезьянье тестирование” в мобильных проектах
Проблемы автоматизации крупных проектов: TestComplete
Совершенный тестовый фреймворк
В поисках магической кнопки или как приручить SOAP UI
Фреймворк для регрессионного тестирования на основе WebDriver
Codeception - WTF?
Keyword driven testing
Why it is not working
Andrey Azimov - Как найти работу тестировщику?
Jenkins auto configureforbranch-php
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Alexei Zozulenko - Test automation failure

Automation Flex Applications with Selenium rc

Editor's Notes

  • #5: Май 2010 по Gartner – в лидерах 2 решения в eCommerce: ATG и IBM WebSphere Commerce.
  • #8: Watir с FunFX – мы не смогли стабильно автоматизировать эталонный сценарий.Различие технологий Ruby-Java остановило от дальнейшего рассмотрения этого сценария.
  • #12: История про Firefox + WebSphere.Усилия на поддержку кроссбраузерности сократились на Flex.
  • #19: Отсутствует синхронизация в первой ветке if’a.
  • #22: Есть определённая нестабильность.
  • #24: Пример с «Browse…» - ограничения по Security FlashPlayer’a.
  • #27: 5-10человеко-лет разработки