Ответ
Неидемпотентный HTTP-метод — это метод, при повторном выполнении которого с теми же данными состояние системы может измениться, или результат может быть разным. Это критично для тестирования, так как повторные запросы (например, из-за retry-логики или повторного запуска теста) могут привести к нежелательным побочным эффектам.
Основные примеры:
- HTTP POST (создание нового ресурса) — каждый вызов обычно создает новую сущность.
- HTTP PATCH (частичное обновление) — может быть неидемпотентным в зависимости от реализации.
Пример для тестирования API:
POST /api/orders
Content-Type: application/json
{"productId": 123, "quantity": 2}
Повторная отправка этого запроса, скорее всего, создаст два идентичных заказа, что является ошибкой, если это не предполагается бизнес-логикой.
На что обращать внимание QA:
- Проектирование тестов: Для неидемпотентных операций (создание, списание) нужно обеспечить изоляцию данных (уникальные идентификаторы, очистка перед/после теста).
- Тестирование безопасности: Проверка, как система обрабатывает дублирующиеся запросы (защита от повторных списаний).
- Верификация побочных эффектов: После выполнения такого запроса нужно проверять не только ответ, но и итоговое состояние системы (количество записей в БД, баланс).