Ответ
REST API не зависит от Swagger в своей логике выполнения. Swagger (теперь чаще OpenAPI) — это инструмент для спецификации и документирования API. Зависимость, скорее, обратная: качество документации и инструментов тестирования зависит от наличия и точности OpenAPI-спецификации.
Как QA-инженер использую Swagger/OpenAPI:
- Для понимания контракта API: Спецификация — это единственный источник истины для эндпоинтов, параметров, форматов запросов/ответов и кодов состояния.
- Для автоматизации тестирования: Генерирую клиентские библиотеки или скелеты тестов на основе спецификации.
- Для валидации ответов: Сравниваю фактические ответы сервера со схемами, описанными в спецификации, чтобы убедиться в соответствии контракту.
- Для ручного тестирования: Использую 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.