Автор: Эди Стоукс (Ady Stokes) Оригинал статьи Перевод: Ольга Алифанова
Введение
Тестировщики, слыша фразу «пайплайн CI/CD», обычно реагируют двумя способами. Те, кто тесно работал с пайплайнами или занимался автоматизацией, видят в этом возможность. Однако те, кто от автоматизации далек, часто пугается. Я видел, как люди говорили или писали что-то вроде:
- Я не очень в этом разбираюсь, это какая-то автоматизация.
- Я ручной тестировщик и не участвую в пайплайнах.
- Я не пишу код, мне не нужно об этом знать.
- Этим занимаются специально обученные люди – это не ко мне.
Пайплайны CI/CD – это, безусловно, часть автоматизации, но это не только и не столько это. В этой статье я расскажу, что это такое, почему тестировщикам надо понимать, как это работает, и почему это важно для них. Начнем с начала – разберемся, что это.
Что такое CI и CD?
Непрерывная интеграция (CI)
Это процесс, запускающий автоматизированные проверки при каждом коммите изменений в репозиторий кода. Как правило, при использовании CI разработчики вносят мелкие изменения и коммитят чаще. В этом случае они получают быструю обратную связь, что их изменение невзначай не сломало какой-то ключевой компонент.
Непрерывная поставка/деплой (CD)
Это два связанных, но разных метода:
- При непрерывной поставке команда создает, тестирует и поставляет код во внутренние окружения – разработки или тестирования. Непрерывная поставка чаще используется организациями, не связанными ограничениями вроде законодательных – в финансовых компаниях вы ее, скорее всего, не встретите.
- Непрерывный деплой – следующий шаг процесса. Код, прошедший все тесты, отправляется на прод.
Если кратко, интеграция – часть процесса разработки, а поставка осуществляется после того, как код готов.
Что такое пайплайны CI/CD?
Определение пайплайнов CI/CD
Каждая организация, применяющая пайплайн CI/CD, определяет его по-разному. Вот ряд кратких определений от ведущих платформ CI/CD:
- Пайплайн CI/CD – это набор автоматизированных шагов, помогающих командам быстрее, безопаснее и надежнее поставлять код – CircleCI.
- Пайплайн CI/CD – это автоматизированный процесс, использующийся командами разработки ПО для упрощения создания, тестирования и деплоя приложений – GitLab.
- Пайплайн CI/CD автоматизирует процесс поставки ПО. Пайплайн собирает код, прогоняет тесты (CI) и безопасно деплоит новую версию приложения (CD) – Semaphore.
Преимущества
Автоматизация переезда кода из одного окружения в другое устраняет нужду в ручном вмешательстве в процесс разработки. Но это лишь один аспект. Ниже – прочие преимущества, о которых сообщают компании.
- Более быстрые релизы, сокращается время релиза на прод. Сборка, проверка и деплой кода занимают меньше времени.
- Выше качество кода. Так как код тестируется сразу после коммита, все недоработки и ошибки быстро обнаруживаются.
- Быстрая обратная связь. Похоже на предыдущий пункт – разработчики немедленно получают обратную связь, но так как код быстрее попадает на прод, обратная связь от пользователей или клиентов тоже приходит быстрее.
- Снижено время простоя. Срочные исправления быстрее попадают на прод, что снижает время простоя, а также упрощает восстановление после падений и разрешение проблем.
- Поддержка DevOps. Компании, объединяющие разработку и инженерию, чаще используют CI/CD.
Это не исчерпывающий список, но он покрывает основные преимущества пайплайнов для организаций.
Типы тестов, которые обычно запускаются в пайплайнах CI/CD

