Основы и нюансы параллельного тестрования

Preview:

Citation preview

Selenium Camp 2012

Deep ShiftLabs

25 февраля, 2012

Киев, Украина

Основы и нюансы параллельного тестирования

Дмитрий Якубовский

Java, PHP + тестировщик

bear@deepshiftlabs.com

@deep_bear

Deep ShiftLabs

http://www.flickr.com/photos/pothikmanush/4565287938

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

a(){} b(){}

Один тест - 5 минут

Итого - 10 минут

Простой тест

class Test {

main() {

prepareBrowser();

a();

b();

freeBrowser();

}

}

@BeforeMethod

@Test

@AfterMethod

TestNG: аннотации

class Test {

@BeforeMethod

prepareBrowser(){…};

@Test

a(){…};

@Test

b(){…};

@AfterMethod

freeBrowser(){…};

}

TestNG: аннотации

<suite name=“test" verbose="3">

<test name=“simpleTest" parallel="methods"thread-count=“2">

<classes><class name=“Test" />

</classes></test>

</suite>

TestNG: конфигурация

testng.xml

Выполнение

prepareBrowser(){}

a(){}

freeBrowser(){}

prepareBrowser(){}

b(){}

freeBrowser(){}

Поток 1 Поток 2

TestNG: выполнение

a(){}

b(){}

Selenium server

Итого - 5 минут

TestNG: выполнение

a(){}

b(){}

Selenium server

Selenium server

a(){}

b(){}

Selenium server

Selenium server

Два браузера

Selenium server

Selenium servera(){}

b(){}

Selenium server

Selenium server

?

Два браузера

a(){}

b(){}

Selenium Hub

Selenium RC

Selenium RC

Selenium RC

Selenium RC

a(){}

a(){}

b(){}

b(){}

Selenium Grid

a(){}

b(){}

Selenium Hub

Selenium RC

Selenium RC

Selenium RC

Selenium RC

a(){}

a(){}

b(){}

b(){}Selenium Hub

… …

Nerrvana

ВыполнениеВиртуальные машины

RC RC

RC

RC

RCRC

Hub

Hub

XenXen

ВыполнениеLVM snapshots

RC

RC

Hub

RC

RC

RC

RC

RC

Каждый раз свежая VM

ВыполнениеРесурсы: память

Linux Hub

Linux Tester

Windows Tester

128 МБ

196 МБ

256 МБ

ВыполнениеПодмена браузера

hub:

port: 4444

environments:

- name: "*iexplore"

browser: "*iexplore"

- name: "*iehta"

browser: "*iehta"

- name: "*safari"

browser: "*safari"

- name: "*opera"

browser: "*opera"

hub:

port: 4444

environments:

- name: "*iexplore"

browser: "*chrome"

- name: "*iehta"

browser: "*chrome"

- name: "*safari"

browser: "*chrome"

- name: "*opera"

browser: "*chrome"

grid_configuration.yml

http://www.flickr.com/photos/jennconspiracy/826680008

Уникальные ключи

Тесты мешают друг другу

Тесты видят только своё

?tags_for_tests=unique_tag1,unique_tag2

Не показывать тестовые!

фильтровать по пользователю:

нельзя (тестирование гостей)

Фильтр по уникальной подстроке:

можно, накладно

Учитывать tags_for_tests:

помечать в спец. колонке

График 1..25 потоков

0

2

4

6

8

10

1 2 3 4 5 6 7 … 25

Потоки

Время

Количество независимых тестов1

Ресурсы машины-тестера2

WAUT* - Web Application Under Test

Ресурсы WAUT3

4

9

От перемены мест…4

4

5

3 потока

5 7

2 потока

Пример: общая картина

1

0

5

7

4 4

5

http://www.flickr.com/photos/cs___/4163717544/

Помозговать

Вопросы

bear@deepshiftlabs.com (не стесняйтесь!)

http://nerrvana.com(сервис для запуска тестов)

Recommended