Docker для автотестов: заметки от QA-инженера Creative
Всем привет! Меня зовут Николай, я QA-инженер компании Creative. Мы с коллегами-тестировщиками часто обсуждаем какие-то проф моменты, и недавно дискутировали по поводу пользы Dockerа. Решил поделиться своими мыслями с читателями vc.ru. Статья будет полезна как начинающим тестировщикам, так и тем, кто давно в теме. Разберём теорию, познакомимся с командами, а в конце статьи – поделюсь небольшой хитростью, которая здорово упростит вам жизнь. Погнали!
Docker, контейнеры и зависимости
Итак, что такое docker простыми словами? Это система для автоматизированного управления и развёртывания приложений в изолированных контейнерах. Звучит сложно, но мы лишь затронем ту часть, которая требуется для запуска автотестов.
Чтобы начать работу с докером, установите его на компьютер. Для вашего удобства прикрепляю инструкцию с офсайта.
Главная фишка dockerа – это возможность запускать тесты в любых браузерах в изолированных контейнерах.
Контейнер – это изолированное пространство со своими настройками. Под настройками имеется в виду файл, который находится в вашем проекте с неизменным названием «Dockerfile» (илл. 1):
В контейнеры мы можем установить любые зависимости. Например, нам нужно запустить автотесты, используя Java8, Maven и Chromedriver. Для того чтобы все работало, нужно просто прописать эти зависимости в конфигурационном файле.
Немного о конфигурации Dockerfile
Есть два основных понятия – образ и контейнер. Так вот, образ – это шаблон, из которого создаётся контейнер. То, чем будет наполняться контейнер, определяет dockerfile.
Сам файл имеет предустановленные инструкции, которые выполняют определённые действия:
FROM – это образ, из которого мы будем создавать наш контейнер.
- RUN – это команда, которая устанавливает нужные зависимости.
- VOLUME – создает точку монтирования для работы с хранилищем.
- COPY – копирование в контейнер папок и файлов.
WORKDIR – рабочая директория CMD. Команда с аргументами, которую нужно выполнить после запуска контейнера (илл.2):
Образы популярных программ или платформ, таких как базы данных, веб-серверы, компиляторы и операционные системы, вы можете найти в Docker Hub – репозитории для докер-образов.
Волшебный Docker-compose
Теорию мы разобрали, теперь перейдём к одной хитрости, о которой я говорил в самом начале статьи.
К примеру, нам нужно обновить свои знания по базам данных. Но мы не хотим идти по стандартному пути и устанавливать postgres, указывать порты и тд. На помощь нам придёт файл docker-compose.yml. Это файл, который лежит в корне нашего проекта с расширением yml.
Для того чтобы нам поднять на локалхосте postgres c админкой, нужно создать проект. В нём будет один файл с двумя контейнерами, расположенными на порту 8080. Наполнение этого файла будет выглядеть так (илл. 3), а страница с официальным образом из Docker Hub находится здесь.
Вместо выводов
По моим наблюдениям и личному опыту, тенденцией 2022 года стало активное использование dockerа для развёртывания своего софта. Так можно сказать про каждый третий или четвертый проект.
Для нас – тестировщиков – это означает, что высоконагруженные проекты, которые требуют частых релизов, лучше всего покрывать автотестами, прогнанными в docker-контейнерах.
Знание этой технологии улучшает понимание того, как именно работает инфраструктура. А значит, вы повышаете свою эффективность и эффективность всего проекта. На этом у меня всё, буду рад ответить на ваши вопросы!