Автоматизация тестирования сложных  Flash- интерфейсов Комлев Александр,  Rambler,  отдел  QA
Формулировка исходной задачи <ul><li>Что нужно тестировать? </li></ul><ul><li>Сложные клиентские  flash- приложения  –  мн...
Как можно тестировать? <ul><li>Топологический принцип </li></ul><ul><li>Подготовка сценариев на основе взаимного расположе...
Обзор существующих решений <ul><li>Признанные «крутые» решения </li></ul><ul><li>Test Complete  by AutomatedQA </li></ul><...
Обзор существующих решений <ul><li>Quick Test Professional by Mercury </li></ul><ul><li>Mercury  и  Macromedia  еще   в 20...
Обзор существующих решений <ul><li>«Гиганты» не поддерживающие  Flash </li></ul><ul><li>Borland SilkTest </li></ul><ul><li...
Обзор существующих решений <ul><li>Selen iu m </li></ul><ul><li>Бесплатное и мощное средство для автоматического тестирова...
Обзор существующих решений <ul><li>Компоненты, библиотеки </li></ul><ul><li>AFLAX </li></ul><ul><li>Asynchronous Flash and...
Критерии поиски «правильного» решения <ul><li>Кроссплатформенность </li></ul><ul><li>Кроссбраузерность </li></ul><ul><li>O...
Macromedia Flash JavaScript gateway <ul><li>… или « Scripting with Flash » </li></ul><ul><li>Поддержка платформ и браузеро...
External Interface Class <ul><li>Поддержка платформ и браузеров </li></ul><ul><li>-  Internet Explorer 5.0 и выше (без огр...
External Interface Class <ul><li>Качественно новые возможности </li></ul><ul><li>-  Нет ограничения по количеству передава...
Как всё это работает?
Рабочий пример
Принципиальная схема решения
Модификация  Selenium Core <ul><li>Внесение изменений в selenium-api.js </li></ul><ul><li>Пример: </li></ul><ul><li>Seleni...
Сборка  Selenium <ul><li>Сборка  Selenium Core  -  mvn -Dnotest=1 -Dmaven.test.skip=true clean install </li></ul><ul><li>С...
Пример автоматического теста <ul><li>use WWW::Selenium; </li></ul><ul><li>  my $sel = WWW::Selenium->new( host => &quot;lo...
Проблемы <ul><li>Необходимо разрабатывать дополнительный  Action Script  код </li></ul><ul><li>-  Это фактически единствен...
Варианты использования <ul><li>Забудем про тестирование </li></ul><ul><li>Где можно эффективно использовать такие возможно...
Автоматизация тестирования сложных  Flash- интерфейсов     Комлев Александр,  Rambler,  отдел  QA   Вопросы?
Upcoming SlideShare
Loading in …5
×

Client Side Autotesting Flash

4,936 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • >Слайд 18, заголовок = ’Пример автоматического теста’ - в русском языке это называется >’автоматизированный тест’, а не ’автоматический’ ;).

    да неужели? А мужики-то не знают
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
4,936
On SlideShare
0
From Embeds
0
Number of Embeds
1,221
Actions
Shares
0
Downloads
119
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Client Side Autotesting Flash

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

×