Реализация тестового фреймворка на основе OPEN-SOURCE...

48
Реализация тестового фреймворка на основе OPEN- SOURCE инструментов Александр Ихелис. EPAM Systems

description

Александр Ихелис, Epam Systems, Минск, Беларусь

Transcript of Реализация тестового фреймворка на основе OPEN-SOURCE...

Page 1: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Реализация тестового фреймворка на основе OPEN-SOURCE

инструментовАлександр Ихелис. EPAM Systems

Page 2: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Предыстория

• Архитектура и требования к фреймворкам

• Особенности работы в open-source

• Watir – драйвер браузера

• Практическая реализация фреймворка

• Круглый стол: Использование open-source инструментов тестирования

Page 3: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Содержание

Тестовый фреймворк – как много в этом слове...

Постановка задачи

Архитектура и решение входных условий

Полезные решения и практики

Рекомендации

Page 4: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Тестовый фреймворк – как много в этом слове...

Тестовый фреймворк – инфраструктура, обеспечивающая автоматизацию тестирования

Основные цели:

• Единая концепция создания и управления авто-тестами

• Упрощенное написание тест кейсов

• Целостная система драйверов, модулей, библиотек, источников данных, результатов

• Максимальное повторное использование

• Минимальные усилия на поддержку тестов

Page 5: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Выбор и разработка фреймворка

Разработка фреймворка – это разработка программного комплекса:

• Анализ требований к автоматизации и к средству тестирования

• Анализ приложения – кандидата для автоматизации

• Качественные характеристики фреймворка

• Набор возможностей фреймворка

• Выбор средств реализации

• Дизайн архитектуры, разработка, отладка, документация

• Поддержка и развитие

Page 6: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

<Приложение>

<Тест кейсы>

TC_1

TC_2

Page 7: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

<Оболочка>

Черный

Ящик

<Приложение>

Управление

<Тест кейсы>

TC_1

TC_2

Page 8: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

<Оболочка>

Библиотеки

<Приложение>

Управление

Язык

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

<Тест кейсы>

TC_1

TC_2

Page 9: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

<Оболочка>

Библиотеки

<Приложение>

Управление

Язык

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

Драйвер

<Тест кейсы>

TC_1

TC_2

Page 10: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

<Оболочка>

Библиотеки

TC_1 Passed

TC_2 Failed

<Приложение>

Управление

Язык

Отчеты

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

Драйвер

<Тест кейсы>

TC_1

TC_2

Page 11: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

<Оболочка>

Библиотеки

TC_1 Passed

TC_2 Failed

<Приложение>

Управление

Язык

ПодходыОтчеты

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

Драйвер

<Тест кейсы>

TC_1

TC_2

Page 12: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

«Боевой робот» в open-source

Page 13: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

«Боевой робот» в open-source

Гибкость и расширяемость

Page 14: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Риски open-source средств: бесплатный сыр бывает только в мышеловке…

Page 15: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Построение фреймворков в open-sourceОсобенности

Page 16: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

• Необходимо понимать «анатомию» тестовых средств и фреймворков

• «Заботимся о деталях сами»: самостоятельная разработка многих компонентов и интерфейсов фреймворка

Построение фреймворков в open-sourceОсобенности

• Open-source средства дают свободу и гибкость, позволяют создавать легко расширяемые фреймворки

Page 17: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Содержание

Тестовый фреймворк – как много в этом слове...

Постановка задачи

Архитектура и решение входных условий

Полезные решения и практики

Рекомендации

Page 18: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

www.hotels.co.uk

www.hotel.hu

www.hotels.ru

www.expedia.co.uk

www.expedia.ru

Общие требования к автоматизации

QA

Staging

Production• Сложное web-приложение

• Различные приложения, функционалы, локали (40+)

• Разные сервера

Page 19: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

R10.1 R10.2

Время 1 ~ Время 2

Тестовый набор 2 > Тестовый набор 1

Локали 2 > Локали 1

Общие требования к автоматизации

Page 20: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Общие требования к автоматизации

• Распределенная команда необходим общий подход и централизованное управление тестированием

Page 21: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Содержание

Тестовый фреймворк – как много в этом слове...

Постановка задачи

Архитектура и решение входных условий

Полезные решения и практики

Рекомендации

Page 22: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Распределенная архитектура – это реально

Page 23: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

СерверСервер

Архитектура фреймворка на основе Watir

БДБДКодКод

Web-интерфейс

Web-интерфейс

КонсольКонсоль

Page 24: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

СерверСервер

Архитектура фреймворка на основе Watir

БДБДКодКод

Клиент KКлиент KКодКод

Ядро Ядро

Клиент 1Клиент 1

Web-интерфейс

Web-интерфейс

КонсольКонсоль

Page 25: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

СерверСервер

Архитектура фреймворка на основе Watir

БДБДКодКод

Репозиторий Репозиторий

Клиент KКлиент KКодКод

Ядро Ядро

Клиент 1Клиент 1

Web-интерфейс

Web-интерфейс

КонсольКонсоль

Page 26: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

СерверСервер

Архитектура фреймворка на основе Watir

БДБДКодКод

Репозиторий Репозиторий

Клиент KКлиент KКодКод

Ядро Ядро

Клиент 1Клиент 1

Web-интерфейс

Web-интерфейс

КонсольКонсоль

WatirWatir

BrowserBrowser

Page 27: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

СерверСервер

Архитектура фреймворка на основе Watir

БДБДКодКод

Репозиторий Репозиторий

Клиент KКлиент KКодКод

Ядро Ядро

Клиент 1Клиент 1

Web-интерфейс

Web-интерфейс

КонсольКонсоль

WatirWatir

BrowserBrowserКлиент:Режим отладкиКлиент:Режим отладки

