Для запуска автоматических тестов часто ставится задача - создание изолированного окружения. Но организовать стабильное окружение для тестирования — далеко не самая простая задача. А если нужно тестировать сетевые взаимодействия компонентов и анализировать предельный уровень нагрузки на них, то задача становится еще сложнее. Так же хотелось бы иметь возможность быстрого развертывания окружения и гибкой настройки отдельных компонентов. Такие возможности дает нам Docker. Он отлично справляется с задачай создания изолированного окружения. Но можно ли использовать Docker для запуска GUI автоматичеких тестов?
Перед нами стояла задача запуска наборов GUI автотестов под различными средами. Усложнялась задача тем, что все тесты должны были запускаться на одном хосте. Также требовалось иметь систему мониторинга и управления автотестами.
Для решения этой задачи мы решили использовать Docker. Это позволило нам реализовать все наши запросы. Также мы использовали Headlessly-режим ( Xvfb), что позволило нам эффективно использовать имеющиеся аппаратные ресурсы.
В нашем проекте мы используем облачный хостинг Ubuntu без GUI. Вы можете использовать уже существующие Docker образы, установив их из Docker репозитория. В нашем случае, нам была нужна определенная конфигурация среды испытания, поэтому нам пришлось создать свой собственный образ. Мы разработали Dockerfile, что позволило нам создавать свои образы с необходимой для нас конфигурацией: Ubuntu + Java + Gradle + OpenVPN + Firefox.
Наш WebDriver проект находится в папке на облаке, которая мапится на образ. Следовательно, для обновления наших WebDriver тестов нам не нужно создавать новый образ, а только необходимо запустить тесты с помощью сборщика Gradle, который собирёт всю систему автоматически, учитывая последние изменения.
Образ создает виртуальный экран, поэтому при запуске тестов вы не увидите браузер, где тесты запускаются. Имейте в виду, что такой подход не означает использование фейковых браузеров, а использует реальные, которые используют Xvfb в качестве дисплея. Такой способ позволяет выполнять тесты быстрее и стабильнее.
Необходимо будет только поддерживать детальный лог, который будет показывать вам результаты тестирования и по нему можно легко выяснить причину, если тест не пройден.
Для управления и запуска тестов мы используем SSH и Telnet клиент, но также для этой цели вы можете использовать Jenkins. Решение использовать клиент в нашем проекте было вызвано тем, что мы можем выполнять shell команды в контейнерах. Это помогает нам выяснять и исправлять проблемы в среде испытаний.
Наша практика показывает, что использование Dockers в автоматизации представляет собой мощное решение, которое помогает сделать разработку и тестирование быстрее и проще, а также позволяет сэкономить ресурсы.
Автор статьи: QA Automation Teqniksoft
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.