Как вы используете Swagger (OpenAPI) в процессе тестирования?

«Как вы используете Swagger (OpenAPI) в процессе тестирования?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Swagger (OpenAPI) — ключевой инструмент для тестирования REST API.

Как я его применяю:

  1. Изучение и валидация спецификации:

    • Проверяю полноту и корректность OpenAPI-спецификации (swagger.json или openapi.yaml).
    • Изучаю эндпоинты, параметры, схемы запросов и ответов.
  2. Ручное и исследовательское тестирование через Swagger UI:

    • Быстрая отправка запросов для проверки доступности и базовой логики.
    • Валидация ответов на соответствие задекларированным схемам и статус-кодам.
  3. Автоматизация тестов на основе спецификации:

    • Генерация клиентского кода или статических данных для тестов.
    • Использование библиотек для валидации ответов сервера против схемы OpenAPI.

Пример интеграции в автотест (Python, pytest + requests):

import requests
import pytest
from openapi_core import validate_response
from openapi_core.spec.shortcuts import create_spec

# Загружаем спецификацию
spec_dict = requests.get('http://api.example.com/openapi.json').json()
spec = create_spec(spec_dict)

@pytest.mark.api
def test_get_user_by_id():
    """Тест проверяет, что ответ GET /users/{id} соответствует OpenAPI-схеме."""
    # Выполняем запрос
    response = requests.get('http://api.example.com/users/123')

    # Валидируем ответ против спецификации
    validate_response(spec, request=None, response=response)

    # Дополнительные assertions
    data = response.json()
    assert response.status_code == 200
    assert data['id'] == 123
    assert 'email' in data

Почему это важно: OpenAPI служит единым источником истины (single source of truth) для контракта API, что позволяет автоматизировать валидацию и снизить количество ошибок, связанных с несоответствием документации.