Согласно последнему изданию World Quality Report, 99% ИТ-руководителей и менеджеров используют принципы DevOps при развертывании своих приложений. 
 
	 Одним из основных инструментов DevOps является автоматизация разработки, тестирования, доставки изменений. Благодаря ей тесты выполняются циклично и непрерывно; производительность специалистов увеличивается в несколько раз; автоматизируются длинные последовательности и операции, которые требуют тяжелых вычислений. 
 
	 В результате грамотного внедрения автоматизации качество программного продукта увеличивается, а цикл разработки сокращается. При этом универсальных инструментов автоматизации не существует. Многое зависит от продукта, особенностей ИТ-решения, ваших ожиданий, временных и бюджетных рамок. 
 
	 В сегодняшней статье мы поговорим о двух инструментах для 
автоматизации тестирования, которые значительно упрощают работу QA-инженеров, – Docker и Ansible.
Ключевые термины
	 Docker - это программное обеспечение для автоматизации развертывания и управления приложениями в средах с поддержкой контейнеризации. 
 
	 Используя контейнеризацию, оно превращается в легковесный инструмент, который позволяет:
	- Упаковать программный продукт в контейнер;
- Перенести приложение на любой сервер, где есть Docker, и быстро запустить его.
 Контейнер – один из ключевых способов изолированного запуска ОС с подключенной файловой системой из образа. 
 
 Selenium – инструмент для автоматизации выполнения тестов в браузерах. 
 
 
 Ansible - это платформа удаленного управления конфигурациями ПО, которая упрощает развертывание приложений. 
 
	 Ansible приводит серверы удаленного доступа в нужное состояние, а администратор только описывает при помощи сценариев, как его достичь. Поэтому быстро переконфигурировать систему очень просто – достаточно внести пару строк в сценарий.
Преимущества docker 
	 Инструмент Docker применяется для развертывания и изоляции приложений в среде виртуализации, реализации микросервисов. 
 
 Достоинства решения:
	
		- Экономит ресурс. Контейнеризация Docker сокращает расходы и время, позволяет запускать несколько изолированных сред на одном хосте.
- Дает возможность развернуть изолированное тестовое окружение, не прерывая работу других.
- Может хранить настройки среды в системе контроля версий, что позволяет управлять их версионностью.
- Контейнер защищает продукт от нюансов конфигурации веб-серверов.
- Стандартизирует проводимые операции.
 
	 Из-за доставки в небольших контейнерах Docker упрощает и сокращает процесс развертывания приложений и сопровождения проектов (обнаруживает проблемы, возвращает к предыдущим версиям для их устранения), а также дает возможность разбить проект на маленькие независимые и удобные компоненты.
Как docker облегчает работу с selenium-сервером?
	 ИТ-специалисты, особенно инженеры по автоматизации, испытывают некоторые трудности при работе с Selenium. Docker помогает решить следующие из них:
	- Для устранения ошибок Selenium-тестов на сервер не нужно инсталлировать разные браузеры или несколько версий одного браузера.
- При запуске установленного веб-браузера место на диске не заполнится содержимым кеша или временными файлами.
- Можно параллельно запустить тесты в разных программах, и окна не начнут конкурировать за фокус, несрабатывающие события и т.д.
- Изменение настроек браузера никак не повлияет на ранее работавшие тесты, а тем более не приведет к их падению.
	 Главная концепция 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-среде. 
 
	 Узнайте, нужна ли автоматизация тестирования для вашего программного продукта 
на бесплатной консультации со специалистами компании «Точка качества».