intermediate

Documentation и contract testing

Защищайте consumers через reviewed docs, examples, schema checks, consumer-driven contracts, mocks и compatibility CI.

Durable API защищают consumers **точной документацией**, **рабочими примерами** и **автоматическими contract checks** — не надеждой, что команды читают Slack.

Сущности документации:

  • Quickstart с auth и первым успешным вызовом.
  • Каталог ошибок со стабильными codes.
  • Changelog с датами deprecation.
  • OpenAPI/GraphQL schema из того же артефакта, что валидирует CI.

Слои contract testing:

  • **Provider tests**: implementation соответствует опубликованной schema (response validation).
  • **Consumer-driven contracts** (Pact): ожидания consumer записаны; provider проверяет fixtures.
  • **Compatibility CI**: diff OpenAPI/proto в PR; fail на breaking без major version.
					// Supertest + schema assertion example
const res = await request(app).get('/orders/1').expect(200);
expect(res.body).toMatchSchema(orderSchema);
				

Mocks: из OpenAPI (Prism, MSW handlers) для параллельной разработки — обновляйте при смене spec.

На интервью: contract tests vs широкий E2E, владение контрактом в microservices, предотвращение spec drift.

Типовые ошибки: docs отстают от кода, examples не гоняются в CI, pact tests без обновлений, breaking changes без уведомления consumers.

Компромисс: время CI против сюрпризов интеграции — contract tests дешевле production outages.

Чеклист:

  • Examples в CI где возможно.
  • Обнаружение breaking changes на schemas.
  • Consumer fixtures или pact для cross-team API.
  • Опубликованные changelog + deprecation policy.