Ответ
В рамках тестирования 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.