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

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

Ответ

У меня есть опыт комплексного тестирования backend-сервисов, включая REST и GraphQL API. Основные направления моей работы:

  • API-тестирование: Валидация эндпоинтов, статус-кодов, схем ответов (использую JSON Schema или Pydantic), обработки ошибок и граничных случаев.
  • Интеграционное тестирование: Проверка взаимодействия между микросервисами, с очередями сообщений (Kafka, RabbitMQ) и базами данных.
  • Нагрузочное тестирование: Оценка производительности и стабильности с помощью инструментов вроде k6 или Locust.
  • Контрактное тестирование: Использование Pact для проверки совместимости между потребителями и провайдерами API.

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

import pytest
import requests

def test_create_order_returns_201():
    """Тест на успешное создание заказа."""
    url = "https://api.shop.com/orders"
    payload = {"item_id": 123, "quantity": 2}
    headers = {"Authorization": "Bearer token123"}

    response = requests.post(url, json=payload, headers=headers)

    assert response.status_code == 201
    response_json = response.json()
    assert "order_id" in response_json
    assert isinstance(response_json["order_id"], str)
    assert len(response_json["order_id"]) == 36  # Проверяем формат UUID

def test_get_nonexistent_user_returns_404():
    """Тест на корректную обработку несуществующего ресурса."""
    response = requests.get("https://api.shop.com/users/99999")
    assert response.status_code == 404
    assert response.json()["error"] == "User not found"

Для ручного тестирования и исследования API активно использую Postman (с коллекциями и окружениями), а для документирования и валидации схем — Swagger/OpenAPI.