Многие команды инженеров по тестированию ПО при выполнении
автоматизированных тестов отдают предпочтение такому инструменту, как Selenium Grid. Данное решение позволяет получить распределенную среду для параллельного выполнения большого количества тестов. Однако в процессе работы над проектом могут возникать определенные сложности. Их можно избежать, если вместо Selenium Grid использовать Selenoid.
Особенности работы с selenium grid
Selenium Grid –
это кластер, состоящий из нескольких Selenium-серверов, который позволяет создавать распределенную сеть для одновременного запуска
selenium тестов в нескольких браузерах. Выделяют центральный сервер (хаб) и узлы (ноды), которые к нему подключены.
Решение это популярное, но при работе с ним инженеры по автоматизации должны иметь в виду следующие особенности:
Длительный процесс развертывания
Как установить Selenium Grid? Для установки Selenium Grid понадобится:
- Скачать и установить Java Development Kit.
- Найти и скачать актуальную версию Selenium Server JAR.
- Скачать необходимые версии веб-драйверов.
- Распаковать веб-драйвера из архивов.
- Установить необходимые версии браузеров.
- Ввести ряд длинных команд в командную строку.
Снижение скорости работы
При использовании большого количества нод с разными браузерами хаб начинает работать достаточно медленно.
Вопрос совместимости
Важно следить, чтобы версии нод и браузеров были совместимы. Иначе может возникнуть конфликт.
Что можно предпринять?
Некоторые сложности, например, длительный процесс
установки селениум, могут быть преодолены.
Оптимизировать процесс поможет Docker – контейнерная платформа для быстрой сборки, отладки и развертывания приложений.
После создания образа можно переходить к созданию контейнера, который будет содержать все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения.
Существуют официальные образы Selenium с браузерами различных версий, однако даже при их использовании процесс запуска браузеров из контейнеров может оказаться не самым оптимальным, поскольку все особенности работы с Selenium Grid сохранятся.
Selenoid как альтернатива
Чем можно заменить Selenium Grid? Достойным вариантом
аналога Selenium является Selenoid –
это инструмент, с помощью которого можно быстрее и проще запускать браузеры в Docker-контейнерах. Процесс отличается от аналогичного в Selenium.
Для каждого запроса нового
теста браузера Selenoid запускает новый контейнер и останавливает его после закрытия сессии.
В каждом контейнере находится определенная версия браузера, нужная версия веб-драйвера или Selenium-сервера и все необходимые зависимости (например, графические библиотеки). При этом благодаря изоляции процессов, можно запускать любое количество разных версий браузеров одновременно.
Selenoid написан на языке Golang и поддерживает все востребованные браузеры.
Selenoid vs. selenium grid
Цель использования данных решений одна – создание единой среды для параллельного запуска автотестов. При этом между решениями существует ряд важных отличий.
В чем же преимущества Selenoid?
Изолированное окружение
В Selenoid каждый браузер запускается в отдельном контейнере, что позволяет полностью изолировать окружение браузера.
При использовании Selenium Grid существует вероятность, что настройки браузера могут быть изменены.
Масштабируемость
В процессе работы с Selenium тестами после создания большого количества нод тесты могут перестать выполняться.
В Selenoid окружение никак не влияет на качественное и непрерывное проведение тестов.
Потребление и утилизация ресурсов
Поскольку Selenium Server написан на Java, расход ресурсов при большой нагрузке значительно возрастает.
Selenoid позволяет поддерживать высокую нагрузку без дополнительных ресурсозатрат.
В среднем при десяти запущенных сессиях Selenium Server на Java потребляет 500 МБ оперативной памяти, в то время как Selenoid – всего 50–60 МБ.
Кроме того, Selenoid утилизирует все неактивные контейнеры после завершения сессии, тем самым постоянно поддерживая нужное количество свободной памяти.
Установка
В отличие от достаточно длительного процесса развертывания Selenium Grid, установка и настройка Selenoid не займет много времени. Главное – установить Docker и ввести лишь одну команду.
Одновременная поддержка нескольких версий одного браузера
Данная опция доступна лишь у Selenoid. Для этого нужно создать несколько контейнеров с необходимыми браузерами.
Фокус
Нужно помнить о том, что при работе с Selenium Grid могут появиться проблемы при запуске нескольких браузеров на одной машине.
Операционная система работает таким образом, что в фокусе может быть только одно окно. Поэтому окна могут начать конкурировать за фокус.
В Selenoid такой проблемы нет, поскольку каждый тест запускается в отдельном контейнере.
Пользовательский интерфейс и логи
В Selenium Grid возникают сложности при получении логов определенных браузерных сессий. В то время как Selenoid позволяет быстро получить доступ к имеющимся журналам.
Помимо этого, есть возможность интеграции с ELK стеком для более быстрого сбора и анализа текущих файлов регистрации.
Также Selenoid достаточно удобен в использовании и располагает информативным интерфейсом.
Дополнительные возможности selenoid
Помимо вышеупомянутых преимуществ, Selenoid обладает рядом дополнительных функций, которые способствуют оптимизации работы.
Хранение данных в оперативной памяти
В Selenoid все временные файлы хранятся в Tmpfs.
Tmpfs – это временное файловое хранилище, которое позволяет хранить файлы в оперативной памяти. Доступ к ОЗУ, как известно, осуществляется намного быстрее, чем к файловой системе жесткого диска.
Различное разрешение экрана
Selenoid позволяет самостоятельно настраивать подходящее разрешение экрана для запущенного контейнера. Сделать это можно посредством выставления необходимых параметров в настройках компонента Browser Capabilities.
Отображение экрана браузера
В Selenoid во время исполнения тестов существует возможность подключиться к порту VNC в режиме реального времени, получить доступ к экрану нужного браузера и даже вмешаться в процесс исполнения автотеста.
Видеозапись тестов
Selenoid позволяет проводить видеозапись исполняемых тестов.
Активация записи в Selenoid на примере браузера Google Chrome происходит за счет выставления параметра true в соответствующую настройку компонента Browser Capabilities:
ChromeOptions options = new ChromeOptions();
options.setCapability(“enableVideo”,true);
Подводя итог
Инженеры по автоматизации отдают предпочтение вышеупомянутым решениям, поскольку они позволяют параллельно выполнять большое количество тестов.
Однако Selenoid демонстрирует очень высокий уровень гибкости в настройке среды исполнения. Стабильность данного решения, значительная экономия времени при его использовании и ряд дополнительных возможностей позволяет инженерам оптимизировать процесс и в сжатые сроки обеспечивать высокое качество программных продуктов.
А у вашей команды есть опыт работы c Selenoid?
Заказать консультацию по автоматизации тестирования специалистов «Точки качества»
можно здесь.