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

Open Source Testing Framework: real project example and best practices

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