Как вы тестируете PUT-запросы в REST API?

«Как вы тестируете PUT-запросы в REST API?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PUT-запросы используются для полного обновления существующего ресурса. Их тестирование фокусируется на корректности замены данных и идемпотентности.

Ключевые аспекты для проверки:

  1. Успешное обновление: Отправка валидного тела запроса на существующий эндпоинт (например, PUT /users/123) должна возвращать 200 OK или 204 No Content, а данные ресурса — полностью заменяться.
  2. Идемпотентность: Повторный идентичный PUT-запрос не должен изменять результат или состояние системы после первого успешного выполнения.
  3. Валидация: Проверка реакции на невалидные данные (те же коды ошибок, что и для POST).
  4. Обработка отсутствующих ресурсов: Запрос к несуществующему ID может либо создавать новый ресурс (если API это допускает), либо возвращать 404 Not Found.
  5. Проверка прав доступа: Обновление чужого ресурса должно возвращать 403 Forbidden.

Пример сценария:

PUT /api/v1/products/456 HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>

{
  "name": "New Product Name",
  "price": 29.99,
  "inStock": true
}

Ожидаемый результат: Код 200. Последующий GET /api/v1/products/456 возвращает объект точно с теми полями, которые были в PUT-запросе (старые данные перезаписаны).

Важно: PUT отличается от PATCH, который обновляет ресурс частично. Понимание этой семантики HTTP критично для написания корректных тестов.