Блог a1qa

О тестировании и качестве ПО

Docker и Ansible: обзор инструментов для автоматизации тестирования

Согласно последнему изданию World Quality Report, 99% ИТ-руководителей и менеджеров используют принципы DevOps при развертывании своих приложений.

Одним из основных инструментов DevOps является автоматизация разработки, тестирования, доставки изменений. Благодаря ей тесты выполняются циклично и непрерывно; производительность специалистов увеличивается в несколько раз; автоматизируются длинные последовательности и операции, которые требуют тяжелых вычислений.

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

В сегодняшней статье мы поговорим о двух инструментах для автоматизации тестирования, которые значительно упрощают работу QA-инженеров, – Docker и Ansible.

Ключевые термины

Docker – это программное обеспечение для автоматизации развертывания и управления приложениями в средах с поддержкой контейнеризации.

Используя контейнеризацию, оно превращается в легковесный инструмент, который позволяет:

  • Упаковать программный продукт в контейнер;
  • Перенести приложение на любой сервер, где есть Docker, и запустить его за пару секунд.

Контейнер – один из ключевых способов изолированного запуска ОС с подключенной файловой системой из образа.

Selenium – инструмент для автоматизации выполнения тестов в браузерах.

Ansible – платформа удаленного управления конфигурациями ПО, которая упрощает развертывание приложений.

Ansible приводит серверы удаленного доступа в нужное состояние, а администратор только описывает при помощи сценариев, как его достичь. Поэтому быстро переконфигурировать систему очень просто – достаточно внести пару строк в сценарий.

Преимущества Docker

Инструмент Docker применяется для развертывания и изоляции приложений в среде виртуализации, реализации микросервисов.

Достоинства решения:

  • Экономит ресурс. Контейнеризация сокращает расходы и время, позволяет запускать несколько изолированных сред на одном хосте.
  • Дает возможность развернуть изолированное тестовое окружение, не прерывая работу других.
  • Может хранить настройки среды в системе контроля версий, что позволяет управлять их версионностью.
  • Контейнер защищает продукт от нюансов конфигурации веб-серверов.
  • Стандартизирует проводимые операции.

Из-за доставки в небольших контейнерах Docker упрощает и сокращает процесс развертывания приложений и сопровождения проектов (обнаруживает проблемы, возвращает к предыдущим версиям для их устранения), а также дает возможность разбить проект на маленькие независимые и удобные компоненты.

Как Docker облегчает работу с Selenium-сервером?

ИТ-специалисты, особенно инженеры по автоматизации, испытывают некоторые трудности при работе с Selenium. Docker помогает решить следующие из них:

  1. Для устранения ошибок Selenium-тестов на сервер не нужно инсталлировать разные браузеры или несколько версий одного браузера.
  2. При запуске установленного веб-браузера место на диске не заполнится содержимым кеша или временными файлами.
  3. Можно параллельно запустить тесты в разных программах, и окна не начнут конкурировать за фокус, несрабатывающие события и т.д.
  4. Изменение настроек браузера никак не повлияет на ранее работавшие тесты, а тем более не приведет к их падению.

В этой статье мы обсудили, что достойной альтернативой Selenium является Selenoid – инструмент, с помощью которого также можно быстрее и проще запускать браузеры в Docker-контейнерах.

Главная концепция Selenoid состоит в том, чтобы запускать для каждой Selenium-сессии новый контейнер и останавливать его после окончания сессии, причем количество разных версий браузеров и время запуска не ограничены.

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

Преимущества Ansible

Ansible – простой инструмент для написания сценариев автоматизации.

Ansible позволяет решать следующие задачи:

  • Устанавливать, удалять и настраивать программное обеспечение;
  • Управлять пользовательскими ключами и паролями;
  • Создавать и удалять пользователей;
  • Запускать скрипты, тесты;
  • Создавать и удалять контейнеры, виртуальные машины.

Ключевые преимущества решения:

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

Как Ansible позволяет автоматизировать работу с Docker

Ansible предлагает удобное решение для автоматизации работы с Docker. Используя Ansible для автоматизации создания контейнеров и развертывания приложений, вы получаете следующие преимущества:

Гибкость

Модули Playbooks, которые применяются для выполнения сценариев в Ansible, могут использоваться на разных платформах. Если вы создаете контейнер, используя текстовый файл Dockerfile, то открыть свое приложение сможете только в Docker-контейнере. В то время как Ansible Playbook позволяет воспроизводить приложение в любой среде (Docker, Vagrant, в облаке и т. д.).

Контролируемость

Сценарии Ansible Playbooks легко повторять и контролировать. Изолированность контейнеров не избавляет ИТ-специалистов от необходимости понимать, как устроен контейнер, отслеживать потенциальные уязвимости и вносить изменения, если это потребуется.

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

Универсальность

Ansible помогает управлять самим контейнером и всей средой, в которой он функционирует. В случае с Docker необходимо запускать хосты, настраивать и координировать работу облачных инфраструктур или отдельных машин, объединять в систему.

Резюмируя

Эффективным видится следующее применение решений: Ansible выполняет настройку всего, что находится вне контейнеров, а Docker используется для виртуализации отдельных приложений. Объединив обе технологии, QA-специалисты могут значительно упростить себе жизнь при работе в любой CI-среде.

Узнайте, нужна ли автоматизаци тестирования для вашего программного продукта на бесплатной консультации со специалистами a1qa. 

Поделиться статьей: