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

DevOps - это объединение практик разработки и эксплуатации для разработки и доставки программного обеспечения.

Тестировщики, участвующие в модели доставки DevOps, начинают задавать такие вопросы, как:

  • Какое место занимает тестирование в модели DevOps?
  • Чем тестирование и контроль качества в DevOps отличается от тестирования в Agile-моделях и каскадных моделях?
  • Какие дополнительные навыки я должен знать как QA?

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

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

Как тестирование эволюционировало от водопада к гибкой методологии и к DevOps?

Модель водопада

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

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



Точно так же на поставку программного обеспечения уходило много времени. Отдельная операционная группа отвечала за выпуск программного обеспечения в производство, что, в лучшем случае, происходило каждые несколько месяцев. Между командой Ops и командой разработчиков не было или был низкий уровень общения / сотрудничества.

Гибкая модель

Гибкая модель привела к сдвигу в пространстве разработки и тестирования, а также в частоте выпуска. Программное обеспечение разрабатывалось итеративно и поэтапно. Scrum, который является методологией Agile-модели доставки, быстро стал очень популярным.

Усилия по разработке были разбиты на серию коротких итераций, обычно продолжительностью 2–4 недели. Каждая итерация создаст потенциально готовое к поставке программное обеспечение, добавляя новые или улучшая существующие функции.

Тестировщики стали частью команды разработчиков, и тестирование стало параллельным делом с разработкой программного обеспечения, а не этапом в конце SDLC. Тестирование стало общей ответственностью, а качество принадлежало команде разработчиков.

Модель Agile объединила методы разработки и тестирования и проложила путь для более быстрой доставки программного обеспечения, однако фактическое развертывание в производственной среде по-прежнему проводилось отдельной командой TechOps.

Хотя команда TechOps имела знания о серверах, сетях и развертывании, они обычно не обращали внимания на детали каждого выпуска. Обратная связь с командой разработчиков была медленной. Если в выпуске существует ошибка, команде разработчиков обычно требуется несколько часов, чтобы узнать о проблеме.

Модель DevOps

DevOps продвигает Agile-модель на шаг вперед, приближая действия по выпуску и развертыванию к задачам разработки и тестирования. Это означает, что гибкая команда сама по себе отвечает за разработку, тестирование и выпуск создаваемого программного обеспечения.

Стратегия тестирования DevOps

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

Как тестировщики, мы также должны участвовать в операционном тестировании, тестировании производительности, базовом тестировании безопасности, а также иметь возможность отслеживать и анализировать производственные данные и журналы.

Дэн Эшби отличный пост о тестировании в DevOps, в котором он описывает

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

Действительно, тестирование может и должно происходить на каждом этапе модели DevOps. в Сообщение о стратегии Agile Test , мы описали, как тестирование вписывается в модель Agile.

Стратегия тестирования DevOps может расширить это, добавив следующие разделы:

Автоматизация тестирования и непрерывное тестирование в DevOps

Выбор инструментов и технологий становится все более важным в модели DevOps. Выбор инструментов позволяет организации быстро доставлять приложения и услуги.

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

Помимо автоматических функциональных тестов, у нас также должен быть набор тестов производительности, а также тестов безопасности / устойчивости в конвейере доставки.

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

Тестирование в производстве

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

Мы можем начать с анализа тенденций в A / B или многовариантных тестах. Мы также можем отслеживать серверы на предмет любого странного поведения, такого как утечки памяти, высокая загрузка ЦП и т. Д.

Влияние DevOps на тестирование

Как все это изменило роль тестировщиков и тестировщиков в DevOps?

Теперь ожидается, что тестировщики будут обладать как минимум следующими знаниями и навыками, чтобы иметь возможность эффективно выполнять действия по тестированию.

  • Базовые знания в области сетевых технологий
  • Базовые сценарии Unix / Shell, например Баш, Питон
  • Непрерывная интеграция / непрерывная доставка, например Дженкинс,
  • Инструменты тестирования производительности, такие как JMeter или Gatling.
  • Готов к эксплуатации и тестированию на устойчивость
  • Знание контейнеров, Docker, Kubernetes
  • Запросы к инструментам мониторинга, таким как Splunk
  • Облачные сервисы, например AWS, Azure