<style>.lazy{display:none}</style>Docker для QA-инженеров и тестировщиков

Docker для QA-инженеров и тестировщиков

Тестирование программного обеспечения это область, которая постоянно меняется. Поскольку время на тестирование часто ограничено, инженеры по обеспечению качества часто выбирают автоматизацию для более быстрого достижения результатов по улучшению качества ПО.

Docker позволяет использовать контейнеризацию вместе с Selenium, WebDriver и другими аналогичными инструментами автоматизации тестирования.

С появлением стратегии многоконтейнерного тестирования Docker изменил подход к интеграции тестирования в процесс CI/CD. Для связывания зависимостей приложения можно использовать операционную среду, свободную от внешних агентов, которые могут помешать процессу тестирования.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Итак, что же такое Docker?

Docker – это “платформа, призванная помочь разработчикам создавать, совместно использовать и запускать современные приложения”.

Docker.com

Вы когда-нибудь сталкивались с подобным?

  • Установите Java 8 и Chrome версии 65 на локальную машину
  • Затем напишите несколько тестовых скриптов и проверьте их
  • После проверки скопируйте тот же сценарий и вставьте его на удаленную машину
  • Попробуйте запустить через Jenkins

Когда вы пытаетесь запустить тестовые скрипты, удаленная машина выбрасывает несколько странных исключений.

Вы погуглили, и Google ответил: “Несоответствие версий”.

Хорошие новости

Существует простой способ решить эту проблему. Достаточно загрузить Docker, и он создаст контейнер со всеми необходимыми зависимостями.

Итак, Docker – это инструмент для создания, развертывания или запуска приложений вместе со всеми зависимостями, включая среду выполнения. Создав контейнер, вы можете поделиться им со всеми, кто установил Docker.

Как решить проблемы, связанные с инфраструктурой, с помощью Docker?

Рисунок 01

Предположим, у нас есть удаленная машина, на которой установлена Java 8 с тестовым сценарием, Selenium jar и TestNG jar. Ваш тестовый сценарий может указывать на другую машину (сетку (grid), действующую как Selenium Hub), которая имеет несколько узлов (nodes): Chrome, Firefox и т. д., как показано на рисунке выше (См. Рисунок 01). В таких системах вы можете столкнуться с различными инфраструктурными проблемами (проблемы с нехваткой памяти и т. д.).

Что здесь может сделать Docker?

Рисунок 02

В течение нескольких секунд будет создана вся инфраструктура для запуска тестового сценария и сетки всех узлов, например Chrome или Firefox.

Терминология

Терминология
Рисунок 03 (Docker.com)

Dockerfile. Это файл для предварительной работы, набор инструкций, который нужен для записи образа. В нем описывается, что должно находиться в образе, какие команды, зависимости и процессы он будет содержать.

Для сборки образа из Dockerfile используют команду build:

docker build <Dockerfile>

Docker Image. Образ Docker — это неизменяемый файл, из которого разворачивается контейнер. Для этого нужно запустить образ в клиенте с помощью специальной команды.

Docker Container. Это уже готовый и развернутый контейнер, который находится на каком-либо устройстве.

Образ можно создать самостоятельно с помощью Dockerfile или уже готового контейнера, в котором произошли какие-либо изменения, а также скачать из открытого репозитория Docker Hub.

Команды Docker

  • docker pull image – загрузка образа с DockerHub
  • docker images — просмотр всех образов на своем компьютере
  • docker ps — просмотр всех активных контейнеров
  • docker ps -a — просмотр всех контейнеров
  • docker run image — формирование контейнера из образа.

Контейнеры vs. виртуальные машины

Сравнение контейнеров и виртуальных машин
Рисунок 04

Контейнеры позволяют упаковывать только те элементы, которые нужны для вашего приложения или сервиса, не создавая при этом целую ОС, как в виртуальных машинах (VM). Это означает, что они более быстрые и, кроме того, легкие.

Создание контейнера с помощью Docker

Создание контейнера с помощью Docker
Рисунок 05

Наша сетка состоит из трех основных компонентов:

  1. Машины Docker, на которых запущен движок Docker Engine
  2. Хаб
  3. Контейнеры с узлами (Node), содержащие браузеры, которые связаны с хабом.

