Upload
sqalab
View
349
Download
3
Embed Size (px)
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: [email protected]: andrew.ivarouskiMobile: (+375 29) 705 00 28web: www.runteo.ru
Спасибо за внимание!