DevOps - это объединение практик разработки и эксплуатации для разработки и доставки программного обеспечения.
Тестировщики, участвующие в модели доставки DevOps, начинают задавать такие вопросы, как:
В этом посте обсуждаются инструменты, стратегии и практики, которые нам необходимо реализовать для эффективного тестирования в мире DevOps, включая автоматизацию и непрерывное тестирование в DevOps.
Как тестирование эволюционировало от водопада к гибкой методологии и к DevOps?
Практика тестирования и обеспечения качества значительно изменилась со времен водопада, Agile и теперь DevOps. В каскадной модели тестирование рассматривалось как этап жизненного цикла разработки программного обеспечения. Тестировщики и усилия по тестированию были очень разрозненными, тогда как тестировщики были частью группы тестирования и часто были отделены от команды разработчиков.
Тестеры владели стратегия тестирования и считались привратниками качества. Тестирование проводилось в основном вручную и обычно проводилось после того, как программное обеспечение было полностью разработано, но непосредственно перед выпуском в производство.
Точно так же на поставку программного обеспечения уходило много времени. Отдельная операционная группа отвечала за выпуск программного обеспечения в производство, что, в лучшем случае, происходило каждые несколько месяцев. Между командой Ops и командой разработчиков не было или был низкий уровень общения / сотрудничества.
Гибкая модель привела к сдвигу в пространстве разработки и тестирования, а также в частоте выпуска. Программное обеспечение разрабатывалось итеративно и поэтапно. Scrum, который является методологией Agile-модели доставки, быстро стал очень популярным.
Усилия по разработке были разбиты на серию коротких итераций, обычно продолжительностью 2–4 недели. Каждая итерация создаст потенциально готовое к поставке программное обеспечение, добавляя новые или улучшая существующие функции.
Тестировщики стали частью команды разработчиков, и тестирование стало параллельным делом с разработкой программного обеспечения, а не этапом в конце SDLC. Тестирование стало общей ответственностью, а качество принадлежало команде разработчиков.
Модель Agile объединила методы разработки и тестирования и проложила путь для более быстрой доставки программного обеспечения, однако фактическое развертывание в производственной среде по-прежнему проводилось отдельной командой TechOps.
Хотя команда TechOps имела знания о серверах, сетях и развертывании, они обычно не обращали внимания на детали каждого выпуска. Обратная связь с командой разработчиков была медленной. Если в выпуске существует ошибка, команде разработчиков обычно требуется несколько часов, чтобы узнать о проблеме.
DevOps продвигает Agile-модель на шаг вперед, приближая действия по выпуску и развертыванию к задачам разработки и тестирования. Это означает, что гибкая команда сама по себе отвечает за разработку, тестирование и выпуск создаваемого программного обеспечения.
Тестирование в DevOps охватывает весь жизненный цикл разработки и доставки программного обеспечения. Тестировщики больше не сосредотачиваются только на функциональном тестировании и проверке функций.
Как тестировщики, мы также должны участвовать в операционном тестировании, тестировании производительности, базовом тестировании безопасности, а также иметь возможность отслеживать и анализировать производственные данные и журналы.
Дэн Эшби отличный пост о тестировании в DevOps, в котором он описывает
Вы можете понять, почему люди не могут понять, какое место занимает тестирование в модели, в которой о нем вообще не упоминается. Для меня тестирование подходит для каждой отдельной точки этой модели.
Действительно, тестирование может и должно происходить на каждом этапе модели DevOps. в Сообщение о стратегии Agile Test , мы описали, как тестирование вписывается в модель Agile.
Стратегия тестирования DevOps может расширить это, добавив следующие разделы:
Выбор инструментов и технологий становится все более важным в модели DevOps. Выбор инструментов позволяет организации быстро доставлять приложения и услуги.
В DevOps уделяется больше внимания автоматическому тестированию, поскольку мы хотим создать культуру, в которой мы можем быстро и уверенно проталкивать код в системы.
Помимо автоматических функциональных тестов, у нас также должен быть набор тестов производительности, а также тестов безопасности / устойчивости в конвейере доставки.
Излишне говорить, что перед тем, как реализовать любой из вышеупомянутых автоматизированных тестов, в первую очередь необходимо построить автоматизированный конвейер сборки и доставки в инструменте непрерывной интеграции, таком как Jenkins.
Тестирование в производственной среде не обязательно означает выполнение ваших скриптов функционального тестирования / тестирования производительности в реальной системе, в которой пользователи используют приложение.
Мы можем начать с анализа тенденций в A / B или многовариантных тестах. Мы также можем отслеживать серверы на предмет любого странного поведения, такого как утечки памяти, высокая загрузка ЦП и т. Д.
Как все это изменило роль тестировщиков и тестировщиков в DevOps?
Теперь ожидается, что тестировщики будут обладать как минимум следующими знаниями и навыками, чтобы иметь возможность эффективно выполнять действия по тестированию.