Визуализация из статьи Tech Target «CI / CD pipelines explained: Everything you need to know»
Пайплайны могут включать различные типы тестов. Вот ряд примеров.
- Юнит-тесты. Эти тесты сконцентрированы на отдельных функциях или методах и валидируют основные блоки кода. Как правило, это самые быстрые автоматизированные тесты. Они помогают проверить логику и повысить уверенность разработчиков при рефакторинге базы кода.
- Регрессионные тесты. Эти тесты сконцентрированы на последствиях изменений кода и обычно накапливаются со временем, проверяя основную функциональность. Они также могут включать тесты, созданные после обнаружения багов или проблем. Они повышают уверенность в релизах.
- Интеграционные тесты. Эти тесты проверяют, что модули или компоненты правильно работают вместе. Компоненты могут включать базы данных, API, микросервисы и т. д. эти тесты особенно хороши для выявления проблем с зависимостями или потоками данных.
- Тесты производительности. В зависимости от тестируемого приложения или системы, эти тесты могут изучать масштаб, время ответа, деградацию, и т. д. По сути они выявляют все, что может замедлить систему, и могут пригодиться для оптимизации производительности.
- Тесты API. В основном сконцентрированы на валидации логики ответов конечной точки, и могут также покрывать целостность данных. Важны, если используются микросервисы.
- Тесты безопасности. Автоматизированные тесты безопасности – хороший способ убедиться, что покрыты все очевидные вопросы безопасности. Автоматизированные тесты проникновения и сканеры уязвимостей не могут заменить опытного хакера, но позволяют человеку сконцентрироваться на наиболее важном тестировании. В некоторых областях они требуются законодательно.
- End-to-end тесты. Как правило, сконцентрированы на сценариях конечного пользователя, и это наиболее дорогие и нестабильные тесты. Несмотря на это, если они хорошо спроектированы, то добавляют уверенности, что все основные функциональности работают как следует. Их также можно рассматривать, как наивысшую форму развития интеграционных тестов – они смотрят на функциональность системы в целом.
Это не исчерпывающий список, и различные команды могут применять ряд этих тестов разными способами.
Если вы работаете в окружении, где используются пайплайны, вам важно понимать, что пайплайн покрывает и как он это делает, чтобы дополнить его и улучшить тестирование. Простое знание, что какая-то автоматизация у вас есть, очень далеко от понимания, в чем она заключается и что делает.
Почему пайплайны CI/CD важны для тестировщиков
Как можно видеть, пайплайнов CI/CD не стоит бояться. Если даже вы не специалист по автоматизации, то, как тестировщик, вы можете участвовать в пайплайне разнообразными способами. Вам нужно поддерживать эти практики и процессы, разобраться в них – в правильном окружении они очень полезны для тестирования. Ваше участие в тестах пайплайна не только повысит качество, но также упрочит вашу репутацию и ценность для команды.
Ниже – самые значимые преимущества для тестировщиков (и компаний, применяющих пайплайны CI/CD):
- Улучшенное исследовательское тестирование. Как все мы отлично знаем, автоматизированное тестирование имеет свои пределы. Хорошие практики CI/CD позволяют тестировщикам сконцентрироваться на исследовательском тестировании, тщательном изучении приложения или системы. Они могут посвятить себя сложным сценариям, которые нелегко автоматизировать.
- Характеристики качества системы / нефункциональное тестирование. Когда множество функциональных тестов автоматизировано, тестировщики могут сконцентрироваться на таких областях, как безопасность, производительность и доступность. Они могут вволю развернуться с критическим мышлениям, вгрызаясь в такие области, как тестируемость. Дают ли логирование мониторинг нужный уровень наблюдаемости, чтобы реагировать на проблемы? Качество системы можно улучшить множеством способов, если уделить этому время и внимание.
- Повышение качества тестов пайплайна при помощи ревью. Тестировщик, возможно, не пишет автоматизированные тесты сам, но он может провести их ревью и предложить новые. Возможно, нам не хватает критичных тестов, которые можно автоматизировать? Единообразно ли мы тестируем? Можно ли урезать раздутый набор тестов? Тестировщики могут объективно и с пользой поучаствовать в разработке набора автотестов, разобравшись, что у нас есть сейчас, и применив свои навыки, чтобы улучшить имеющееся.
Великие тестировщики, хорошо знающие, как работают системы и автоматизация, могут принести много пользы, проводя комплексные ревью – даже если не пишут код сами. Тестировщиков часто называют тем клеем, который держит команды, и мир CI/CD – не исключение.
Дополнительные ресурсы
|