Что это значит?
Это одна Postman-коллекция, просто она организована как release-gate -
внутри 3 папки-слоя. Каждый слой отвечает на свой вопрос, поэтому они разделены.
Чаще всего в слоях используются те же API-ручки, но проверки разные.
Например, POST /orders есть во всех слоях:
Зачем 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 минут), чтобы убедиться, что исправление не сломало базу.
Ниже пример базовой структуры коллекции. Это не “единственно правильный вариант”.
Вы можете использовать её как есть, расширить или сократить -
главное, чтобы структура была понятной и единообразной.
Naming тоже приведён для примера. Можно использовать свой стиль -
важно, чтобы он был консистентным внутри всей команды.
00_Smoke_Risks
10_Contract
20_Negative_Edge
90_Utilities (Auth / Seed / Cleanup) <Domain>_<Action>_<Expected>
Order_Create_201
Order_Get_200
Order_Create_401
Order_List_Pagination_OK Это примеры того, какие риски обычно попадают в слой 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 |
Ниже приведены примеры тестов на актуальном синтаксисе 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");
}); Это примеры сценариев, которые часто становятся причиной прод-инцидентов. Используйте как чек-лист и расширяйте под свой домен.
Если хотите глубже разобраться в работе с Postman - в моём курсе есть подробные разборы, практические задания и реальные кейсы:
В Telegram-канале делюсь практикой и полезными материалами: