На протяжении последнего десятилетия компании из разных индустрий реализовывали методологии DevOps и Agile, чтобы занимать прочные конкурентные позиции.
Сейчас это стандартная практика, и все внимание с внедрения DevOps смещается на усовершенствование этого подхода, чтобы обеспечить непрерывную доставку стабильного ПО. Эта цель неизбежно влечет за собой применение автоматизации тестирования в процессах CI/CD.
В этой статье мы рассмотрим методы DevOps, а также обсудим, что нужно знать о непрерывном тестировании и как оно соотносится с автоматизацией.
Что выбрать: каскадную модель (Waterfall) или гибридную
Не так давно процесс разработки ИТ-решений полностью основывался на классической каскадной, или водопадной, модели, которая подразумевает проведение тестирования после того, как завершается фаза разработки.
Давайте рассмотрим пример, после которого станет понятно, почему это не всегда работает.
Представьте, что вы разрабатываете огромное биллинговое решение, в котором будет как минимум тысяча подсистем. Каждый месяц вы планируете выпускать новую версию продукта на рынок. Само собой, нужно будет протестировать систему, чтобы убедиться, что все работает без сбоев.
Теперь представьте, что вы добавили новую функциональность неделю назад. Это означает, что программный продукт должен быть протестирован полностью, а это может занять несколько недель, месяцев или даже больше.
Подобные примеры показывают, что в настоящее время без внедрения таких важных подходов, как DevOps и Agile, сделать процессы разработки более быстрыми, точными и управляемыми практически нереально.
Согласно отчету World Quality Report (WQR)
Гибридный подход позволяет проектному офису улучшить результаты долгосрочных проектов и эффективнее управлять рисками, справляясь с неопределенностью.
Ориентация на DevOps-методологию
Исследовательская и консалтинговая компания Gartner определяет DevOps как бизнес-ориентированный подход для разработки решений с использованием Agile-методов, совместной работы команд и автоматизации тестирования.
DevOps состоит из четырех основных процессов:
- непрерывной доставки (continuous delivery);
- непрерывного тестирования (continuous testing);
- непрерывной интеграции (continuous integration);
- непрерывного мониторинга (continuous monitoring).
Основная задача в среде DevOps — быстрее выпускать высококачественные приложения. В связи с этим сейчас очень популярна тенденция автоматизировать по максимуму на всех этапах CI/CD-процесса.
Это подтверждает отчет международной исследовательской и консалтинговой компании IDC «The Journey to Enterprise-Scale DevOps: Becoming DevOps Determined». Более 25% организаций, реализующих эту методологию, поддерживают данную тенденцию (статистика основана на недавнем исследовании 420 крупных европейских предприятий).
Чтобы получить как можно больше выгоды от практик DevOps, организациям стоит плавно интегрировать автоматизацию тестирования в свой CI/CD-процесс и автоматизировать разумно. Это один из немногих способов гарантировать, что выход продуктов будет проходить быстро, а качество от этого не станет хуже.
Преимущества, которые компании в этом случае получают, разнообразны — это снижение затрат на поддержку и обновление, стандартизация процессов, объединение изолированных команд (разработчиков, QA-экспертов и специалистов по информационно-технологическому обслуживанию) и многое другое.
Что нужно знать о непрерывном тестировании
Теперь давайте подробнее рассмотрим те методы DevOps, которые мы считаем одними из самых значимых.
- непрерывная доставка — это практика, обеспечивающая сокращение циклов разработки, снижение рисков и затрат на выпуск и внесение изменений в программное обеспечение. Осуществление непрерывной доставки невозможно без непрерывного тестирования;
- непрерывное тестирование подразумевает проведение частых и тщательных проверок, направленных на снижение бизнес-рисков на всех этапах жизненного цикла разработки системы. Оно зависит от автоматизации, но это два совершенно разных понятия. Чтобы практика непрерывного тестирования улучшила общее качество продукта, нужно заложить основы для его поддержки: обеспечить качество кода; убедиться, что функциональность программного продукта работает корректно; удостовериться, что потребности пользователей удовлетворены и др. Важно понимать, что автоматизация не приводит к непрерывности самого тестирования, но она помогает оценить и снизить риски. Непрерывное тестирование обеспечивает непрерывную доставку приложения на рынок ввиду того, что внесенные изменения могут быть развернуты в любой момент;
- непрерывный мониторинг нужен, чтобы оценить качество программного обеспечения в процессе его использования пользователями.
Собирая, анализируя логи и метрики в режиме реального времени, можно понять, как изменения и обновления приложения влияют на качество программного продукта. Благодаря непрерывному мониторингу вы можете контролировать уровень предоставления сервисов, снижать риски, находить источники проблем и решать их.
Подводя итог
Автоматизация тестирования играет одну из главных ролей в процессе разработки программных продуктов, позволяя быстро получить обратную связь от конечных пользователей и улучшить взаимодействие между проектными командами.
Грамотное внедрение решения по автоматизации поможет улучшить практики DevOps в вашей компании и приведет к достижению нужных бизнес-целей.
Автор статьи — руководитель департамента по автоматизации и тестированию производительности a1qa.