Ответ
Помимо успешных (2xx), клиентских (4xx) и серверных (5xx) ошибок, существуют информационные коды и коды перенаправления, которые также важны для тестирования API и веб-приложений.
1xx (Информационные)
Сервер сообщает о промежуточном состоянии обработки запроса.
- 100 Continue: Клиент может продолжать отправлять тело запроса. Важно для тестирования больших POST/PUT запросов.
- 101 Switching Protocols: Сервер соглашается сменить протокол (например, с HTTP на WebSocket). Ключевой статус для тестирования WebSocket-подключений.
3xx (Перенаправление — Redirection)
Сервер указывает клиенту на необходимость дополнительных действий для завершения запроса.
- 301 Moved Permanently: Ресурс навсегда перемещен на новый URL. Постоянные редиректы должны корректно обрабатываться поисковыми системами и кешироваться клиентами. В тестах нужно проверять заголовок
Location. - 302 Found / 307 Temporary Redirect: Ресурс временно доступен по другому адресу. 307 предпочтительнее, так как гарантирует, что метод запроса (POST, PUT) не изменится при перенаправлении.
- 304 Not Modified: Контент не изменился с момента последнего запроса (кеширование). Возвращается при наличии валидных заголовков
If-Modified-SinceилиIf-None-Match. Критически важный статус для тестирования механизмов кеширования на клиенте и CDN.
Пример теста на редирект с использованием RestAssured (Java):
@Test
public void testPermanentRedirect() {
given()
.redirects().follow(false) // Отключаем автоматическое следование редиректу
.when()
.get("/old-endpoint")
.then()
.statusCode(301) // Проверяем именно статус редиректа
.header("Location", endsWith("/new-endpoint")); // Проверяем новый URL
}
Пример теста на кеширование (304):
@Test
public void testCacheValidation() {
// 1. Первый запрос, получаем ETag
Response firstResponse = get("/api/resource");
String eTag = firstResponse.header("ETag");
// 2. Повторный запрос с этим ETag — должен вернуть 304
given()
.header("If-None-Match", eTag)
.when()
.get("/api/resource")
.then()
.statusCode(304); // Контент не изменился
}
Для QA: Тестирование 1xx и 3xx статусов — это проверка корректности работы протокола HTTP, механизмов кеширования, SEO-дружественности редиректов и функциональности, основанной на смене протоколов (WebSockets).