Page 28: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Серверная часть:

• Версии 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

Page 29: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

• Собственный драйвер тестов, централизованный и удобный запуск, распределенное выполнение на многочисленных клиентах с различной конфигурацией, свободная масштабируемость

• Параллельное выполнение

• Масштабируемость

• Работа в режиме отладки (debug)

• Гибкая расширяемость для новых тестовых окружений (серверов), локалей

• Поддержка нескольких проектов и версий

• Возможность создания data-driven сценариев из нескольких тестовых компонентов

Scenario = (Test1 + Dataset1)+…+(Test i + Dataset j)

• Удобный интерфейс, мощный механизм отчетов

Основные возможности фреймворка

Page 30: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Параллельное выполнение тестов

Клиент 1Test 1 + Dataset 1 Клиент 1Test 1 + Dataset 1

Клиент 2Test 1 + Dataset 2 Клиент 2Test 1 + Dataset 2

Клиент kTest n + Dataset m Клиент kTest n + Dataset m

СерверScenario = ∑ (Test i + DataSet j )

СерверScenario = ∑ (Test i + DataSet j )

Page 31: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Параллельное выполнение тестов

Клиент 1Test 1 + Dataset 1 Клиент 1Test 1 + Dataset 1

Клиент 2Test 1 + Dataset 2 Клиент 2Test 1 + Dataset 2

Клиент kTest n + Dataset m Клиент kTest n + Dataset m

Web-интерфейсОтчет по сценариюWeb-интерфейсОтчет по сценарию

СерверScenario = ∑ (Test i + DataSet j )

СерверScenario = ∑ (Test i + DataSet j )

Page 32: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Фреймворк БДФреймворк БД

Репозиторий:*проекты *версии

Репозиторий:*проекты *версии

Поддержка разных проектов и версий

Web-интерфейс

Web-интерфейс

Page 33: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

БД приложения (AUT)

БД приложения (AUT)

Поддержка разных environments, локалей, конфигурационных настроек

Файлы с данными

• Локализационные данные

(форматы и тп)

• Настройки конфигурации

Фреймворк БДФреймворк БД

• Информация о поддерживаемых environments

• локалях

• URLs

• Servers’ hosts

Page 34: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Sponte: Запуск тестового набора

Page 35: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Sponte: Редактирование управляющих параметров и входных данных сценария

Page 36: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Page 37: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Содержание

Тестовый фреймворк – как много в этом слове...

Постановка задачи

Архитектура и решение входных условий

Полезные решения и практики

Рекомендации

Page 38: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

• Объектно-ориентированная структура и подход в тестировании, включая модель UI приложения

• Создание бизнес слоя тесты на DSL (Domain Specific Language)

• Реализация различных интерфейсов для работы с внешними источниками данных (XLS, XML, Excel XML, MySQL, MS SQL Server), поддержка Unicode и конфигурационных, локализационных, тестовых данных для разных локалей

• Design Patterns + Coding Convention гибкий UI серверной части без необходимости описывать статически каждую UI страницу для управления разными тестами и тп

Полезные решения и практики

Page 39: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

OOP GUI Layer pattern + Business Layer on DSL

Page 40: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

OOP GUI Layer pattern + Business Layer on DSL

Page 41: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

OOP GUI Layer pattern + Business Layer on DSL

Page 42: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

• Расширение функционала Watir и драйвера браузера

• Гибкая синхронизация с приложением (сложные страницы, Ajax вызовы, тестирование с включенной и отключенной поддержкой JavaScript в браузере)

• Тестирование через HTTP протокол: рекурсивные тесты на нахождение broken-links

• Работа с настройками браузера и соединения (cookies, cache, включение и отключение поддержки JavaScript, установка HTTP headers)

Полезные решения и практики

Page 43: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Содержание

Тестовый фреймворк – как много в этом слове...

Постановка задачи

Архитектура и решение входных условий

Полезные решения и практики

Рекомендации

Page 44: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

• Используй стандартизированные интерфейсы и протоколы

• Реализуй только то, что тебе необходимо. Поддерживай только необходимые тебе интерфейсы приложения

• Твоя цель – тестирование, приносящее пользу проекту ВОВРЕМЯ

• “It does not have to be perfect to be useful”

• Будь в теме!

• Популярные средства быстро развиваются

• Часто поддерживаются только последние версии

• Работай с разработчиками над тестируемостью приложения и альтернативными интерфейсами (если необходимо)

Построение фреймворков в open-sourceРекомендации

Page 45: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Относись к фреймворку и тестовому коду как к программному продукту

• Хорошая и простая архитектура

• Сначала простой код тестирование модульность

• Регулярные ревью кода, рефакторинг, DRY

• Стандарты кодирования

• Комментарии

• Контроль версий

• Возможно, поддержка разных версий (branching) для разных версий (releases) тестируемой системы

Построение фреймворков в open-sourceРекомендации

Page 46: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Появляется необходимость в новом наборе навыков для инженера по автоматизации (Software Design Engineer in Test)

• Навыки разработки и кодирования

• Навыки архитектора

• Навыки тестирования

Рекомендуемое разделение обязанностей:

• Разработчик ядра фреймворка и библиотек

• Разработчик автоматических тестов

Построение фреймворков в open-sourceПрогнозы

Page 47: Реализация тестового фреймворка на основе 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, Lead developer for Watir and CTO of WatirCraft

• Author and co-author of many outstanding and wholesome published works and articles (www.pettichord.com)

Page 48: Реализация тестового фреймворка на основе OPEN-SOURCE инструментов

Контактная информация

<epam>Ихелис Александр

EPAM Systems

ул. В. Хоружей, 29

220123 Минск, Беларусь

почта: [email protected]

блог: http://alexikhelis.blogspot.com

</epam>