Ответ
Тестирование REST API охватывает несколько критичных уровней качества.
1. Функциональное тестирование
Проверка, что API работает согласно спецификации (OpenAPI/Swagger).
- Валидация кодов состояния:
200 OK,201 Created,400 Bad Request,404 Not Found,500 Internal Server Error. - Валидация схемы ответа: Соответствие JSON-схеме (формат, типы данных, обязательные поля).
- Проверка бизнес-логики: Корректность вычислений и преобразований данных.
Пример теста на Python (pytest + requests):
import pytest
import requests
BASE_URL = "https://api.example.com"
def test_create_and_get_item():
# 1. Create
payload = {"title": "Test Item"}
create_resp = requests.post(f"{BASE_URL}/items", json=payload)
assert create_resp.status_code == 201
item_id = create_resp.json()["id"]
# 2. Read
get_resp = requests.get(f"{BASE_URL}/items/{item_id}")
assert get_resp.status_code == 200
assert get_resp.json()["title"] == payload["title"]
2. Тестирование производительности и нагрузки
- Замер времени отклика (latency).
- Нагрузочное тестирование для определения пределов пропускной способности (с помощью Locust или JMeter).
3. Тестирование безопасности
- Аутентификация/Авторизация: Проверка токенов (JWT), API-ключей, ролей.
- Валидация входных данных: Защита от инъекций (SQL, NoSQL), XSS.
- Чувствительные данные: Отсутствие в логах паролей, токенов.
- Заголовки безопасности: Наличие
Content-Security-Policy.
4. Надежность и интеграция
- Тестирование ошибок: Поведение при неверных данных или недоступности зависимых сервисов.
- Повторные запросы (idempotency): Для методов
PUT,DELETE.
Инструменты: Postman/Newman (для коллекций), pytest (для автоматизации), OWASP ZAP (для безопасности).