Взглянув на диаграмму выше, вы получите представление о том, что мы будем создавать и как все это будет взаимодействовать друг с другом (см. Рисунок 05).

Контейнеры работают только с операционной системой хоста. Но есть обходные пути, например использование виртуальных машин. Docker создаст и запустит контейнеры в виртуальной машине Linux, если ваша ОС хоста, например, Windows.

Вместо Virtual Box или Hyper-V для управления виртуальной машиной используется гипервизор Windows. Функционирующую виртуальную машину Linux можно увидеть при запуске Hyper-V Manager. На этой виртуальной машине работает демон (daemon) Docker, который предлагает функции, необходимые для работы с контейнерами на базе Linux.

Кроме того, вы можете наблюдать, как “Moby Linux” выполняет демон Docker Linux, если вы установите Docker для Windows. Аналогичным образом, контейнер на базе Windows может быть запущен на виртуальной машине Windows, работающей на хосте с Linux или macOS.

Как Docker упрощает тестирование ПО?

1. Написание специальных скриптов, ручное развертывание сборки, окружения или любого другого инструмента на нескольких виртуальных машинах не требуется

Если бы вы не использовали Docker, вам пришлось бы писать скрипт или вручную настраивать все требования на нескольких виртуальных машинах (ВМ). Например, для автоматизации потребовались бы Java, Ruby, Python, RSpec, Maven, Selenium, различные браузеры и другие утилиты. Из-за зависимости от платформы, сложностей с написанием скриптов и значительных требований к обслуживанию такое решение не является оптимальным.

Создайте образ Docker, чтобы поместить все необходимые инструменты или зависимости в контейнеры, которые могут напрямую запускать любой код или приложение, чтобы избежать этих недостатков. Нет необходимости предварительно выделять оперативную память под контейнеры, поскольку Docker обеспечивает предсказуемую и повторяемую среду тестирования. Операционная система хоста или устройство, на котором размещен образ Docker, запустит ваши контейнеры.

2. Согласованная среда развертывания обеспечивает более практичную доставку ПО

Как только команда разработчиков отправит код в ветку фичи, выполнит автоматизированные тесты и они пройдут успешно, код будет слит с основной веткой. Однако, недостаточное тестовое покрытие может привести к дефектам и ошибкам после выпуска продукта. На протяжении всего жизненного цикла разработки и тестирования программного обеспечения контейнеры предлагают надежную среду развертывания, которую можно использовать многократно, что значительно упрощает работу.

3. Контейнеры сокращают количество внешних переменных окружения, которые необходимо тестировать

Поскольку большинство зависимостей приложения и конфигурационная информация содержатся внутри контейнера, количество переменных окружения уменьшается. Таким образом, непрерывная интеграция и тестирование выполняются одновременно, обеспечивая согласованную работу приложения как при тестировании, так и в продакшене.

Контейнеры позволяют выполнять тесты в разных контейнерах и защищенных средах, тестируя приложение как на машинах Windows, так и на Linux. Вы можете повторно использовать контейнерное тестирование, когда код приложения будет обновлен и потребуется провести новые тесты.

Вероятность того, что приложение будет вести себя по-другому в продакшене, невелика, так как окружение постоянно.

4. Гибкость и простота обслуживания

Поскольку все контейнеры работают изолированно, легко поддерживать тесты и окружения. Даже если в одном из контейнеров произойдет ошибка, другие контейнеры не будут затронуты.

Вы всегда можете создать новый контейнер во время выполнения. Запуск нового приложения или средств автоматизации в новом контейнере очень прост.

5. Повышение эффективности, ускорение доставки и снижение затрат

Контейнеризация повышает эффективность и скорость SDLC, что выгодно для бизнеса. Автоматизация – важнейший аспект обеспечения качества, а Docker повышает эффективность и экономит деньги вашей компании за счет снижения зависимости от инфраструктуры.

Заключение

Подводя итог, можно сказать, что Docker позволяет тестировать в контейнерах и изолировать тесты для разработки и развертывания. Тестирование программного обеспечения становится более предсказуемым, гарантируя, что все, что работает на вашей системе, будет работать и для ваших конечных клиентов. Контейнеры Docker улучшают весь процесс SDLC, позволяя разрабатывать более надежное, устойчивое и экономически эффективное программное обеспечение.

Перевод статьи «Docker for QA Engineers».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *