К списку
Инструменты QASeniorТехническое

Организация контрактного тестирования OpenAPI в CI при мульти-репозиториях

Краткий ответ

Спецификацию OpenAPI следует хранить как отдельный артефакт и интегрировать её в процессы CI. Используйте инструменты типа schemathesis, Dredd или Prism для запуска контрактных тестов, которые проверяют соответствие ответов сервера схеме при каждом pull request.

Развёрнуто

Краткий ответ

Для эффективного контрактного тестирования OpenAPI в CI при нескольких репозиториях спецификация должна храниться централизованно как артефакт. Инструменты schemathesis, Dredd или Prism запускаются в пайплайне CI, чтобы проверять соответствие API ответов спецификации на каждом этапе, особенно в pull request.


Как это работает

Контрактное тестирование в мульти-репозиторной архитектуре подразумевает, что спецификация API доступна независимо от реализации сервисов. Она хранится как отдельный артефакт (например, в отдельном репозитории или как версия в артефактном менеджере).

При каждом событии CI (например, pull request) запускаются тесты с использованием инструментов:

  • schemathesis — генерация тестов из OpenAPI и проверка схемы ответов
  • Dredd — проверка REST API на соответствие OpenAPI спецификации
  • Prism — мок-сервер и валидация на основе спецификации

Тесты валидируют, что ответы API строго соответствуют описанным типам, структурам и статусам, предотвращая рассогласование между сервисами.

Инструмент Особенности Применение
schemathesis Генерация тестов на основе схемы Автоматическое тестирование
Dredd Сравнение реального API с описанием Контрактное тестирование
Prism Мокирование и валидация ответов Локальная разработка и тесты

Пример

# Пример CI pipeline (GitLab CI)
stages:
  - test

contract_test:
  stage: test
  image: python:3.9
  script:
    - pip install schemathesis
    - schemathesis run openapi.yaml --base-url $API_BASE_URL
  only:
    - merge_requests

Данный пример демонстрирует запуск schemathesis для проверки актуального API на соответствие спецификации при каждом merge request.

Что важно знать на собеседовании

  • Спецификация OpenAPI должна быть централизованным артефактом, доступным для всех репозиториев.
  • Инструменты контрактного тестирования позволяют обнаружить рассогласования на ранних этапах разработки.
  • Важно интегрировать проверку API в CI/CD, чтобы тесты запускались автоматически на каждом PR.
  • Выбор инструмента зависит от потребностей — schemathesis удобен для генерации тестов, Dredd — для строгой проверки контракта.
  • Контрактное тестирование помогает избежать регрессий и поддерживает согласованность API между командами.

Тема: Инструменты QA | Уровень: senior