Необходимость
Удовлетворение ожиданий потребителей и требований заказчиков является ключом к победе над конкурентами. Поскольку существует необходимость релиза качественных программных продуктов в сжатые сроки, внедрение Continuous Testing в компании является надежным способом обеспечить релиз продукта на рынок с нужным уровнем качества.
Определение Continuous Testing
Continuous Testing — подход к тестированию, при котором продукт оценивается и тестируется как можно раньше, и далее тестируется непрерывно, в течение всего процесса доставки — Continuous Delivery (CD).
Это позволяет разработчикам получать постоянный фидбек и исправлять свои ошибки перед релизом продукта, а не после, что намного дороже и сложнее. Внедрение такого подхода в стратегию тестирования ускоряет время доставки ПО клиенту и повышает общий уровень качества ПО.
Преимущества
Непрерывное тестирование приносит пользу:
- Более частые релизы: Код поступает на прод чаще и быстрее
- Эффективность командной работы: Улучшается коммуникация команд разработчиков, тестировщиков, и поддержки продукта.
- Ускорение тестирования: Выполнение параллельных тестов (в первую очередь производительности), что позволяет ускорить STLC-цикл
- Упрощается работа с багами: Обеспечивает выявление багов до релиза, что удешевляет стоимость продукта
- Снижение рисков для компании: Позволяет вовремя заметить и устранить назревающие проблемы
Из чего состоит непрерывное тестирование
Непрерывная интеграция
Непрерывная интеграция (Continuous integration, CI) позволяет вовремя проверить совместимость компонентов продукта. CI автоматически «собирает» код от команд, работающих над проектом, и помещает его в репозиторий. Неупорядоченная интеграция кода разных разработчиков в один проект может привести к накоплению неразобранных багов. И здесь может помочь непрерывное тестирование.
Непрерывная доставка
Непрерывная доставка (Continuous Delivery, CD) — это процесс, позволяющий проводить развертывание (деплой) всех изменений кода в сборке в тестовой среде или в staging-среде. CD является необходимым условием непрерывного тестирования, поскольку позволяет выпускать сборки в прод-окружение по мере необходимости.
Автоматизация
Непрерывное тестирование невозможно без масштабно внедренной автоматизации. Ручное тестирование трудоемко и требует много времени, а автоматизация позволяет экономить время и приоритизировать дефекты. Автоматизация прогона тестов при каждой новой интеграции кода позволяет находить баги раньше — и соответственно раньше их устранять. Если баги выявлены и устранены до того попадут на прод или клиенту на девайс, то компания экономит время и деньги — и все будут довольны.
Как проводится Continuous Testing
Непрерывное тестирование в идеале должно работать на каждом этапе CI/CD-пайплайна. Эффективность заметнее при тестировании последнего билда в изолированном окружении. Также практикуется создание тест-свитов на каждом этапе — коррекций кода, мерджей и релиза. Что позволяет сокращать время тестирования и не терять в качестве.
Best Practices
- Повышение уровня автоматизации: автоматизация позволяет увеличить на порядок скорость процессов и «охват» багов. Максимально доступная автоматизация жизненного цикла разработки поможет непрерывнее тестировать и быстрее выдавать релизы.
- Отслеживание ключевых метрик: Непрерывно отслеживать самые важные количественные показатели (метрики) тестирования, которые демонстрируют эффективность QA-процессов в целом.
- Поддерживать прозрачность коммуникации в командах: чтобы не допускать «изоляции» QA-процессов от остальных процессов, и QA-команд от разработчиков и стейкхолдеров. Активная прямая коммуникация — ключ к гармонии в любой компании, она необходима для эффективного непрерывного тестирования.
- Интеграция тестирования производительности в SDLC-цикл: Непрерывное тестирование производительности является важной составляющей непрерывного тестирования, поскольку оно позволяет постоянно контролировать скорость, надежность, респонсивность и стабильность приложения.
Инструменты Continuous Testing
Существуют инструменты и программные пакеты, позволяющие существенно ускорить и автоматизировать процесс непрерывного тестирования. Ниже приведены некоторые из них.
Travis CI
Travis CI — на GitHub, есть в hosted- и в локальном варианте.
Jenkins
Jenkins — наверное, самый популярный инструмент непрерывной интеграции (и тестирования), по крайней мере самый часто применяемый. Работает как через GUI-интерфейс, так и через консоль.
Katalon Studio
Katalon Studio представляет собой целую платформу автоматизированного тестирования Web UI, веб-сервисов, API и мобильных девайсов.
Selenium
Selenium — №1 в мире QA, применяется и для автоматизации непрерывного тестирования веб-приложений.