2. Немного о себе Игорь Хрол Специализируюсь на автоматизации тестирования с 2006года Инструменты: Selenium, HP QTP, Watir, TestComplete, Jmeter E-mail: khroliz@gmail.com
3. Что будет в докладе? Немного о проекте Какой стоял выбор для автоматизации Flex’a? Сравнение инструментов Выбранное решение и архитектура Tips&Tricks Текущие результаты работы
4. О проекте www.atg.com (с января 2011-го – часть Oracle) Середина 2009-го – вся UI-автоматизацияна HP QTP Конец 2009-го – первые версии приложения с Flexи решение начать автоматизацию на Selenium
6. Результаты оценки – скорость работы (JSP) Цикличное создание-удаление 100 сущностей в JSP Время выполнения сценария в минутах
7. Результаты оценки – скорость работы (Flex) Цикличное создание-удаление 100 сущностей вo Flex Время выполнения сценария в минутах QTP не поддерживает Firefox с Flex
8. Результаты оценки – скорость работы (Flex) Цикличная навигация по Flex – 100 раз Время выполнения сценария в минутах QTP не поддерживает Firefox с Flex
9. Недостатки QTP Нестабильная работа Распознавание UI-объектов с учётом практически всей иерархии объектов Отсутствие удобного языка и средств разработки
10. Схема работы Selenium Flex API Selenium RC Код тест-кейса (С#, Java, Python, Ruby и другое) HTTP Браузер Selenium Core user-extensions.js Тестируемое приложение ExternalInterface Flex
11. Поддержка различных браузеров Нужна ли вообще? Различные версии IE Google Chrome, Safari, Opera… Ну и конечно Firefox
12. Поддержка различных браузеров – модификации для Firefox Код тест-кейса (С#, Java, Python, Ruby и другое) Selenium RC HTTP Браузер Selenium Core user-extensions.js Тестируемое приложение ExternalInterface Bridge Flex
13. Структура фреймворка - локаторы Подобие ХPath, но не совсем Общая структура: property:value property1:value1,property2:value2 property1:value1/property2:value2 property1.subproperty11:value11,property2:value2/property3.subproperty31:value31 Примеры…
26. Структура фреймворка - синхронизация При обращении к Java-объекту – ждём соответствующего объекта на UI Синхронизации нет???
27. Tips&Tricks – FlexSpy Особенности: Запускается внутри флеш-объекта (может вызывать побочные эффекты) Лучше добавить его вызов на какую-нибудь комбинацию клавиш
29. Обнаружение свойств объектов FlashInspector Плагин к Firefox Требует: Установки Firebug Debug-версию FlashPlayer’а
30. Сложности Альтернативная разработка Selenium Flex API своими силами Улучшена система локаторов Исправлено несколько дефектов Разработаны методы для работы с DataGrid’ами Расширено количество вызываемых событий Надеемся скоро это внести в виде своей доли в проект sfapi
31. Сложности «Нативные» нажатия на кнопки – например для закачивания/скачивания файлов Решение: AutoIT Создание выполняемых exe-файлов Использование DLL через JNA
32. Интеграция с существующим кодом на QTP Цель: выполнение действий во Flex-еиз QTP с помощью существующего Java-кода Алгоритм: Запуск браузера из Selenium’a Сохранение сессии Работа с отрытым браузером из QTP Вызов отдельных java-процессов с передачей в них сессии
33. Результаты ~400k строк кода ~4500 java-классов (~3500 автоматизированных тест кейсов) Около 5 суток работы тестов Расширяемое решение
Май 2010 по Gartner – в лидерах 2 решения в eCommerce: ATG и IBM WebSphere Commerce.
Watir с FunFX – мы не смогли стабильно автоматизировать эталонный сценарий.Различие технологий Ruby-Java остановило от дальнейшего рассмотрения этого сценария.
История про Firefox + WebSphere.Усилия на поддержку кроссбраузерности сократились на Flex.
Отсутствует синхронизация в первой ветке if’a.
Есть определённая нестабильность.
Пример с «Browse…» - ограничения по Security FlashPlayer’a.