Масштабируемость тестового фреймворка

Preview:

DESCRIPTION

Доклад Андрея Иваровского, SQA Days-13, 26-27 апреля 2013, www.sqadays.com

Citation preview

Масштабируемость тестового фреймворка

Андрей Иваровский. runteo.ru

План доклада

Что такое масштабируемость тестового фреймворка?

Как сделать фреймворк масштабируемым?

Определения

Тестовый фреймворк Масштабируемость

Тестовый фреймворк

программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта

(с) Википедия

Тестовый фреймворк

Основная цель:Уменьшение затрат на разработку и поддержку тестов

Тестовый фреймворк

Структура:

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

Способность системы справляться с увеличением рабочей нагрузки (увеличивать свою производительность) при добавлении ресурсов (с) Википедия

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

1. Изменение аппаратного обеспечения2. Изменение тестовой конфигурации3. Изменение функционала приложения

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

Аппаратная Конфигурационная Функциональная

Аппаратная масштабируемость

Уменьшение общего времени прогона тестов при добавлении ресурсов

=

Возможность распараллеливания запусков

Аппаратная масштабируемость

Идеальный вариант:

Аппаратная масштабируемость

Быстрый вариант:

Аппаратная масштабируемость

Распараллеливание на уровне Ant:

<testng classpathref="master-classpath" outputdir="${testnglogs.dir}" haltonfailure="false"suitethreadpoolsize="4">

Аппаратная масштабируемость

Распараллеливание на уровне TestNG конфигурации:

<suite name="My test suite" preserve-order="true"

configfailurepolicy="continue" thread-count="10" parallel="tests" >

<test name="My test #1" ><parameter name="vm.name"

value="autotest_win7"/>

Конфигурационная масштабируемость

Способность фреймворка адаптироваться к изменению тестового окружения

Конфигурационная масштабируемость

OS: win7Browser: Firefox

Конфигурационная масштабируемость

OS: win7Browser: Firefox

OS: xp, vista, win7, win8 Browser: Firefox, IE, Chrome

Конфигурационная масштабируемость

Фабрика:

interface Browser{

String type;

WebElement getElement(By locator)

……

}

Конфигурационная масштабируемость

Фабрика:

class Firefox implements Browser{

WebElement getElement(By locator){

‘ находим веб-элемент

…..

}

……

}

Конфигурационная масштабируемость

Фабрика:

class IE implements Browser{

WebElement getElement(By locator){

‘В IE элементы находятся по-другому …..

}

……

}

Конфигурационная масштабируемость

Фабрика:

Browser browserFactory(String type){

if (“firefox”.matches(type))

return new Firefox();

if (“ie”.matches(type))

return new IE();

}

Конфигурационная масштабируемость

Фабрика:

‘ берем параметр из TestNG конфирурации

String browser_type = context.getCurrentXmlTest().getParameter(“browser”);

‘ получаем нужную реализацию

Browser browser = browserFactory(browser_type);

Функциональная масштабируемость

Способность фреймворка адаптироваться к изменению функционала тестируемого приложения

Функциональная масштабируемость

Выделение повторяющихся элементов бизнес-логики в:

1. отдельный модуль(и)2. базовый класс3. очевидное и легкодоступное место (но

не в тесты!)

Выводы:

1. Думайте о масштабируемости еще на этапе проектирования

2. Три вида масштабируемости: аппаратная, конфигурационная, функциональная – подумайте о каждом

Email: andrew@runteo.comSkype: andrew.ivarouskiMobile: (+375 29) 705 00 28web: www.runteo.ru

Спасибо за внимание!

Recommended