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

12 апреля 2019
Дата публикации
Docker и Ansible: обзор инструментов для автоматизации тестирования
  • Тестирование ПО
  • Автоматизация тестирования
Согласно последнему изданию World Quality Report, 99% ИТ-руководителей и менеджеров используют принципы DevOps при развертывании своих приложений.

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

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

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

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

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

Используя контейнеризацию, оно превращается в легковесный инструмент, который позволяет:
  • Упаковать программный продукт в контейнер;
  • Перенести приложение на любой сервер, где есть Docker, и быстро запустить его.
Контейнер – один из ключевых способов изолированного запуска ОС с подключенной файловой системой из образа.

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


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

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

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

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

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

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

ИТ-специалисты, особенно инженеры по автоматизации, испытывают некоторые трудности при работе с Selenium. Docker помогает решить следующие из них:
  1. Для устранения ошибок Selenium-тестов на сервер не нужно инсталлировать разные браузеры или несколько версий одного браузера.
  2. При запуске установленного веб-браузера место на диске не заполнится содержимым кеша или временными файлами.
  3. Можно параллельно запустить тесты в разных программах, и окна не начнут конкурировать за фокус, несрабатывающие события и т.д.
  4. Изменение настроек браузера никак не повлияет на ранее работавшие тесты, а тем более не приведет к их падению.
Главная концепция 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-среде.

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