open source testing framework: real project example and best practices

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

Upload: aliaksandr-ikhelis

Post on 26-Jan-2015

1.374 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Open Source Testing Framework: real project example and best practices

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

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

Page 2: Open Source Testing Framework: real project example and best practices

Предыстория

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

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

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

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

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

Page 3: Open Source Testing Framework: real project example and best practices

Содержание

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

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

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

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

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

Page 4: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

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

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

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

Page 5: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

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

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

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

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

Page 6: Open Source Testing Framework: real project example and best practices

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

<Тест кейсы>

TC_1

TC_2

Page 7: Open Source Testing Framework: real project example and best practices

<Оболочка>

Черный

Ящик

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

Управление

<Тест кейсы>

TC_1

TC_2

Page 8: Open Source Testing Framework: real project example and best practices

<Оболочка>

Библиотеки

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

Управление

Язык

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

<Тест кейсы>

TC_1

TC_2

Page 9: Open Source Testing Framework: real project example and best practices

<Оболочка>

Библиотеки

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

Управление

Язык

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

Драйвер

<Тест кейсы>

TC_1

TC_2

Page 10: Open Source Testing Framework: real project example and best practices

<Оболочка>

Библиотеки

TC_1 Passed

TC_2 Failed

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

Управление

Язык

Отчеты

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

Драйвер

<Тест кейсы>

TC_1

TC_2

Page 11: Open Source Testing Framework: real project example and best practices

<Оболочка>

Библиотеки

TC_1 Passed

TC_2 Failed

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

Управление

Язык

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

Раннер

Отчеты

Тесты:

Действия

Проверки

Данные

Драйвер

<Тест кейсы>

TC_1

TC_2

Page 12: Open Source Testing Framework: real project example and best practices

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

Page 13: Open Source Testing Framework: real project example and best practices

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

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

Page 14: Open Source Testing Framework: real project example and best practices

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

Page 15: Open Source Testing Framework: real project example and best practices

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

Page 16: Open Source Testing Framework: real project example and best practices

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

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

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

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

Page 17: Open Source Testing Framework: real project example and best practices

Содержание

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

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

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

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

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

Page 18: Open Source Testing Framework: real project example and best practices

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 Testing Framework: real project example and best practices

R10.1 R10.2

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

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

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

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

Page 20: Open Source Testing Framework: real project example and best practices

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

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

Page 21: Open Source Testing Framework: real project example and best practices

Содержание

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

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

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

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

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

Page 22: Open Source Testing Framework: real project example and best practices

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

Page 23: Open Source Testing Framework: real project example and best practices

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

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

БДБДКодКод

Web-интерфейс

Web-интерфейс

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

Page 24: Open Source Testing Framework: real project example and best practices

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

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

БДБДКодКод

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

Ядро Ядро

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

Web-интерфейс

Web-интерфейс

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

Page 25: Open Source Testing Framework: real project example and best practices

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

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

БДБДКодКод

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

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

Ядро Ядро

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

Web-интерфейс

Web-интерфейс

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

Page 26: Open Source Testing Framework: real project example and best practices

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

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

БДБДКодКод

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

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

Ядро Ядро

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

Web-интерфейс

Web-интерфейс

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

WatirWatir

BrowserBrowser

Page 27: Open Source Testing Framework: real project example and best practices

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

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

БДБДКодКод

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

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

Ядро Ядро

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

Web-интерфейс

Web-интерфейс

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

WatirWatir

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

Page 28: Open Source Testing Framework: real project example and best practices

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

• Версии 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 Testing Framework: real project example and best practices

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

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

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

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

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

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

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

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

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

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

Page 30: Open Source Testing Framework: real project example and best practices

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

Клиент 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 Testing Framework: real project example and best practices

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

Клиент 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 Testing Framework: real project example and best practices

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

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

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

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

Web-интерфейс

Web-интерфейс

Page 33: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

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

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

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

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

• локалях

• URLs

• Servers’ hosts

Page 34: Open Source Testing Framework: real project example and best practices

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

Page 35: Open Source Testing Framework: real project example and best practices

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

Page 36: Open Source Testing Framework: real project example and best practices
Page 37: Open Source Testing Framework: real project example and best practices

Содержание

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

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

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

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

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

Page 38: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

Page 39: Open Source Testing Framework: real project example and best practices

OOP GUI Layer pattern + Business Layer on DSL

Page 40: Open Source Testing Framework: real project example and best practices

OOP GUI Layer pattern + Business Layer on DSL

Page 41: Open Source Testing Framework: real project example and best practices

OOP GUI Layer pattern + Business Layer on DSL

Page 42: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

Page 43: Open Source Testing Framework: real project example and best practices

Содержание

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

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

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

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

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

Page 44: Open Source Testing Framework: real project example and best practices

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

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

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

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

• Будь в теме!

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

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

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

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

Page 45: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

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

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

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

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

Page 46: Open Source Testing Framework: real project example and best practices

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

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

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

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

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

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

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

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

Page 47: Open Source Testing Framework: real project example and best practices

Благодарность

• 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 Testing Framework: real project example and best practices

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

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

EPAM Systems

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

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

почта: [email protected]

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

</epam>