Какие HTTP-методы вы знаете и как они применяются в тестировании API?

«Какие HTTP-методы вы знаете и как они применяются в тестировании API?» — вопрос из категории HTTP и веб-протоколы, который задают на 52% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В тестировании REST API я постоянно работаю со стандартными HTTP-методами, которые соответствуют операциям CRUD:

  • GET: Запрос данных от сервера. Использую для проверки получения ресурсов (например, списка пользователей). Должен быть безопасным (не менять состояние) и идемпотентным.
  • POST: Отправка данных для создания нового ресурса. Тестирую создание сущностей, валидацию входящих данных и коды ответа (201 Created).
  • PUT: Полное обновление существующего ресурса. Проверяю замену всех полей объекта.
  • PATCH: Частичное обновление ресурса. Тестирую сценарии, когда нужно изменить только одно-два поля.
  • DELETE: Удаление ресурса. Проверяю, что ресурс действительно удаляется и возвращается корректный статус (204 No Content).
  • HEAD, OPTIONS: Использую реже, в основном для проверки метаданных или CORS-заголовков.

Пример теста на Python с библиотекой requests:

import requests

# Тестирование GET-запроса
response = requests.get('https://api.example.com/v1/users/123')
assert response.status_code == 200
assert response.json()['id'] == 123

# Тестирование POST-запроса с передачей тела
new_user = {'name': 'Alice', 'email': 'alice@example.com'}
response = requests.post('https://api.example.com/v1/users', json=new_user)
assert response.status_code == 201
assert 'id' in response.json()

При тестировании важно проверять не только успешные сценарии, но и обработку ошибок (4xx, 5xx), а также соблюдение принципов идемпотентности и безопасности методов.

Видео-ответы