26
Масштабируемость тестового фреймворка Андрей Иваровский. runteo.ru

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

  • Upload
    sqalab

  • View
    349

  • Download
    3

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

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

План доклада

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

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

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

Определения

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

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

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

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

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

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

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

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

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

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

Структура:

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

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

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

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

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

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

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

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

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

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

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

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

=

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

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

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

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

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

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

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

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

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

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

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

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

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

Распараллеливание на уровне 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"/>

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

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

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

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

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

OS: win7Browser: Firefox

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

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

OS: win7Browser: Firefox

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

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

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

Фабрика:

interface Browser{

String type;

WebElement getElement(By locator)

……

}

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

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

Фабрика:

class Firefox implements Browser{

WebElement getElement(By locator){

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

…..

}

……

}

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

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

Фабрика:

class IE implements Browser{

WebElement getElement(By locator){

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

}

……

}

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

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

Фабрика:

Browser browserFactory(String type){

if (“firefox”.matches(type))

return new Firefox();

if (“ie”.matches(type))

return new IE();

}

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

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

Фабрика:

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

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

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

Browser browser = browserFactory(browser_type);

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

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

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

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

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

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

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

не в тесты!)

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

Выводы:

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

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

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

Email: [email protected]: andrew.ivarouskiMobile: (+375 29) 705 00 28web: www.runteo.ru

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