SlideShare a Scribd company logo
Автоматизация тестирования сложных  Flash- интерфейсов Комлев Александр,  Rambler,  отдел  QA
Формулировка исходной задачи Что нужно тестировать? Сложные клиентские  flash- приложения  –  многопользовательские ( realtime )   игры, записывающие аудио/видео проигрыватели. Зачем автоматизировать? Чрезвычайно неэффективное использование человеческих ресурсов при ручном тестировании, либо отсутствие гарантий качества продукта. Что нам в итоге нужно? Простое, быстрое, хорошо интегрированное решение. Тут ничего нового и оригинального. Ключевой момент: поддержка и написание тестов не   должны требовать привлечения высококвалифицированных кадров.
Как можно тестировать? Топологический принцип Подготовка сценариев на основе взаимного расположения элементов интерфейса относительно друг друга. Ненадежный и абсолютно не универсальный способ. Эффективность трудозатрат по созданию, поддержке и отладке автотестов сравнима с исходной. Системный принцип Внедрение существующих мощных, тяжеловесных сред автоматического тестирования, использующих системные средства для доступа к объекту тестирования. Очевидных проблем нет, надо разбираться что к чему.
Обзор существующих решений Признанные «крутые» решения Test Complete  by AutomatedQA MacromediaFlashPlayerActiveX window class,  написанный с использованием Microsoft Active Accessibility (MSAA Open Applications plug-in) Достоинства Универсальная, мощная, прекрасно поддерживаемая система. Вместе с  Flash  поддерживается и  Flex.   Недостатки Поддержка только операционных систем линейки  Windows. Поддержка одного типа браузеров –  Internet Explorer. Платное и весьма недешевое решение.
Обзор существующих решений Quick Test Professional by Mercury Mercury  и  Macromedia  еще   в 2005 году договорились о поддержке  Flex  в  QTP. Кажется, решение найдено? Достоинства Универсальная, мощная, прекрасно поддерживаемая система. Удобная работа с мощным mx.automation.* package из  Flex Framework . Недостатки Поддержка только операционных систем линейки  Windows. Поддержка одного типа браузеров –  Internet Explorer. Платное и весьма недешевое решение. Поддержка  Flex , а не  Flash .
Обзор существующих решений «Гиганты» не поддерживающие  Flash Borland SilkTest Способен работать с  Flash  только как с целым нераздельным объектом. IBM Rational Robot Просто не поддерживает  Flash , при этом полностью поддерживает технологию  Java Applets :)
Обзор существующих решений Selen iu m Бесплатное и мощное средство для автоматического тестирования.  Достоинства Универсальная, мощная, прекрасно поддерживаемая система. Полная кроссплатформенность и кроссбраузерность. Open Source. Поддержана работа с  Flash  с использованием Macromedia Flash JavaScript  G ateway . Недостатки Нестабильность работы отдельных компонентов. Поддержка Macromedia Flash JavaScript  G ateway ограничена.
Обзор существующих решений Компоненты, библиотеки AFLAX Asynchronous Flash and XML, автор (Paul Colton) позиционирует проект как «замену не поддерживаемому Macromedia Flash JavaScript  G ateway». Плохое решение с «неработающим» подходом. Flash / JavaScript Integration Kit Идея заключается в использовании FlashProxy для коммуникации с целевым объектом с использованием LocalConnection. Неплохое решение с интересным, но «неправильным» подходом.
Критерии поиски «правильного» решения Кроссплатформенность Кроссбраузерность Open Source,  либо  Open Source + Home made Ключевой момент:   Требования относятся как к способу взаимодействия с  Flash- объектами, так и платформе для запуска автоматических тестов.
Macromedia Flash JavaScript gateway … или « Scripting with Flash » Поддержка платформ и браузеров Netscape Navigator 3.0 и выше (с поддержкой LiveConnect и Java; Windows 95/98/NT/2000 или MacOS) . Internet Explorer 3.0 и выше (с поддержкой ActiveX; только Windows 95/98/NT/2000).  Требования к OBJECT и EMBED Тег  <OBJECT>  и  <EMBED>  должны иметь свойство  ID/NAME  соответственно. Доступные  flash- методы GetVariable() & SetVariable(), LoadMovie(), GotoFrame()  и т.д. FSCommand ( command, args )   -  наиболее востребованный и интересный метод (тип данных – только  String , ограничение на количество передаваемых аргументов).
External Interface Class Поддержка платформ и браузеров -  Internet Explorer 5.0 и выше (без ограничения по платформам). -  Любые   контейнеры (например,  desktop- приложение), использующие экземпляр Flash Player ActiveX control . -  Любой браузер с поддержкой NPRuntime interface . Firefox 1.0 и выше Mozilla 1.7.5 и выше Netscape 8.0 и выше Safari 1.3 и выше Смело добавляем сюда  – Opera  8   и выше (NPA PI  поддерживает с 2004 года).
External Interface Class Качественно новые возможности -  Нет ограничения по количеству передаваемых аргументов и длине имен аргументов. -  Поддержка дополнительных типов данных аргументов ( Boolean, Number ) . -  Получение результатов вызова . FSCommand()   поддерживается, можно использовать как и раньше.  Перенесено в  flash.system.package. Известные ограничения -  External Interface  недоступен в случае, если  flash- объект расположен в теге  <form> .  Проблема решена на уровне  JavaScript. Steve Kamerman  создал патч  SWFFormFIX ,  который внесен в библиотеку  SWFObject . - External Interface  недоступен в случае, если  flash- объект расположенный в теге  <object>   в  id  содержит символ определенный в  JavaScript  как оператор: +, *, /, \, ., и т.д.
Как всё это работает?
Рабочий пример
Принципиальная схема решения
Модификация  Selenium Core Внесение изменений в selenium-api.js Пример: Selenium.prototype.doFlash PressOk  =  function ( locator, window_id ) {  /** *  Press OK button in User Dialog . * * @param locator the locator of the flash object * @param  window_id   User Dialog ID  */  var flashObj = this.page().findElement( locator ) ;  flashObj. ui_press_ok ( window_id );  }
Сборка  Selenium Сборка  Selenium Core  -  mvn -Dnotest=1 -Dmaven.test.skip=true clean install Сборка  Selenium RC + xslt- генерация  Perl client  -  mvn -Dnotest=1 -Dmaven.test.skip=true -Pperl install Установка  Perl Client  – nmake install Примечание: Для сборки проекта необходимы  Ant, Maven, javac, nmake (make) .
Пример автоматического теста use WWW::Selenium;   my $sel = WWW::Selenium->new( host => &quot;localhost&quot;,    port => 4444,    browser => &quot;*iexplore&quot;,    browser_url => &quot;http://localhost&quot;,   );   my $flashobj = &quot;sample&quot;;   my $window_id = 1;   $sel->start;   $sel->open(&quot;http://localhost/flash/testJS.html&quot;);   $sel-> flash_press_ok ($flashobj, $window_id);     $sel->stop;
Проблемы Необходимо разрабатывать дополнительный  Action Script  код -  Это фактически единственный серьезный минус. Решение: Использовать предложенную схему генерации  callback’ ов, но в данном случае требуется более высокая квалификация разработчика тестов. Сложности интеграции с уже используемыми  home-made  решениями.
Варианты использования Забудем про тестирование Где можно эффективно использовать такие возможности? -  HTML- элементы управления содержимым  flash- объектов. - Контекстный поиск . - Интерактивные  flash- элементы, реагирующие на действия пользователя.
Автоматизация тестирования сложных  Flash- интерфейсов     Комлев Александр,  Rambler,  отдел  QA   Вопросы?

More Related Content

PPT
Решения для автоматизации тестирования Web-приложений на базе Selenium
PPTX
Тестируем legacy c++
PPTX
Automation testing desktop applications
ODP
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
PDF
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
PDF
Что такое проект по автоматизации тестирования ПО?
PPTX
(Seleniumcamp) Selenium RC for QA Engineer
PDF
Python и Django – платформа для фрилансера
Решения для автоматизации тестирования Web-приложений на базе Selenium
Тестируем legacy c++
Automation testing desktop applications
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Что такое проект по автоматизации тестирования ПО?
(Seleniumcamp) Selenium RC for QA Engineer
Python и Django – платформа для фрилансера

What's hot (19)

PPTX
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
PPTX
Один за всех, или как помочь тестированию многих компонентов одной системы
PPT
Maven как средство сборки проекта
PPTX
TestLink
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
PPTX
Расширяемая платформа для создания и управления автоматизированными тестами н...
PPT
Let's Talk About Junit 5
PPTX
Как играть без игрока
PPTX
Автоматизация тестирования многопоточности
PPTX
Полный цикл разработки на Python + Django
PPTX
Maven 3 : уличная магия
PPT
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
PPTX
Практика тестирования web сервисов
PPTX
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
PPT
Нагрузочное тестирование
ODP
The fast and the continuous
PPTX
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
PPTX
Типичные ошибки начинающих писать тесты на WebDriver
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Один за всех, или как помочь тестированию многих компонентов одной системы
Maven как средство сборки проекта
TestLink
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Расширяемая платформа для создания и управления автоматизированными тестами н...
Let's Talk About Junit 5
Как играть без игрока
Автоматизация тестирования многопоточности
Полный цикл разработки на Python + Django
Maven 3 : уличная магия
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Практика тестирования web сервисов
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Cистемы автоматической сборки проектов (Полина Фоминых)
Нагрузочное тестирование
The fast and the continuous
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Типичные ошибки начинающих писать тесты на WebDriver
Ad

Similar to Client Side Autotesting Flash (20)

PPT
Catalyst – MVC framework на Perl (RIT 2008)
PDF
Как построить свой фреймворк для автотестов?
PDF
Frontend: Путешествие в мир модульных загрузчиков
PPT
Open Source Testing Framework: real project example and best practices
PPT
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
PDF
Vladimir Trandafilov - When you need your system of cross browser testing
PPT
Web programming modern tendencies
PPTX
Слои тестового фрамеворка. Что? Где? Когда?
PPTX
What's new in Visual Studio 2012
PPT
Использование Symfony
PPT
Qt tool evaluation
PDF
Phalcon. Что нового?
ODP
Selenium на практике и подводные камни
PPT
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
PDF
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
PDF
Desktop app based on node js and html5
KEY
Testing RIA with Selenium
PPT
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
PPTX
Silverlight 4, есть ли жизнь на десктопе?
PDF
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
Catalyst – MVC framework на Perl (RIT 2008)
Как построить свой фреймворк для автотестов?
Frontend: Путешествие в мир модульных загрузчиков
Open Source Testing Framework: real project example and best practices
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Vladimir Trandafilov - When you need your system of cross browser testing
Web programming modern tendencies
Слои тестового фрамеворка. Что? Где? Когда?
What's new in Visual Studio 2012
Использование Symfony
Qt tool evaluation
Phalcon. Что нового?
Selenium на практике и подводные камни
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Desktop app based on node js and html5
Testing RIA with Selenium
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Silverlight 4, есть ли жизнь на десктопе?
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
Ad

Client Side Autotesting Flash

  • 1. Автоматизация тестирования сложных Flash- интерфейсов Комлев Александр, Rambler, отдел QA
  • 2. Формулировка исходной задачи Что нужно тестировать? Сложные клиентские flash- приложения – многопользовательские ( realtime ) игры, записывающие аудио/видео проигрыватели. Зачем автоматизировать? Чрезвычайно неэффективное использование человеческих ресурсов при ручном тестировании, либо отсутствие гарантий качества продукта. Что нам в итоге нужно? Простое, быстрое, хорошо интегрированное решение. Тут ничего нового и оригинального. Ключевой момент: поддержка и написание тестов не должны требовать привлечения высококвалифицированных кадров.
  • 3. Как можно тестировать? Топологический принцип Подготовка сценариев на основе взаимного расположения элементов интерфейса относительно друг друга. Ненадежный и абсолютно не универсальный способ. Эффективность трудозатрат по созданию, поддержке и отладке автотестов сравнима с исходной. Системный принцип Внедрение существующих мощных, тяжеловесных сред автоматического тестирования, использующих системные средства для доступа к объекту тестирования. Очевидных проблем нет, надо разбираться что к чему.
  • 4. Обзор существующих решений Признанные «крутые» решения Test Complete by AutomatedQA MacromediaFlashPlayerActiveX window class, написанный с использованием Microsoft Active Accessibility (MSAA Open Applications plug-in) Достоинства Универсальная, мощная, прекрасно поддерживаемая система. Вместе с Flash поддерживается и Flex. Недостатки Поддержка только операционных систем линейки Windows. Поддержка одного типа браузеров – Internet Explorer. Платное и весьма недешевое решение.
  • 5. Обзор существующих решений Quick Test Professional by Mercury Mercury и Macromedia еще в 2005 году договорились о поддержке Flex в QTP. Кажется, решение найдено? Достоинства Универсальная, мощная, прекрасно поддерживаемая система. Удобная работа с мощным mx.automation.* package из Flex Framework . Недостатки Поддержка только операционных систем линейки Windows. Поддержка одного типа браузеров – Internet Explorer. Платное и весьма недешевое решение. Поддержка Flex , а не Flash .
  • 6. Обзор существующих решений «Гиганты» не поддерживающие Flash Borland SilkTest Способен работать с Flash только как с целым нераздельным объектом. IBM Rational Robot Просто не поддерживает Flash , при этом полностью поддерживает технологию Java Applets :)
  • 7. Обзор существующих решений Selen iu m Бесплатное и мощное средство для автоматического тестирования. Достоинства Универсальная, мощная, прекрасно поддерживаемая система. Полная кроссплатформенность и кроссбраузерность. Open Source. Поддержана работа с Flash с использованием Macromedia Flash JavaScript G ateway . Недостатки Нестабильность работы отдельных компонентов. Поддержка Macromedia Flash JavaScript G ateway ограничена.
  • 8. Обзор существующих решений Компоненты, библиотеки AFLAX Asynchronous Flash and XML, автор (Paul Colton) позиционирует проект как «замену не поддерживаемому Macromedia Flash JavaScript G ateway». Плохое решение с «неработающим» подходом. Flash / JavaScript Integration Kit Идея заключается в использовании FlashProxy для коммуникации с целевым объектом с использованием LocalConnection. Неплохое решение с интересным, но «неправильным» подходом.
  • 9. Критерии поиски «правильного» решения Кроссплатформенность Кроссбраузерность Open Source, либо Open Source + Home made Ключевой момент: Требования относятся как к способу взаимодействия с Flash- объектами, так и платформе для запуска автоматических тестов.
  • 10. Macromedia Flash JavaScript gateway … или « Scripting with Flash » Поддержка платформ и браузеров Netscape Navigator 3.0 и выше (с поддержкой LiveConnect и Java; Windows 95/98/NT/2000 или MacOS) . Internet Explorer 3.0 и выше (с поддержкой ActiveX; только Windows 95/98/NT/2000). Требования к OBJECT и EMBED Тег <OBJECT> и <EMBED> должны иметь свойство ID/NAME соответственно. Доступные flash- методы GetVariable() & SetVariable(), LoadMovie(), GotoFrame() и т.д. FSCommand ( command, args ) - наиболее востребованный и интересный метод (тип данных – только String , ограничение на количество передаваемых аргументов).
  • 11. External Interface Class Поддержка платформ и браузеров - Internet Explorer 5.0 и выше (без ограничения по платформам). - Любые контейнеры (например, desktop- приложение), использующие экземпляр Flash Player ActiveX control . - Любой браузер с поддержкой NPRuntime interface . Firefox 1.0 и выше Mozilla 1.7.5 и выше Netscape 8.0 и выше Safari 1.3 и выше Смело добавляем сюда – Opera 8 и выше (NPA PI поддерживает с 2004 года).
  • 12. External Interface Class Качественно новые возможности - Нет ограничения по количеству передаваемых аргументов и длине имен аргументов. - Поддержка дополнительных типов данных аргументов ( Boolean, Number ) . - Получение результатов вызова . FSCommand() поддерживается, можно использовать как и раньше. Перенесено в flash.system.package. Известные ограничения - External Interface недоступен в случае, если flash- объект расположен в теге <form> . Проблема решена на уровне JavaScript. Steve Kamerman создал патч SWFFormFIX , который внесен в библиотеку SWFObject . - External Interface недоступен в случае, если flash- объект расположенный в теге <object> в id содержит символ определенный в JavaScript как оператор: +, *, /, \, ., и т.д.
  • 13. Как всё это работает?
  • 16. Модификация Selenium Core Внесение изменений в selenium-api.js Пример: Selenium.prototype.doFlash PressOk = function ( locator, window_id ) { /** * Press OK button in User Dialog . * * @param locator the locator of the flash object * @param window_id User Dialog ID */ var flashObj = this.page().findElement( locator ) ; flashObj. ui_press_ok ( window_id ); }
  • 17. Сборка Selenium Сборка Selenium Core - mvn -Dnotest=1 -Dmaven.test.skip=true clean install Сборка Selenium RC + xslt- генерация Perl client - mvn -Dnotest=1 -Dmaven.test.skip=true -Pperl install Установка Perl Client – nmake install Примечание: Для сборки проекта необходимы Ant, Maven, javac, nmake (make) .
  • 18. Пример автоматического теста use WWW::Selenium; my $sel = WWW::Selenium->new( host => &quot;localhost&quot;, port => 4444, browser => &quot;*iexplore&quot;, browser_url => &quot;http://localhost&quot;, ); my $flashobj = &quot;sample&quot;; my $window_id = 1; $sel->start; $sel->open(&quot;http://localhost/flash/testJS.html&quot;); $sel-> flash_press_ok ($flashobj, $window_id); $sel->stop;
  • 19. Проблемы Необходимо разрабатывать дополнительный Action Script код - Это фактически единственный серьезный минус. Решение: Использовать предложенную схему генерации callback’ ов, но в данном случае требуется более высокая квалификация разработчика тестов. Сложности интеграции с уже используемыми home-made решениями.
  • 20. Варианты использования Забудем про тестирование Где можно эффективно использовать такие возможности? - HTML- элементы управления содержимым flash- объектов. - Контекстный поиск . - Интерактивные flash- элементы, реагирующие на действия пользователя.
  • 21. Автоматизация тестирования сложных Flash- интерфейсов Комлев Александр, Rambler, отдел QA Вопросы?