Ответ
Комплексное тестирование API включает проверку функциональности, надежности, производительности и безопасности.
1. Позитивное тестирование: Проверка корректных запросов с ожидаемым успешным ответом.
import requests
def test_get_user_success():
# Arrange
url = 'https://api.example.com/users/1'
# Act
response = requests.get(url)
# Assert
assert response.status_code == 200
data = response.json()
assert data['id'] == 1
assert 'name' in data
# Проверка схемы ответа (например, с помощью Pydantic или jsonschema)
2. Негативное тестирование:
- 400 Bad Request: невалидные параметры, некорректный JSON в теле.
- 401 Unauthorized / 403 Forbidden: запрос без токена или с недостаточными правами.
- 404 Not Found: запрос к несуществующему ресурсу.
- 409 Conflict / 422 Unprocessable Entity: нарушение бизнес-правил.
3. Тестирование граничных значений и валидации:
Для параметров типа limit, offset, age проверить минимальные, максимальные и недопустимые значения.
4. Тестирование производительности и нагрузки:
- Время отклика: с помощью инструментов (k6, Locust, JMeter).
- Нагрузка: как ведет себя endpoint под пиковой нагрузкой.
- Устойчивость: проверка на таймауты и частично невалидные данные.
5. Проверка безопасности:
- Инъекции: попытка передачи SQL, NoSQL, команд в параметрах.
- Авторизация: попытка доступа к данным другого пользователя (IDOR).
- Лимиты запросов (Rate Limiting).
6. Проверка документации и контракта: Соответствие ответов спецификации OpenAPI/Swagger. Используйте инструменты контрактного тестирования (Pact).
Инструменты: Postman/Newman (для коллекций), pytest (для Python), RestAssured (для Java).