Какие HTTP-методы вы используете при тестировании веб-запросов?

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

Ответ

При тестировании RESTful API и веб-приложений работаю со стандартными HTTP-методами, каждый из которых имеет строгую семантику.

Основные методы (CRUD операции):

Метод Назначение (Семантика) Идемпотентен? Безопасен? Пример использования
GET Получение данных ресурса. Да Да Запрос информации о пользователе.
POST Создание нового ресурса или выполнение действия. Нет Нет Отправка данных формы для регистрации.
PUT Полное обновление ресурса. Да Нет Замена всех данных пользователя.
PATCH Частичное обновление ресурса. Нет Нет Изменение только email пользователя.
DELETE Удаление ресурса. Да Нет Удаление учетной записи.

Примеры запросов (синтаксис HTTP):

### GET: Получить пользователя с id=123
GET /api/users/123 HTTP/1.1
Host: example.com
Accept: application/json
### POST: Создать нового пользователя
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Alice",
  "email": "alice@example.com"
}
### PATCH: Частично обновить пользователя
PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "email": "new.alice@example.com"
}
### DELETE: Удалить пользователя
DELETE /api/users/123 HTTP/1.1
Host: example.com

Дополнительные методы:

  • HEAD — аналогичен GET, но возвращает только заголовки ответа (полезно для проверки существования ресурса или метаданных).
  • OPTIONS — используется для определения поддерживаемых методов для ресурса (часто применяется в CORS-запросах).

Инструменты: Для работы с этими методами использую Postman, cURL, Swagger UI, а также библиотеки в коде автотестов (requests в Python, axios в JS).