1. QA Sib Особенности использования Selenium для многопоточного тестирования мультиплатформенных приложений Alexey Zalomlenkov, Software Development Engineer (QA Tools & Infrastructure)
10. Независимо могут тестироваться сразу несколько версий продуктов, например Plesk 10.4.0 и Plesk 10.2.0. Как правило это последняя разрабатываемая версия и версия выпущенная ранее (для проверки microupdates с bugfixes)
11. Каждый продукт тестируется примерно на 75 конфигурациях (56 — Unix, 19 — Windows). Для Plesk 9.x ещё больше — 136 (118 — Unix, 18 — Windows). Конфигурация — это OS+arch+virtualization type/hypervisor. Пример: Debian 5.0 x32 KVM
12. Каждые сутки от 2-х и более прогонов WebUI тестов для каждого продукта. К релизу кол-во перезапусков может увеличиваться.
13.
14. Host OS- где возможно используем Linux - Для IE8, Chrome, Safari используем Windows и Virtuozzo Containers. Для Firefox — Linux (как правило Debian 5.0 x86)
15.
16. Возможные схемы использования Selenium За всё время использования Selenium в тестировании мы последовательно опробовали следующие схемы его использования: Custom Selenium balancer (legacy, in Perl) Selenium Grid (http://selenium-grid.seleniumhq.org) Local Selenium instance Per-node Selenium VM Per-node Selenium VM on dedicated PVC nodes На каждой из схем остановимся поподробнее …
17. Схема №1. Custom Selenium balancer Node 1 RC1 RC2 RC3 getNewBrowserSession() Client App Custom Balancer Node 2 RC1 RC2 RC3 testComplete() Выделение RСs клиентам Многопоточность База занятых RCs Node N RC1 RC2 RC3 Достоинства: Можно реализовать алгоритм балансинга «под себя» Полный контроль Недостатки: Надо писать и поддерживать свой балансер Большая нагрузка на балансер single point of failure Необходимо отслеживать и высвобождать неиспользуемые RCs
18. Схема №2. Selenium Grid Node 1 RC1 RC2 RC3 register getNewBrowserSession() Client App Selenium Grid (<hostname>:4444) Node 2 RC1 RC2 RC3 testComplete() dispatch requests Web console: http://<host>:4444/console Node n RC1 RC2 RC3 Достоинства: Готовый tool. Работает «из коробки» Масштабируется* Не нужно модифицировать клиентский код Имеется web-консоль Недостатки: Reliability баги при большой нагрузке Большая нагрузка на балансер single point of failure Необходимо отслеживать и высвобождать неиспользуемые Rcs Нужно организовывать shared storage для всех RCs grid'а (для upload файлов)
19. Схема №3. Local Selenium instance Hypervisor / Virtuozzo node Client App VM 1 10.52.100.1 Selenium RC Firefox Xvfb 10.52.100.1:4444 VM 3 10.52.100.10 Selenium RC Firefox Xvfb 10.52.100.10:4444 VM 2 10.52.100.2 Selenium RC Firefox Xvfb 10.52.100.2:4444 Достоинства: Время жизни Selenium RC = время жизни VM с продуктом Масштабируемость без дополнительных затрат Локальный трафик между Selenium и тестируемым продуктом Удобна для Dev&QA для разработки и отладки автотестов Недостатки: Нужноустанавливатьзависимыепакеты (depending libraries etc.) длявсехконфигураций (!). Зависимостимогут «мешать» основномупродукту Accidental падениянанекоторыхконфигурациях Взаимноевлияние RC и тестируемогопродукта
20. Схема №4. Per-node Selenium VM Hypervisor / Virtuozzo node (пример: autovmware56.qa.plesk.ru 10.52.1.100) Client App Selenium VM selenium.autovmware56.qa.plesk.ru (10.52.2.200) RC1 RC2 ... RCn (ports X,Y,Z) VM 1 10.52.100.1 VM n 10.52.100.50 VM 2 10.52.100.2 Selenium port mapping: VM ip address -> RC port Пример: 10.52.20.168 (netmask 255.255.0.0) ->10.52.14.A8 -> 14A8 -> 5288 Selenium host mapping: Пример: autovmware56.qa.plesk. IN A 10.52.1.100 -> selenium.autovmware56.qa.plesk. IN A 10.52.2.100 Достоинства: Локальный трафик между VMs ноды и их Selenium VM Физическая изоляция Selenium VMs: исключает их взаимное влияние друг на друга и на тестируемый продукт Недостатки: Сложно регулировать нагрузку на Selenium VM
21. Схема №5. Per-node Selenium VM on dedicated PVC nodes Hypervisor node autovmware45.qa.plesk.ru VM 1 10.52.100.1 VM 3 10.52.100.100 VM 2 10.52.100.2 Virtuozzo node for Selenium VEs Client App Selenium RCs container selenium.autovmware45.qa.plesk.ru Selenium RCs container selenium.autovmware46.qa.plesk.ru Достоинства: Гибкость и масштабируемость Selenium физически не влияет на VMs с тестируемым продуктом Selenium+Firefox+Xvfb в PVC контейнере работает быстрее чем в VM Недостатки: Необходимо выделять дополнительное «железо» под Virtuozzo сервера Дополнительный трафик Нужны лицензии на Virtuozzo :-)