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

Кто такие Devops

На первый взгляд может показаться что devops это команда сис-админов, но это правда лишь от части.  В команде обязательно должны быть сильные программисты. Поддержка сложной серверной инфраструктуры часто требует дополнительных программных слоев, чтобы автоматизировать рутинные процессы. Поэтому Devops инженер должен обладать хорошим знанием сетевых технологий + хороший уровень владения ЯП.

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

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

Тестирование в DevOps

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

Давайте снова возьмем в пример тестовое окружение. После автоматической дистрибуции, тестировщик должен удостовериться что сервер поднят с требуемыми характеристиками и что установленный софт работает. Например нам нужно определить что у сервера 8GB оперативной памяти и доступный FTP сервер. Это можно сделать мануально, подключившись к созданному серверу и запустив несколько консольных команд. Либо автоматизировать, обернув все эти команды в bash скрипт.

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

Навыки

Что нужно знать devops тестировщикам?

Работа с серверными инфраструктурами это работа с Linux. Нужно знать что такое Load Average, Cron и как собирать программы из исходного кода.

Популярные продукты в этой сфере. Это Chef, Zabbix, Docker,  Vagrant, Continuous Integration системы. Иметь опыт работы с этим ПО, актуальное требование.

Языки программирования. Если взять в пример Chef, то можно автоматизировать тестирование кукбуков на Ruby.