Модуль 8 · Урок 29

API inventory, OpenAPI contract і operations

API testing починається не з випадкового request, а з контрольованої surface: version/build, servers, paths, operations, parameters, bodies, responses, media types і security requirements.

OpenAPI 3.2OperationsParametersResponses

Зафіксуйте 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.

SurfaceServer/base URL, paths, operations та callbacks/webhooks, якщо вони входять у scope.
InputsPath/query/header/cookie parameters, serialization, requestBody media types і schemas.
OutputsStatus-specific responses, headers, media types, schemas, links і error contracts.

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 elementQA питання
ParameterLocation, required, style/explode, schema, allowed/unknown/duplicate values?
Request bodyRequired? Який media type, schema, encoding і size limit?
ResponseЯкі statuses/headers/content описані для кожного outcome?
SecurityGlobal чи 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.

Офіційні джерела

Практична перевірка · урок 29 з 39

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що треба frozen перед API test run?
2. Що утворює OpenAPI operation?
3. Чи завжди operationId є protocol oracle?