Как REST API зависит от Swagger (OpenAPI)?

«Как REST API зависит от Swagger (OpenAPI)?» — вопрос из категории API тестирование, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST API не зависит от Swagger в своей логике выполнения. Swagger (теперь чаще OpenAPI) — это инструмент для спецификации и документирования API. Зависимость, скорее, обратная: качество документации и инструментов тестирования зависит от наличия и точности OpenAPI-спецификации.

Как QA-инженер использую Swagger/OpenAPI:

  1. Для понимания контракта API: Спецификация — это единственный источник истины для эндпоинтов, параметров, форматов запросов/ответов и кодов состояния.
  2. Для автоматизации тестирования: Генерирую клиентские библиотеки или скелеты тестов на основе спецификации.
  3. Для валидации ответов: Сравниваю фактические ответы сервера со схемами, описанными в спецификации, чтобы убедиться в соответствии контракту.
  4. Для ручного тестирования: Использую Swagger UI как удобный клиент для быстрой отправки запросов и изучения поведения API.

Пример проверки ответа на соответствие OpenAPI-схеме (Python, библиотека prance):

import prance
import requests

# Парсинг спецификации
parser = prance.ResolvingParser('openapi.yaml')
spec = parser.specification

# Отправка запроса
response = requests.get('https://api.example.com/users/1')

# Валидация ответа по схеме из спецификации (концептуально)
# На практике используется библиотека для валидации JSON Schema
assert response.status_code == 200
assert 'application/json' in response.headers['Content-Type']
# Далее: проверка, что тело response.json() соответствует
# схеме `#/components/schemas/User` из спецификации

Таким образом, Swagger/OpenAPI — критически важный инструмент для тестировщика, обеспечивающий предсказуемость и тестируемость API.