Модуль 8 · Урок 29
API inventory, OpenAPI contract і operations
API testing починається не з випадкового request, а з контрольованої surface: version/build, servers, paths, operations, parameters, bodies, responses, media types і security requirements.
Зафіксуйте contract baseline
OpenAPI Description є machine-readable описом HTTP API, але не автоматично доводить implementation correctness. Збережіть exact document version/hash, environment/server variables, release build і owner. Порівнюйте implementation з frozen baseline, а не з docs, що змінилися під час run.
Operation — testable unit
Operation поєднує HTTP method із path template. `operationId`, tags і description допомагають навігації, але oracle походить зі semantics parameters/request body/responses/security. Path parameter завжди required; query serialization може перетворювати arrays/objects по-різному, тому «однаковий JSON у URL» не є універсальним правилом.
| Contract element | QA питання |
|---|---|
| Parameter | Location, required, style/explode, schema, allowed/unknown/duplicate values? |
| Request body | Required? Який media type, schema, encoding і size limit? |
| Response | Які statuses/headers/content описані для кожного outcome? |
| Security | Global чи operation override; AND/OR schemes/scopes? |
Examples не замінюють schemas
Example має відповідати schema/media type, але показує одну instance. Генеруйте partitions і boundaries зі constraints та business rules; окремо тестуйте undocumented implementation behavior. Contract gap — це finding про docs/spec, а не привід мовчки вигадати expected result.
Документація також версіонується
Deprecated operation без removal policy, orphan endpoint або live version поза inventory — ризик improper inventory management.
Практика
У `api-inventory.csv` зв’яжіть operation з owner/version/security/data classification. У `bookflow-openapi.yaml` і `contract-test-matrix.csv` знайдіть по одному позитивному, negative, boundary та contract-gap case для synthetic BookFlow.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.