Основы и нюансы параллельного тестрования
TRANSCRIPT
Selenium Camp 2012
Deep ShiftLabs
25 февраля, 2012
Киев, Украина
Основы и нюансы параллельного тестирования
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/
Помозговать