Какие HTTP-запросы ты тестировал?

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

Ответ

В рамках тестирования RESTful и SOAP API я регулярно работаю со всеми основными HTTP-методами: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. Наиболее частые сценарии — тестирование CRUD-операций и проверка граничных условий.

Пример теста на Java с использованием RestAssured для комплексного сценария:

import io.restassured.RestAssured;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class UserApiTest {
    @Test
    public void testUserCRUDFlow() {
        // 1. POST - Создание пользователя
        String userId = given()
                .contentType("application/json")
                .body("{"name": "Alice", "email": "alice@test.com"}")
            .when()
                .post("/api/users")
            .then()
                .statusCode(201) // Проверка кода ответа
                .body("id", notNullValue()) // Проверка тела ответа
                .extract().path("id"); // Извлечение ID для следующих шагов

        // 2. GET - Получение созданного пользователя
        when()
                .get("/api/users/" + userId)
            .then()
                .statusCode(200)
                .body("name", equalTo("Alice"));

        // 3. PATCH - Частичное обновление
        given()
                .contentType("application/json")
                .body("{"email": "new.alice@test.com"}")
            .when()
                .patch("/api/users/" + userId)
            .then()
                .statusCode(200);

        // 4. DELETE - Удаление пользователя
        when()
                .delete("/api/users/" + userId)
            .then()
                .statusCode(204); // No Content
    }
}

Помимо позитивных сценариев, я уделяю особое внимание тестированию невалидных данных, проверке кодов ошибок (4xx, 5xx), заголовкам (CORS, авторизация), таймаутам и нагрузочному тестированию API.