Какой у вас опыт тестирования REST API?

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

Ответ

Опыт включает ручное тестирование (Postman) и создание автотестов, преимущественно на стеке Python (pytest + requests). Основные направления работы:

1. Функциональное тестирование:

  • Проверка HTTP-статусов (200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error).
  • Валидация структуры и данных ответа (использую библиотеку jsonschema).
  • Тестирование граничных значений и некорректных входных данных для параметров.

2. Нефункциональное тестирование:

  • Проверка заголовков (Content-Type, Cache-Control).
  • Базовая проверка производительности и анализ логов.
  • Тестирование авторизации (JWT, OAuth 2.0).

Пример автотеста для GET-запроса:

import requests
import jsonschema

def test_get_user_by_id():
    url = "https://api.example.com/v1/users/1"

    # 1. Выполнение запроса
    response = requests.get(url, headers={"Authorization": "Bearer token123"})

    # 2. Проверка статус-кода
    assert response.status_code == 200

    # 3. Проверка заголовка
    assert response.headers["Content-Type"] == "application/json"

    # 4. Валидация JSON-схемы ответа
    user_schema = {
        "type": "object",
        "properties": {
            "id": {"type": "integer"},
            "name": {"type": "string"},
            "email": {"type": "string", "format": "email"}
        },
        "required": ["id", "name", "email"]
    }
    jsonschema.validate(instance=response.json(), schema=user_schema)

Работал с документацией OpenAPI (Swagger) и инструментами для нагрузочного тестирования (например, Locust).