На какие классы (семейства) делятся HTTP-коды состояния?

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

Ответ

HTTP-коды состояния сгруппированы в пять классов, определяемых первой цифрой кода:

Класс Описание Примеры
1xx (Информационные) Сервер получил запрос и продолжает обработку. 100 Continue, 101 Switching Protocols
2xx (Успешные) Запрос был успешно получен, понят и обработан. 200 OK, 201 Created, 204 No Content
3xx (Перенаправления) Для завершения запроса требуется дополнительное действие (обычно — переход по другому URI). 301 Moved Permanently, 302 Found, 304 Not Modified
4xx (Ошибки клиента) Запрос содержит ошибку или не может быть выполнен сервером из-за действий клиента. 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xx (Ошибки сервера) Сервер не смог выполнить заведомо корректный запрос. 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

Почему это важно для тестирования: Анализ кода ответа — первичный способ определения успешности или характера сбоя API-запроса.

Пример проверки в автотесте (Python + pytest):

import requests

def test_get_user_success():
    response = requests.get("https://api.example.com/users/1")
    # Проверяем, что запрос успешен (код 2xx)
    assert response.status_code == 200
    # Или проверяем конкретный код
    assert response.status_code == requests.codes.ok  # то же, что и 200

def test_get_user_not_found():
    response = requests.get("https://api.example.com/users/99999")
    # Проверяем, что ресурс не найден
    assert response.status_code == 404