<style>.lazy{display:none}</style>Что такое непрерывное тестирование?

Что такое непрерывное тестирование?

Перевод статьи «What is Continuous Testing?».

Тестирование имеет огромное значение для жизненного цикла разработки программного обеспечения (SDLC – Software Development Life Cycle). Важно включать этот процесс в каждый этап SDLC, чтобы обеспечить более быструю обратную связь и высокое качество выпускаемых продуктов. Автоматизация тестирования может дать отличные результаты, если ее правильно реализовать и эффективно использовать. Правильный подход — непрерывное тестирование.

непрерывное тестирование в CI/CD

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

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

Непрерывное тестирование в жизненном цикле разработки ПО

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

Непрерывное тестирование помогает избежать таких проблем, предоставляя обратную связь сразу после попадания нового кода в репозиторий. Его основная цель — автоматизировать тестирование на всех этапах жизненного цикла разработки ПО, тестировать как можно чаще и быстрее получать обратную связь по сборкам. Непрерывное тестирование помогает нам выявлять и устранять проблемы на ранних стадиях, облегчая переход к следующему этапу разработки.

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

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

Пример реализации непрерывного тестирования

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

CI CD пайплайн

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

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

После успешной проверки кода запускаются следующие тесты в dev-окружении: модульные, интеграционные, системные и end-to-end тесты. Если какой-то из них провалится, конвейер остановится, и разработчику, который отправлял коммит, нужно будет исправить ошибки.

Когда все вышеперечисленные тесты успешно пройдены, билд устанавливается дальше на площадку QA, где запускаются end-to-end автотесты для проведения регресса. Если они также пройдены успешно, QA начинает ручное исследовательское тестирование, чтобы удостовериться в отсутствии критичных багов. Затем, QA ставит свой апрув и билд устанавливается дальше на окружение заказчика, где уже другая команда тестировщиков проводит пользовательское приемочное тестирование (User Acceptance Testing, UAT).

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

Зачем нам непрерывное тестирование?

Непрерывное тестирование стало необходимостью в жизненном цикле разработки. Это уже не просто полезная практика, а обязательное условие. Рассмотрим следующие аргументы, демонстрирующие важность непрерывного тестирования:

  1. В современном быстро меняющемся мире также часто меняются и требования. С каждым их изменением необходимо изменять и код, что представляет собой определенные риски – будет ли обновленный код работать так, как ожидается, и повлияют ли изменения на существующий функционал. Непрерывное тестирование помогает нам справиться с обоими рисками. Оно позволяет создать автоматизированный конвейер, выполняющий модульные, интеграционные и регрессионные тесты.
  2. Непрерывная интеграция (Continuous Integration) стала популярной с появлением agile-разработки. В agile разработчики стараются как можно чаще мержить свой код в главную ветку, для более частых релизов. Непрерывное тестирование играет здесь ключевую роль. Перед тем, как код попадет в ветку, он проходит автоматическую проверку. Если тесты провалятся, код не мержится, и выдается сигнал об ошибке.
  3. Благодаря непрерывному тестированию, мы намного лучше понимаем готов ли билд к релизу на проде.
  4. Снижение человеческого фактора: автоматический прогон регрессионных тестов помогает сократить пропуск багов.

Преимущества непрерывного тестирования

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

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

Виды непрерывного тестирования

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

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

Регрессионные тесты являются наиболее распространенными. Они проверяют, не нарушил ли новый или модифицированный код работу приложения.

End-to-end тесты добавляются для проверки работы продукта в целом. Цель – убедиться, что программа функционирует правильно от начала и до конца на всех этапах.

Облачные платформы и непрерывное тестирование

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

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

Облачные сервисы могут предоставить доступ ко всем нужным устройствам для проведения такого тестирования.

Заключение

Качество является важнейшим аспектом разработки программного обеспечения, и его необходимо обеспечивать на каждом этапе процесса. Непрерывное тестирование может помочь нам достичь этой цели, внедряя тестирование на каждом этапе жизненного цикла разработки.

Для обеспечения готовности каждого разработанного функционала к релизу, необходимо оперативно получать обратную связь по принципу быстрого выявления ошибок (fail-fast strategy). В автоматизированных пайплайнах используются различные виды тестирования, что позволяет реализовать непрерывное тестирование на всех этапах разработки.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *