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

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

Ответ

Имею опыт комплексного тестирования REST и GraphQL API, включая автоматизацию.

Ключевые аспекты тестирования:

  • Функциональность: Проверка эндпоинтов на соответствие спецификации (Swagger/OpenAPI).
  • Надежность: Тестирование негативных сценариев (400, 404, 500 ошибки), валидации входных данных.
  • Безопасность: Проверка авторизации (JWT, OAuth), прав доступа, инъекций.
  • Производительность: Проверка времени ответа, нагрузочное тестирование (например, с Locust).

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

import pytest
import requests

BASE_URL = "https://api.example.com/v1"

# Позитивный сценарий: получение ресурса
def test_get_user_success():
    headers = {"Authorization": f"Bearer {valid_token}"}
    response = requests.get(f"{BASE_URL}/users/1", headers=headers)

    assert response.status_code == 200
    data = response.json()
    assert data["id"] == 1
    assert "email" in data
    # Валидация по JSON Schema (используя библиотеку jsonschema)
    assert validate_schema(data, USER_SCHEMA)

# Негативный сценарий: запрос без авторизации
def test_get_user_unauthorized():
    response = requests.get(f"{BASE_URL}/users/1")
    assert response.status_code == 401

Инструменты: Postman (для ад-hoc тестов и коллекций), Swagger UI, Charles/Fiddler (для анализа трафика), специализированные библиотеки (requests, pytest, schemathesis для property-based тестирования).