TGViewer
Про Мир IT Про Мир IT @pro_mir_it · 1.3K subscribers
Post #329 587
Бывало ли у вас так, вы начинаете регресс и выясняется, что одна из систем вдруг не работает? И это блокирует всю систему и блочит регресс? Оказывается одна из систем исправила один небольшой баг и это поломало контракт. И к примеру, встала очередь в кафка. 

Такое может случиться и на релизе.

В моей практике такое бывало. 

⚠️ Это нас приводит к важности контрактного тестирования, как одного из гейтов релизного пайплайна.

👇👇👇👇👇👇
Контрактное тестирование - это когда команда ведет разработку так, чтобы такие изменения ловились до релиза, автоматически в ci/cd.

А Pact - один из самых популярных способов это организовать.
Суть простая:

1️⃣ Потребитель фиксирует ожидания

Потребитель (consumer) - тот, кто вызывает API. Для простоты в моей истории это будет фронт. 
Он говорит: "когда я делаю вот этот запрос, я ожидаю вот такой ответ: такие поля, такие типы данных, такая структура".

Фронтендер разрабатывая фичу пишет небольшой контрактный тест. Разработав функционал он запускает тест используя mock бэка. Если тест проходит успешно мы получаем артефакт: pact-файл в JSON формате. Это и есть наш контракт. Файл кладется в хранилище контрактов (может быть просто каталог в репозитории)

2️⃣ Бэк проверяет, что не сломал ожидания

Дальше провайдер (provider) - в моей истории это будет бэк - в пайплайн своего деплоя добавляет этап верификации контрактов. На этом шаге CI берётся этот pact-файл, поднимаются эндпоинты новой сборки и проверяется контракт.

Если не совпадает - сборка не проходит дальше. Анализируем -> исправляем -> пробуем снова собрать релиз.
Это дает нам достаточно надёжный Gate ⛩не пропустить в релиз критичный баг.

🤔 Где тут QA? Спросите вы.

Сам контрактный тест пишут как правило dev’ы.
Но QA очень помогает, когда:

👉 выбирает что именно контрактовать (мы не проверяем всё подряд!)

👉 задаёт строгость (какие проверки must-have, что критично?)

👉 следит, чтобы контракт не был "ни о чём" или наоборот - не был избыточным

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

Но если у вас на проекте периодически встречаются ситуации, как та что описана вначале поста, то это прям повод задуматься.

Если фронт и бэк релизятся отдельно и API часто меняется - Pact обычно окупается. 
При интеграциях почти всегда must-have.

Но если у вас пока проект не большой, всё выкатывается вместе и почти не меняется - можно не усложнять. 🫡

Напишите в комментариях у вас есть контрактное тестирование? Используете pact или другой подход?

🌐 Сайт | 💼 LinkedIn | 📘 Курс по Postman
  • ❤ 6
More from @pro_mir_it
  1. Sep 14, 2026Меня недавно непонятно за что заблокировали в телеграмме. 🤷🏻‍♂️ Подал апелляцию в тот же…
  2. Aug 12, 2026Всем привет! 👋 Выпал из блогерской деятельности. Накопилась усталость. Много работы. В то…
  3. Jun 8, 2026Сегодня с ребятами кто у меня на "QA спринте" прошел вебинар. На моем примере рассмотрели…
  4. Jun 8, 2026Чем ИИ помогает тестировщику? Самое главное, на что я бы обратил внимание, - автоматизация…
  5. Jun 4, 2026На работе нам выдали корпоративного Клода. 😏 Наверное с год назад у меня была подписка на…
  6. May 28, 2026Всем привет! Первый момент, который я хочу обязательно подсветить:Нельзя просто написать в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →