Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
←
→
Транскрипция содержимого страницы
Если ваш браузер не отображает страницу правильно, пожалуйста, читайте содержимое страницы ниже
Selenoid – сотни параллельных UI-тестов легко и быстро Selenoid – совместимый с Selenium легкий сервер для запуска изолированных браузеров в Docker контейнерах ДЕКАБРЬ 2017 PUBLIC 1
Обо мне • В 2007 сисадмином-джуниором сделал «вайтивайти» • Занимался вопросами настройки ИТ-инфраструктуры для нужд СМБ, организацией процесса техподдержки, исполнял роль ИТ-менеджера в нескольких средних проектах. • Все время развивался в сторону автоматизации рутины и изучения программирования. • С 2015 года занимаюсь автоматизированным тестированием. PUBLIC 2
Содержание •Выгода от применения Selenoid на конкретном проекте автоматизации •Детальное сравнение Selenoid и Selenium Server •Почему контейнеры, а не виртуальные машины? •Демо PUBLIC 3
О проекте •Сложный UI •Приложение в постоянной разработке •Окружение не однородное •> 1000 тестов, многие длительные •> 30 автотестировщиков PUBLIC 4
О проекте – недостатки Регрессионные тесты однопоточные Трудоемкое управление средой запуска Запуск тестов в разном и нестабильном окружении Плохая Профилактическая утилизация перезагрузка нод ресурсов PUBLIC 6
Selenium Server – варианты обхода недостатков •Selenium Server + контейнеры с браузерами •Библиотека перебирающая разные Selenium Hub •Selenium Grid на Apache Mesos •Jsonwire Grid •... PUBLIC 7
О проекте – сравнение до и после До После Тесты для дебага в разном в одинаковом окружении и регрессии запускаются окружении плохая экономия ресурсов Потребление ресурсов утилизация ~ 50% CPU, ~80% RAM, ~ 90% HDD Кол-во потоков 1-2 потока До 20-30 потоков регрессионных тестов Стабильность и нестабильное очень стабильно управление окружением окружение и легко управляемо Профилактическая не нужна, даже для добавления нужна перезагрузка ноды новых версий браузеров PUBLIC 11
О проекте – потребление ресурсов До После 30 ВМ для дебага 30 X 2 = 60 cpu в облаке 30 X 4 = 120 GB RAM 4 X 4 = 16 cpu 4 ВМ для регрессии 4 X 4 = 16 GB RAM ВМ для Selenoid и 4 cpu Selenoid UI 2 GB RAM 32 cpu ВМ докер хост 32 GB RAM 76 cpu 36 cpu Итого 136 GB RAM 34 GB RAM PUBLIC 12
Детальное сравнение Selenoid VS Selenium Server PUBLIC 13
Selenoid – основные преимущества над Selenium Server •Быстрая установка •Удобная работа с браузерами •Легкое масштабирование •Удобный UI и логирование •Очереди и гибкие лимиты PUBLIC 14
Selenium Server Установка •Ручная установка: • Java • Браузеры нужных версий •Загрузка и распаковка • Selenium JAR • web-driver binaries •Запустить это все ;) PUBLIC 15
Selenoid Установка • Установить Docker • Загрузить Config Manager (12 Мбайт): $ wget –O cm https://github.com/aerokube/cm/releases/download/1.2.3/cm_linux_amd64 $ chmod +x cm • Запустить Selenoid $ ./cm selenoid start –-vnc • Selenoid работает на стандартном порту Selenium – 4444 PUBLIC 16
Selenoid – основные преимущества над Selenium Server ✓Быстрая установка PUBLIC 17
Selenium Server Обслуживание браузеров •Обновление версий браузеров трудозатратно •Соответствие версий WebDriver и браузеров •Один и тот же браузер с разными версиями? PUBLIC 18
Selenoid Обслуживание браузеров • Готовые образы контейнеров c преднастроенными браузерами • Каждый браузер в изолированном контейнере • Для каждого теста чистый браузер, как будто только что инсталлированный в ОС PUBLIC 19
Selenoid Конфигурация браузеров • Автоматическая генерация config.json с помощью CM ./cm selenoid start –vnc • Пример фрагмента config.json PUBLIC 20
Selenoid – основные преимущества над Selenium Server ✓Быстрая установка ✓ Удобная работа с браузерами PUBLIC 21
Selenium Масштабирование браузеров на уровне хоста •Selenium Grid – проблема ховера •Стабильно работающих браузеров < 10-20 PUBLIC 22
Selenoid Масштабирование браузеров на уровне хоста •Потребление ресурсов 0,5 – 1 ядро CPU 200 – 500 Мбайт RAM •tmpfs – файл подкачки в RAM •Таймаут неактивности автоматически освобождает ресурсы PUBLIC 23
Масштабирование на уровне балансировщика Selenium • Утечки памяти в режиме работы HUB • Проблемы с Jetty (Java-based HTTP server ) https://stackoverflow.com/questions/tagged/jetty 5700 вопросов на Stackoverflow • Встроенная UI консоль нагружает HUB • Логи перемешиваются PUBLIC 24
Selenoid Масштабирование на уровне балансировщика Пример реального масштабирования Selenium грида работающего на Selenoid: • 5000 + параллельных браузеров • 5 датацентров • Linux (desktop) • Windows (IE, Edge) PUBLIC 25
Selenoid – это Selenium на Golang Быстрый и легкий сервер: •Написан полностью на Golang •7 Мбайт исполняемый файл •60 Мбайт потребление RAM PUBLIC 26
Selenoid – основные преимущества над Selenium Server ✓Быстрая установка ✓ Удобная работа с браузерами ✓ Легкое масштабирование PUBLIC 27
Selenium Grid Консоль •Неудобная и малоинформативная консоль •Нельзя посмотреть «живые» логи отдельной сессии PUBLIC 28
Selenoid Консоль PUBLIC 29
Selenoid Консоль – статистика загрузки PUBLIC 30
Консоль Selenoid – подключение по VNC в контейнер PUBLIC 31
Консоль Selenoid – логи отдельных браузеров PUBLIC 32
Selenoid – основные преимущества над Selenium Server ✓Быстрая установка ✓ Удобная работа с браузерами ✓ Легкое масштабирование ✓ Удобный UI и логирование PUBLIC 33
Selenoid – гибкий контроль потребления ресурсов •Ограничение количества сессий на хост •Очереди •Лимит на CPUs отдельного контейнера •Лимит на RAM отдельного контейнера PUBLIC 34
Selenoid – основные преимущества над Selenium Server ✓Быстрая установка ✓ Удобная работа с браузерами ✓ Легкое масштабирование ✓ Удобный UI и логирование ✓ Очереди и гибкие лимиты PUBLIC 35
Selenoid – дополнительные преимущества • Изменение конфигурации Selenoid на «горячую» • Совместимость с другими образами Selenium контейнеров • Поддержка централизованного логирования • Статистика нагрузки отдается как JSON • Установка разрешения экрана прямо через код тестов • Видеозапись тестов - NEW PUBLIC 36
Почему Docker? PUBLIC 37
Контейнер vs VM PUBLIC 38
Преимущества Docker для запуска UI-тестов •Linux покрывает 80% всех браузеров •Нет потери фокуса при запуске параллельных тестов •Чистая ОС у автотестировщика и разработчика •Любое одновременное сочетание браузеров •Быстрый старт браузеров •Экономия вычислительных ресурсов хоста PUBLIC 39
Selenoid и IE PUBLIC 40
Selenoid и IE • Запустить бинарник Selenoid вместо Selenium C:\selenoid.exe -conf C:\browsers.json -disable-docker • Решить проблему с потерей ховера (фокуса): Use headless_ie_selenium.exe • Задать Selenium capabilities, которые улучшат устойчивость работы IE Подробнее в статье – «Selenium on Windows: revisited» https://medium.com/@aandryashin/selenium-on-windows-revisited-1ab8d51ccc06 PUBLIC 41
Демо •Установка Selenoid •Запуск параллельных автотестов •Подключение по VNC внутрь контейнеров с браузером •Просмотр «живых» логов по отдельному браузеру •Видеозапись тестов - NEW PUBLIC 42
Установка Selenoid •Скачивание Configuration manager •Запуск Selenoid •Запуск Selenoid-UI PUBLIC 43
PUBLIC 44
Запуск тестов и просмотр •Запуск параллельных автотестов •Подключение по VNC внутрь контейнеров Просмотр логов по сессиям •Видеозапись тестов PUBLIC 45
PUBLIC 46
Резюме •> 5 автоматизаторов на проекте – внедряйте Selenoid ☺ •Простая миграция •Экономит время, ресурсы и нервы •Бесплатный + низкая стоимость владения •Постоянное развитие и хорошая техподдержка PUBLIC 47
Контакты разработчиков https://github.com/aerokube самая быстрая техподдержка в телеграмм-канале: https://t.me/aerokube Актуальная документация: Aerokube • http://aerokube.com/selenoid/latest/ • http://aerokube.com/selenoid-ui/latest/ • http://aerokube.com/ggr/latest/ PUBLIC 48
Спасибо за внимание! senin24@gmail.com @senin24 – facebook, telegram PUBLIC 49
IE или Edge в контейнере PUBLIC 50
Docker in Windows Два варианта: 1. Linux Docker in Linux-VM on Hyper-V 2. Native Windows Docker (only in Windows 2016) “Reason of large container size is because of DLLs which are interlinked processes calling each other” http://collabnix.com/archives /1965 PUBLIC 51
Вы также можете почитать