Реализация тестового фреймворка на основе 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_1Passed TC_2Failed Управление Язык Отчеты Раннер Отчеты Тесты: Действия Проверки Данные Драйвер TC_1 TC_2
Библиотеки TC_1Passed TC_2Failed Управление Язык Подходы Отчеты Раннер Отчеты Тесты: Действия Проверки Данные Драйвер TC_1 TC_2
«Боевой робот» в open-source
Гибкость и расширяемость
Риски open-source средств: бесплатный сыр бывает только в мышеловке…
Построение фреймворков в open-source Особенности
Необходимо понимать «анатомию» тестовых средств и фреймворков «Заботимся о деталях сами»: самостоятельная разработка многих компонентов и интерфейсов фреймворка Построение фреймворков в open-source Особенности Open-source средства дают свободу и гибкость, позволяют создавать легко расширяемые фреймворки
Содержание Тестовый фреймворк – как много в этом слове... Постановка задачи Архитектура и решение входных условий Полезные решения и практики Рекомендации
… … Общие требования к автоматизации QA Staging Production Сложное web-приложение Различные приложения, функционалы, локали (40+) Разные сервера
R10.1 R10 R11 R10.2 Тестовый набор 1 Тестовый набор 2 Время 1 ~ Время 2 Тестовый набор 2 > Тестовый набор 1 Локали 2 > Локали 1 Общие требования к автоматизации
Распределенная команда необходим общий подход и централизованное управление тестированием
Содержание Тестовый фреймворк – как много в этом слове... Постановка задачи Архитектура и решение входных условий Полезные решения и практики Рекомендации
Распределенная архитектура – это реально
Сервер Архитектура фреймворка на основе 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 Клиент 1 Test 1 + Dataset 1 Клиент 2 Test 1 + Dataset 2 Клиент 2 Test 1 + Dataset 2 Клиент k Test n + Dataset m Клиент k Test n + Dataset m … Сервер Scenario = (Test i + DataSet j ) Сервер Scenario = (Test i + DataSet j )
Параллельное выполнение тестов Клиент 1 Test 1 + Dataset 1 Клиент 1 Test 1 + Dataset 1 Клиент 2 Test 1 + Dataset 2 Клиент 2 Test 1 + Dataset 2 Клиент k Test n + Dataset m Клиент k Test n + Dataset m … Web-интерфейс Отчет по сценарию Web-интерфейс Отчет по сценарию Сервер Scenario = (Test i + DataSet j ) Сервер 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
Расширение функционала 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 ( Tamas Zombori, Test Automation Engineer, Epam Systems Inc, Hungary Hcom Team Test Automation Engineer Bret Pettichord, Lead developer for Watir and CTO of WatirCraftWatirCraft Author and co-author of many outstanding and wholesome published works and articles (
Контактная информация Ихелис Александр EPAM Systems ул. В. Хоружей, Минск, Беларусь почта: блог: