Ответ
Для всесторонней проверки метода API я применяю многоуровневую стратегию, основанную на анализе спецификации и практическом тестировании.
Основные этапы:
- Анализ контракта: Изучаю документацию (Swagger/OpenAPI) для понимания ожидаемых входных/выходных параметров, кодов состояния и схем данных.
- Разработка тест-кейсов: Создаю сценарии, покрывающие:
- Позитивные сценарии с валидными данными.
- Негативные сценарии: невалидные данные, отсутствующие обязательные поля, неверные типы.
- Граничные значения и валидации: проверка ограничений (min/max length, диапазоны).
- Безопасность и авторизация: доступ без токена, с неверными правами.
- Автоматизация и выполнение: Использую инструменты вроде Postman (для ручных проверок и коллекций) или пишу скрипты на Python с
requestsиpytestдля интеграции в CI/CD.
Пример теста на Python с pytest:
import pytest
import requests
BASE_URL = "https://api.example.com"
def test_get_user_positive():
"""Позитивный тест: получение данных существующего пользователя."""
user_id = 1
response = requests.get(f"{BASE_URL}/users/{user_id}")
assert response.status_code == 200
assert response.headers["Content-Type"] == "application/json"
data = response.json()
assert data["id"] == user_id
assert "name" in data
def test_get_user_negative_not_found():
"""Негативный тест: запрос несуществующего пользователя."""
response = requests.get(f"{BASE_URL}/users/99999")
assert response.status_code == 404
def test_create_user_validation_error():
"""Тест валидации: попытка создания пользователя без обязательного поля."""
payload = {"email": "test@example.com"} # Нет поля 'name'
response = requests.post(f"{BASE_URL}/users", json=payload)
assert response.status_code == 400
error_data = response.json()
assert "validation_error" in error_data
assert "name" in error_data["validation_error"]
- Проверка нефункциональных требований: При необходимости тестирую производительность (latency, throughput) и нагрузку.
- Верификация интеграции: Убеждаюсь, что метод корректно взаимодействует с другими сервисами и БД, проверяя побочные эффекты (например, создание записи в логе).