Your SlideShare is downloading. ×
0
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов Александр Ихелис.  EPAM Systems
Предыстория <ul><ul><ul><li>Архитектура и требования к фреймворкам </li></ul></ul></ul><ul><ul><ul><li>Особенности работы ...
Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Ар...
Тестовый фреймворк –  как много в этом слове... <ul><li>Тестовый фреймворк  – инфраструктура, обеспечивающая   автоматизац...
Выбор и разработка фреймворка <ul><li>Разработка фреймворка  – это разработка программного комплекса: </li></ul><ul><li>Ан...
< Приложение > < Тест кейсы > TC_1 TC_2
< Оболочка > Черный Ящик < Приложение > Управление < Тест кейсы > TC_1 TC_2
< Оболочка > Библиотеки < Приложение > Управление Язык Раннер Отчеты Тесты:     Действия     Проверки Данные < Тест кейсы ...
< Оболочка > Библиотеки < Приложение > Управление Язык Раннер Отчеты Тесты:     Действия     Проверки Данные Драйвер  < Те...
< Оболочка > Библиотеки < Приложение > Управление Язык Отчеты Раннер Отчеты Тесты:     Действия     Проверки Данные Драйве...
< Оболочка > Библиотеки < Приложение > Управление Язык Подходы Отчеты Раннер Отчеты Тесты:     Действия     Проверки Данны...
«Боевой робот» в  open-source
«Боевой робот» в  open-source <ul><ul><li>Гибкость и  </li></ul></ul><ul><ul><li>расширяемость </li></ul></ul>
<ul><ul><li>Риски  o pen-source средств: бесплатный сыр бывает только в мышеловке… </li></ul></ul>
<ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Особенности </li></ul></ul>
<ul><ul><li>Необходимо понимать «анатомию» тестовых средств и фреймворков </li></ul></ul><ul><ul><li>«Заботимся о деталях ...
Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Ар...
www.hotels.co.uk www.hotel.hu www.hotels.ru … www.expedia.co.uk www.expedia.ru … Общие требования к автоматизации QA Stagi...
Время 1  ~  Время 2 Тестовый набор  2   >   Тестовый набор  1 Локали  2   >   Локали  1 Общие требования к автоматизации R...
Общие требования к автоматизации <ul><li>Распределенная команда     необходим общий подход и централизованное управление ...
Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Ар...
Распределенная архитектура – это реально
Сервер Архитектура фреймворка на основе  Watir   БД Код Web- интерфейс Консоль
Сервер Архитектура фреймворка на основе  Watir   БД Код Клиент  K Код Ядро Клиент 1 … Web- интерфейс Консоль
Сервер Архитектура фреймворка на основе  Watir   БД Код Репозиторий  Клиент  K Код Ядро Клиент 1 … Web- интерфейс Консоль
Сервер Архитектура фреймворка на основе  Watir   БД Код Репозиторий  Клиент  K Код Ядро Клиент 1 … Web- интерфейс Консоль ...
Сервер Архитектура фреймворка на основе  Watir   БД Код Репозиторий  Клиент  K Код Ядро Клиент 1 … Web- интерфейс Консоль ...
<ul><li>Серверная часть: </li></ul><ul><li>Версии 1.* :   Apache/PHP + MySQL </li></ul><ul><li>Версии 2.*:  Mongrel/ruby-o...
<ul><li>Собственный драйвер тестов, централизованный и удобный запуск, распределенное выполнение на многочисленных клиента...
Параллельное выполнение тестов … Клиент 1 Test  1  + Dataset  1   Клиент  2 Test  1  + Dataset  2   Клиент  k Test  n  + D...
Параллельное выполнение тестов … Клиент 1 Test  1  + Dataset  1   Клиент  2 Test  1  + Dataset  2   Клиент  k Test  n  + D...
Фреймворк БД Репозиторий: *проекты  *версии Поддержка разных проектов и версий Web- интерфейс
БД приложения  (AUT) Поддержка разных  environments,  локалей, конфигурационных настроек Файлы с данными <ul><li>Локализац...
Sponte:  Запуск тестового набора
Sponte:  Редактирование управляющих параметров и входных данных сценария
 
Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Ар...
<ul><li>Объектно-ориентированная структура и подход в тестировании, включая модель  UI  приложения  </li></ul><ul><li>Созд...
OOP GUI Layer pattern + Business Layer on DSL
OOP GUI Layer pattern + Business Layer on DSL
OOP GUI Layer pattern + Business Layer on DSL
<ul><li>Расширение функционала  Watir  и драйвера браузера </li></ul><ul><li>Гибкая синхронизация с приложением (сложные с...
Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Ар...
<ul><ul><li>Используй стандартизированные интерфейсы и протоколы </li></ul></ul><ul><ul><li>Реализуй только то, что тебе н...
<ul><ul><li>Относись к фреймворку и тестовому коду как к программному продукту </li></ul></ul><ul><ul><ul><li>Хорошая и пр...
<ul><li>Появляется необходимость в новом наборе навыков для инженера по автоматизации ( Software Design Engineer in Test )...
Благодарность <ul><li>Bernard Miles , QA Manager and Architect, Expedia Limited, UK </li></ul><ul><li>Stanislaw Wozniak , ...
Контактная информация <ul><ul><li><epam> </li></ul></ul><ul><ul><li>Ихелис Александр </li></ul></ul><ul><ul><li>EPAM Syste...
Upcoming SlideShare
Loading in...5
×

Open Source Testing Framework: real project example and best practices

1,440

Published on

Summary: Presentation on open source testing frameworks (improved version, more focus on real project example) at Software Engineering Forum 2009 (SEF-1) conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,440
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Transcript of "Open Source Testing Framework: real project example and best practices"

    1. 1. Реализация тестового фреймворка на основе OPEN-SOURCE инструментов Александр Ихелис. EPAM Systems
    2. 2. Предыстория <ul><ul><ul><li>Архитектура и требования к фреймворкам </li></ul></ul></ul><ul><ul><ul><li>Особенности работы в open-source </li></ul></ul></ul><ul><ul><ul><li>Watir – драйвер браузера </li></ul></ul></ul><ul><ul><ul><li>Практическая реализация фреймворка </li></ul></ul></ul><ul><ul><ul><li>Круглый стол: Использование open-source инструментов тестирования </li></ul></ul></ul>
    3. 3. Содержание <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>Основные цели: </li></ul><ul><ul><ul><li>Единая концепция создания и управления авто-тестами </li></ul></ul></ul><ul><ul><ul><li>Упрощенное написание тест кейсов </li></ul></ul></ul><ul><ul><ul><li>Целостная система драйверов, модулей, библиотек, источников данных, результатов </li></ul></ul></ul><ul><ul><ul><li>Максимальное повторное использование </li></ul></ul></ul><ul><ul><ul><li>Минимальные усилия на поддержку тестов </li></ul></ul></ul>
    5. 5. Выбор и разработка фреймворка <ul><li>Разработка фреймворка – это разработка программного комплекса: </li></ul><ul><li>Анализ требований к автоматизации и к средству тестирования </li></ul><ul><ul><li>Анализ приложения – кандидата для автоматизации </li></ul></ul><ul><ul><li>Качественные характеристики фреймворка </li></ul></ul><ul><ul><li>Набор возможностей фреймворка </li></ul></ul><ul><li>Выбор средств реализации </li></ul><ul><li>Дизайн архитектуры, разработка, отладка, документация </li></ul><ul><li>Поддержка и развитие </li></ul>
    6. 6. < Приложение > < Тест кейсы > TC_1 TC_2
    7. 7. < Оболочка > Черный Ящик < Приложение > Управление < Тест кейсы > TC_1 TC_2
    8. 8. < Оболочка > Библиотеки < Приложение > Управление Язык Раннер Отчеты Тесты: Действия Проверки Данные < Тест кейсы > TC_1 TC_2
    9. 9. < Оболочка > Библиотеки < Приложение > Управление Язык Раннер Отчеты Тесты: Действия Проверки Данные Драйвер < Тест кейсы > TC_1 TC_2
    10. 10. < Оболочка > Библиотеки < Приложение > Управление Язык Отчеты Раннер Отчеты Тесты: Действия Проверки Данные Драйвер < Тест кейсы > TC_1 Passed TC_2 Failed TC_1 TC_2
    11. 11. < Оболочка > Библиотеки < Приложение > Управление Язык Подходы Отчеты Раннер Отчеты Тесты: Действия Проверки Данные Драйвер < Тест кейсы > TC_1 Passed TC_2 Failed TC_1 TC_2
    12. 12. «Боевой робот» в open-source
    13. 13. «Боевой робот» в open-source <ul><ul><li>Гибкость и </li></ul></ul><ul><ul><li>расширяемость </li></ul></ul>
    14. 14. <ul><ul><li>Риски o pen-source средств: бесплатный сыр бывает только в мышеловке… </li></ul></ul>
    15. 15. <ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Особенности </li></ul></ul>
    16. 16. <ul><ul><li>Необходимо понимать «анатомию» тестовых средств и фреймворков </li></ul></ul><ul><ul><li>«Заботимся о деталях сами»: самостоятельная разработка многих компонентов и интерфейсов фреймворка </li></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Особенности </li></ul></ul><ul><ul><li>Open-source средства дают свободу и гибкость, позволяют создавать легко расширяемые фреймворки </li></ul></ul>
    17. 17. Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Архитектура и решение входных условий </li></ul><ul><li>Полезные решения и практики </li></ul><ul><li>Рекомендации </li></ul>
    18. 18. www.hotels.co.uk www.hotel.hu www.hotels.ru … www.expedia.co.uk www.expedia.ru … Общие требования к автоматизации QA Staging Production <ul><li>Сложное web -приложение </li></ul><ul><li>Различные приложения, функционалы, локали (40+) </li></ul><ul><li>Разные сервера </li></ul>
    19. 19. Время 1 ~ Время 2 Тестовый набор 2 > Тестовый набор 1 Локали 2 > Локали 1 Общие требования к автоматизации R10.1 R10.2
    20. 20. Общие требования к автоматизации <ul><li>Распределенная команда  необходим общий подход и централизованное управление тестированием </li></ul>
    21. 21. Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Архитектура и решение входных условий </li></ul><ul><li>Полезные решения и практики </li></ul><ul><li>Рекомендации </li></ul>
    22. 22. Распределенная архитектура – это реально
    23. 23. Сервер Архитектура фреймворка на основе Watir БД Код Web- интерфейс Консоль
    24. 24. Сервер Архитектура фреймворка на основе Watir БД Код Клиент K Код Ядро Клиент 1 … Web- интерфейс Консоль
    25. 25. Сервер Архитектура фреймворка на основе Watir БД Код Репозиторий Клиент K Код Ядро Клиент 1 … Web- интерфейс Консоль
    26. 26. Сервер Архитектура фреймворка на основе Watir БД Код Репозиторий Клиент K Код Ядро Клиент 1 … Web- интерфейс Консоль Watir Browser
    27. 27. Сервер Архитектура фреймворка на основе Watir БД Код Репозиторий Клиент K Код Ядро Клиент 1 … Web- интерфейс Консоль Watir Browser Клиент: Режим отладки
    28. 28. <ul><li>Серверная часть: </li></ul><ul><li>Версии 1.* : Apache/PHP + MySQL </li></ul><ul><li>Версии 2.*: Mongrel/ruby-on-rails + MySQL </li></ul><ul><li>Конфигурация в Production окружении (требования безопасности): MS IIS/ruby-on-rails + MS SQL Server </li></ul><ul><li>Клиентская часть (масштабируемость путем добавления клиентов) : </li></ul><ul><li>Ruby, Watir, Sponte gem (ядро фреймворка), рабочее окружение </li></ul><ul><li>C истемы управления версиями: </li></ul><ul><li>CVS, MS Perforce </li></ul>Архитектура фреймворка на основе Watir
    29. 29. <ul><li>Собственный драйвер тестов, централизованный и удобный запуск, распределенное выполнение на многочисленных клиентах с различной конфигурацией, свободная масштабируемость </li></ul><ul><ul><li>Параллельное выполнение </li></ul></ul><ul><ul><li>Масштабируемость </li></ul></ul><ul><ul><li>Работа в режиме отладки ( debug) </li></ul></ul><ul><li>Гибкая расширяемость для новых тестовых окружений (серверов), локалей </li></ul><ul><li>Поддержка нескольких проектов и версий </li></ul><ul><li>Возможность создания data-driven сценариев из нескольких тестовых компонентов </li></ul><ul><ul><li>Scenario = (Test1 + Dataset1)+…+(Test i + Dataset j) </li></ul></ul><ul><li>Удобный интерфейс, мощный механизм отчетов </li></ul>Основные возможности фреймворка
    30. 30. Параллельное выполнение тестов … Клиент 1 Test 1 + Dataset 1 Клиент 2 Test 1 + Dataset 2 Клиент k Test n + Dataset m Сервер Scenario = ∑ (Test i + DataSet j )
    31. 31. Параллельное выполнение тестов … Клиент 1 Test 1 + Dataset 1 Клиент 2 Test 1 + Dataset 2 Клиент k Test n + Dataset m Web- интерфейс Отчет по сценарию Сервер Scenario = ∑ (Test i + DataSet j )
    32. 32. Фреймворк БД Репозиторий: *проекты *версии Поддержка разных проектов и версий Web- интерфейс
    33. 33. БД приложения (AUT) Поддержка разных environments, локалей, конфигурационных настроек Файлы с данными <ul><li>Локализационные данные </li></ul><ul><li>(форматы и тп) </li></ul><ul><li>Настройки конфигурации </li></ul>Фреймворк БД <ul><li>Информация о поддерживаемых environments </li></ul><ul><li>локалях </li></ul><ul><li>URLs </li></ul><ul><li>Servers’ hosts </li></ul>
    34. 34. Sponte: Запуск тестового набора
    35. 35. Sponte: Редактирование управляющих параметров и входных данных сценария
    36. 37. Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Архитектура и решение входных условий </li></ul><ul><li>Полезные решения и практики </li></ul><ul><li>Рекомендации </li></ul>
    37. 38. <ul><li>Объектно-ориентированная структура и подход в тестировании, включая модель UI приложения </li></ul><ul><li>Создание бизнес слоя  тесты на DSL (Domain Specific Language) </li></ul><ul><li>Реализация различных интерфейсов для работы с внешними источниками данных (XLS, XML, Excel XML, MySQL, MS SQL Server) , поддержка Unicode и конфигурационных, локализационных, тестовых данных для разных локалей </li></ul><ul><li>Design Patterns + Coding Convention  гибкий UI серверной части без необходимости описывать статически каждую UI страницу для управления разными тестами и тп </li></ul>Полезные решения и практики
    38. 39. OOP GUI Layer pattern + Business Layer on DSL
    39. 40. OOP GUI Layer pattern + Business Layer on DSL
    40. 41. OOP GUI Layer pattern + Business Layer on DSL
    41. 42. <ul><li>Расширение функционала Watir и драйвера браузера </li></ul><ul><li>Гибкая синхронизация с приложением (сложные страницы, Ajax вызовы, тестирование с включенной и отключенной поддержкой JavaScript в браузере) </li></ul><ul><li>Тестирование через HTTP протокол: рекурсивные тесты на нахождение broken-links </li></ul><ul><li>Работа с настройками браузера и соединения ( cookies, cache, включение и отключение поддержки JavaScript , установка HTTP headers ) </li></ul>Полезные решения и практики
    42. 43. Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Постановка задачи </li></ul><ul><li>Архитектура и решение входных условий </li></ul><ul><li>Полезные решения и практики </li></ul><ul><li>Рекомендации </li></ul>
    43. 44. <ul><ul><li>Используй стандартизированные интерфейсы и протоколы </li></ul></ul><ul><ul><li>Реализуй только то, что тебе необходимо. Поддерживай только необходимые тебе интерфейсы приложения </li></ul></ul><ul><ul><ul><li>Твоя цель – тестирование, приносящее пользу проекту ВОВРЕМЯ </li></ul></ul></ul><ul><ul><ul><li>“ It does not have to be perfect to be useful” </li></ul></ul></ul><ul><ul><li>Будь в теме! </li></ul></ul><ul><ul><ul><li>Популярные средства быстро развиваются </li></ul></ul></ul><ul><ul><ul><li>Часто поддерживаются только последние версии </li></ul></ul></ul><ul><ul><li>Работай с разработчиками над тестируемостью приложения и альтернативными интерфейсами (если необходимо) </li></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Рекомендации </li></ul></ul>
    44. 45. <ul><ul><li>Относись к фреймворку и тестовому коду как к программному продукту </li></ul></ul><ul><ul><ul><li>Хорошая и простая архитектура </li></ul></ul></ul><ul><ul><ul><li>Сначала простой код  тестирование  модульность </li></ul></ul></ul><ul><ul><ul><li>Регулярные ревью кода, рефакторинг, DRY </li></ul></ul></ul><ul><ul><ul><li>Стандарты кодирования </li></ul></ul></ul><ul><ul><ul><li>Комментарии </li></ul></ul></ul><ul><ul><ul><li>Контроль версий </li></ul></ul></ul><ul><ul><ul><li>Возможно, поддержка разных версий ( branching ) для разных версий ( releases) тестируемой системы </li></ul></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Рекомендации </li></ul></ul>
    45. 46. <ul><li>Появляется необходимость в новом наборе навыков для инженера по автоматизации ( Software Design Engineer in Test ) </li></ul><ul><ul><ul><li>Навыки разработки и кодирования </li></ul></ul></ul><ul><ul><ul><li>Навыки архитектора </li></ul></ul></ul><ul><ul><ul><li>Навыки тестирования </li></ul></ul></ul><ul><ul><li>Рекомендуемое разделение обязанностей: </li></ul></ul><ul><ul><ul><li>Разработчик ядра фреймворка и библиотек </li></ul></ul></ul><ul><ul><ul><li>Разработчик автоматических тестов </li></ul></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Прогнозы </li></ul></ul>
    46. 47. Благодарность <ul><li>Bernard Miles , QA Manager and Architect, Expedia Limited, UK </li></ul><ul><li>Stanislaw Wozniak , Test Automation Engineer, Expedia Limited, UK </li></ul><ul><ul><ul><li>Sponte framework Lead Developer ( http://github.com/swozniak/sponte/tree/master ) </li></ul></ul></ul><ul><li>Tamas Zombori , Test Automation Engineer, Epam Systems Inc, Hungary </li></ul><ul><ul><ul><li>Hcom Team Test Automation Engineer </li></ul></ul></ul><ul><li>Bret Pettichord , L ead developer for Watir and CTO of WatirCraft </li></ul><ul><ul><ul><li>Author and co-author of many outstanding and wholesome published works and articles ( www.pettichord.com ) </li></ul></ul></ul>
    47. 48. Контактная информация <ul><ul><li><epam> </li></ul></ul><ul><ul><li>Ихелис Александр </li></ul></ul><ul><ul><li>EPAM Systems </li></ul></ul><ul><ul><li>ул. В. Хоружей, 29 </li></ul></ul><ul><ul><li>220123 Минск, Беларусь </li></ul></ul><ul><ul><li>почта: [email_address] </li></ul></ul><ul><ul><li>блог: http://alexikhelis.blogspot.com </li></ul></ul><ul><ul><li></epam> </li></ul></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×