Вопрос от подписчика: «Как вы видите идеальный пайплайн автотестов интегрированных в CI/CD?»
Вопрос классный, по ответу сразу будет видно, кто реально гонял тесты в бою. Расскажу, как выглядит картина мечты в моей голове
1️⃣Свой стенд на каждую ветку
В идеале под каждую ветку поднимается отдельный изолированный стенд со своей базой, своей Kafka и всей нужной инфраструктурой
Так тесты разных веток не мешают друг другу, и ты проверяешь именно свои изменения
2️⃣Подмена интеграций через WireMock
Часть внешних сервисов неудобно дёргать по настоящему, поэтому их закрываем заглушками через WireMock
Это делает прогон стабильнее, и тесты не падают из за того, что чужой сервис лёг
3️⃣Правильный порядок прогона
Сначала прогоняются юнит тесты проекта, потому что они быстрые и ловят поломку раньше всех
Когда стенд готов и юниты прошли, триггерится отдельный пайплайн с репозиторием автотестов, а ссылки на стенд прокидываются через env файл
Дальше идут API тесты, а за ними UI на ключевые сценарии
4️⃣Отчёт и обратная связь
После прогона генерируется Allure отчёт, и в мессенджер летит уведомление с результатами
А ещё бот отписывается прямо в задачу, чтобы статус прогона и история проверок лежали там же, где и обсуждение тикета
Идеальный пайплайн — это изолированные стенды, честная подмена интеграций, правильный порядок прогона и понятная обратная связь в конце
Когда всё это собрано вместе, релизы перестают быть страшными, и ты наконец перестаёшь чинить CI в пятницу вечером
Вопрос классный, по ответу сразу будет видно, кто реально гонял тесты в бою. Расскажу, как выглядит картина мечты в моей голове
1️⃣Свой стенд на каждую ветку
В идеале под каждую ветку поднимается отдельный изолированный стенд со своей базой, своей Kafka и всей нужной инфраструктурой
Так тесты разных веток не мешают друг другу, и ты проверяешь именно свои изменения
2️⃣Подмена интеграций через WireMock
Часть внешних сервисов неудобно дёргать по настоящему, поэтому их закрываем заглушками через WireMock
Это делает прогон стабильнее, и тесты не падают из за того, что чужой сервис лёг
3️⃣Правильный порядок прогона
Сначала прогоняются юнит тесты проекта, потому что они быстрые и ловят поломку раньше всех
Когда стенд готов и юниты прошли, триггерится отдельный пайплайн с репозиторием автотестов, а ссылки на стенд прокидываются через env файл
Дальше идут API тесты, а за ними UI на ключевые сценарии
4️⃣Отчёт и обратная связь
После прогона генерируется Allure отчёт, и в мессенджер летит уведомление с результатами
А ещё бот отписывается прямо в задачу, чтобы статус прогона и история проверок лежали там же, где и обсуждение тикета
Идеальный пайплайн — это изолированные стенды, честная подмена интеграций, правильный порядок прогона и понятная обратная связь в конце
Когда всё это собрано вместе, релизы перестают быть страшными, и ты наконец перестаёшь чинить CI в пятницу вечером