Автотесты и Docker: блиц-практикум

Итак, попробуем попрактиковаться в следующем:

  • Создание Docker-образа (Docker Image) для кода автотестов;
  • Создание Dockerize Grid для выполнения тестов;

Как мы уже должны знать, Docker создает образы в Docker-контейнерах. Затем этот образ работает как сервис в Docker-Compose-файле для запуска тест-кейсов в Grid.

Что нам нужно:

  • Установить Docker;
  • Установить Java, Maven, Eclipse;

Разбираемся с Dockerfile

Команды: 

  • FROM — принять «maven:3.6.1-jdk-8-alpine» как начальный образ.
  • RUN — добавить/обновить (установить) bash
  • COPY — копировать pom.xml c локальной машины в папку /app внутри docker-контейнера
  • COPY src /app/src — скопировать папку src из локальной машины /app/src в Docker-контейнер
  • далее COPY — копировать файл healthcheck.sh из локальной машины в папку /app в контейнере.
  • WORKDIR /app/ — создать папку /app/ в контейнере, которая будет папкой проекта.
  • ENTRYPOINT — первый запуск команды после запуска контейнера. Настройка оболочки
  • CMD — запуск описанных выше команд из shell-файла после запуска контейнера.

Уясним назначение файла healthcheck.sh: это файл оболочки, куда добавляем все команды, нужные для запуска автотестов.

  • Команда echo здесь — для вывода сообщения о том, что HUB доступен. HUB_HOST это переменная в которую записан IP-адрес Selenium Hub.
  • Проверка статуса этого Hub’а — доступен ли
  • mvn — команда запуска maven-проекта с maven-тестом и передача параметра с опцией -D в виде IP-адреса Selenium-хаба в код автоматизации.

Билд Docker Image

  • Надо открыть терминал с локацией Dockerfile.
  • Запустить команду со скрина ниже, чтобы создать образ.

docker: запуск одной из команд Docker

build: билдить образ

-t: присвоить образу тег с названием “latest”

uiautomation: имя образа

. (точка) : обозначает, что Dockerfile расположен в текущей папке

После запуска этой команды увидим в терминале:

После создания образа можно проверить, создался ли он:

Создание Dockerize GRID

Теперь настроим Selenium Grid с docker-compose и добавим в него наш образ кода автоматизации, чтобы далее запустить docker-compose и выполнить тест с применением “докеризованного” кода и Grid.

В официальном репозитории Selenium Docker много пре-билдов образов для hub, chrome-node, firefox-node. Ниже показан YAML-файл с некоторыми компонентами. Пользуясь docker-compose, можно манипулировать разными docker-образами.

Здесь:

  • hub: Selenium Hub
  • сhrome: Chrome Node
  • test: образ кода автоматизации
  • version: версия docker-compose
  • services: управление разными образами
  • image: имя образа с тегом
  • ports: номер порта, на котором сервис будет доступен с компьютера (Host Machine). Выполняет маппинг портов из Docker Container в Host Machine
  • depends_on: показывает зависимости между сервисами. Depends_on не ожидает готовности хаба перед запуском теста. Поэтому применяем curl-команду в файле entrypoint.sh для проверки доступности хаба, перед тем как запустить тест на выполнение.

environments: добавляет все нужные переменные окружения. Мы передаем переменную HUB_HOST, которая содержит IP-адрес хаба Selenium Hub. Посмотрим на код, где применяется эта переменная. Selenium Grid слушает порт 4444. Значит нам нужен RemoteWebDriver для GRID.

volumes: Для получения отчетов после выполнения тестов.

Теперь запускаем docker-compose

Сначала настраиваем VNC Server: мы хотим видеть, что происходит в браузере, поэтому использовали «дебаг-версию» chrome node (image: selenium/node-chrome-debug:latest) в docker-compose-файле. Там есть VNC-сервер, так что можем видеть браузер во время выполнения тестов.

Хост-компьютер откроет окно VNC-сервера через порт 9090. После завершения настройки VNC-сервера пробуем открыть адрес http://localhost:9090, он откроется ниже и спросит пароль. Применяем дефолтный пароль как “секретный”.

Запуск Docker-Compose: теперь можем запустить команду docker-compose, чтобы начать выполнение. Она сначала начнет загружать все нужные образы на локальную машину, потому что их пока там нет. Просто запускаем следующую команду в терминале из места, где файл docker-compose есть:

  • Загрузятся все образы:
  • Проверяется доступность HUB’а:
  • Запускает выполнение теста и пробует подтянуть все нужные зависимости в докер-контейнер.
  • После этого запускает выполнение тест-кейса, который мы видели на VNC-сервере. (После выполнения дается команда остановки всех сервисов: docker-compose down)

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас