Release-Gate Pack (Postman) — API
Release-Gate Pack • Postman • API

Делаем из Postman-коллекции → Release-Gate

Что это значит?

Это одна Postman-коллекция, просто она организована как release-gate - внутри 3 папки-слоя. Каждый слой отвечает на свой вопрос, поэтому они разделены.

Важно

Чаще всего в слоях используются те же API-ручки, но проверки разные. Например, POST /orders есть во всех слоях:

  • Smoke - “создаётся ли вообще и есть ли доступ”
  • Contract - “не сломали ли поля/типы/пагинацию”
  • Negative/Edge - “не развалится ли прод от дублей/ретраев/кеша”

Зачем 3 слоя:
1) Smoke по рискам - быстрый go/no-go за 5–10 минут (можно продолжать работу или стопаем и разбираемся).
2) Contract checks - защита от “тихо сломали контракт” (поля, типы, формат, мета).
3) Negative + edge - ловит типовые факапы интеграций (auth, idempotency, retries, pagination, consistency).

Как пользоваться в реальной работе:
• Перед тем как углубляться - запускаешь 00_Smoke_Risks (санити-чек: можно ли брать в работу и не горит ли критичное).
• Если Smoke зелёный - идёшь в 10_Contract (когда трогали формат ответа, фильтры, пагинацию, права).
• Дальше - 20_Negative_Edge: запускаешь точечно по рискам (дубли, ретраи/таймауты, кеш/консистентность, ACL).
• После фикса от dev - снова Smoke (5 минут), чтобы убедиться, что исправление не сломало базу.

Smoke - критичные сценарии
Contract - инварианты и схема
Negative - ошибки и отказоустойчивость
Edge - граничные состояния

1) Скелет коллекции + naming

Базовая структура. Можно адаптировать под свой процесс.

Ниже пример базовой структуры коллекции. Это не “единственно правильный вариант”. Вы можете использовать её как есть, расширить или сократить - главное, чтобы структура была понятной и единообразной.

Naming тоже приведён для примера. Можно использовать свой стиль - важно, чтобы он был консистентным внутри всей команды.

Структура папок
00_Smoke_Risks
10_Contract
20_Negative_Edge
90_Utilities (Auth / Seed / Cleanup)
Naming convention
<Domain>_<Action>_<Expected>

Order_Create_201
Order_Get_200
Order_Create_401
Order_List_Pagination_OK

2) Risk-Smoke Worksheet

Пример проверок для слоя Smoke

Это примеры того, какие риски обычно попадают в слой Smoke. Под вашу фичу список может отличаться. Смысл слоя - быстро проверить критичное перед углублённым тестированием.

Риск API-точка Проверка Критерий
Auth деграднул POST /login token + role/scopes + exp валиден нет token → NO-GO
Контракт сломан GET /orders/{id} обязательные поля + типы + enum инвариант нарушен → NO-GO
ACL GET /admin user=403, admin=200 утечка доступа → NO-GO
Идемпотентность POST /orders повтор с тем же ключом не создаёт дубль дубликат → NO-GO
Как использовать
  • Перед началом - запускаете Smoke, чтобы понять, можно ли безопасно продолжать.
  • Если затронут контракт - проверяете слой Contract.
  • Если есть риск дублей, ретраев, лимитов - подключаете Negative / Edge.
  • После фикса от разработчика - снова Smoke (быстрый ре-чек).

3) Base Tests Snippets

Примеры тестов. Под ваш API проверки могут отличаться.

Ниже приведены примеры тестов на актуальном синтаксисе Postman (2026). Это не универсальные проверки - адаптируйте их под свой контракт.

// Contract: required + types + enum
pm.test("Contract: required fields", () => {
  const j = pm.response.json();

  pm.expect(j).to.be.an("object");
  pm.expect(j.id).to.be.a("string");
  pm.expect(j.status).to.be.oneOf(["created","paid","shipped","canceled"]);
  pm.expect(j.total).to.be.a("number").and.to.be.at.least(0);
});

// Correlation id
pm.test("Correlation id exists", () => {
  const id = pm.response.headers.get("x-correlation-id");
  pm.expect(id).to.exist;
});

// Pagination sanity
pm.test("Pagination shape", () => {
  const j = pm.response.json();
  pm.expect(j.items).to.be.an("array");
  pm.expect(j.meta.limit).to.be.a("number");
});

4) Negative & Edge Catalog

Примеры направлений проверок

Это примеры сценариев, которые часто становятся причиной прод-инцидентов. Используйте как чек-лист и расширяйте под свой домен.

  • Expired / invalid token, refresh flow
  • Idempotency (повтор POST без дублей)
  • Pagination: empty pages, max limit, cursor loop
  • Retries / 429 / 503
  • Read-after-write, cache consistency
  • Boundary values: 0 / max / null / спецсимволы
  • ACL leaks (403 vs 404)
  • Money invariants (total ≥ 0, сумма позиций)

Если хотите глубже разобраться в работе с Postman - в моём курсе есть подробные разборы, практические задания и реальные кейсы:

В Telegram-канале делюсь практикой и полезными материалами:

Скопировано ✅