← Назад к вопросам

Что такое информационные коды?

2.0 Middle🔥 122 комментариев
#Веб-тестирование#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое информационные коды?

Информационные коды (или коды состояния HTTP — HTTP Status Codes) — это стандартизированные трёхзначные числовые ответы сервера на клиентские запросы в рамках протокола HTTP/HTTPS. Они являются неотъемлемой частью коммуникации между клиентом (например, браузером или мобильным приложением) и сервером, информируя о результате обработки запроса. Для QA-инженера понимание этих кодов критически важно, так как они позволяют быстро диагностировать проблемы при тестировании API, веб-приложений и сетевых взаимодействий, определять корректность поведения системы и составлять точные баг-репорты.

Коды разделены на пять классов, определяемых первой цифрой:

Классы HTTP-кодов

  1. 1xx: Информационные (Informational)
    Указывают, что запрос получен и обработка продолжается. Это промежуточные ответы, после которых обычно следует окончательный.

    • Пример: 100 Continue — сервер готов принять тело запроса (используется, например, при отправке больших данных).
  2. 2xx: Успех (Success)
    Сигнализируют об успешном выполнении запроса. Для QA это ожидаемые коды при позитивных сценариях.

    • Примеры:
     * `200 OK` — стандартный успешный ответ (например, при GET-запросе).  
     * `201 Created` — ресурс успешно создан (после POST).  
     * `204 No Content` — запрос выполнен, но тело ответа отсутствует (часто при DELETE).

  1. 3xx: Перенаправление (Redirection)
    Указывают на необходимость дополнительных действий со стороны клиента для завершения запроса (например, переход по другому URL).
    • Примеры:
     * `301 Moved Permanently` — ресурс перемещён навсегда.  
     * `302 Found` — временное перенаправление.  
     * `304 Not Modified` — контент не изменился (используется кеширование).

  1. 4xx: Ошибка клиента (Client Error)
    Означают, что проблема на стороне клиента — неверный запрос, отсутствие доступа и т.д. QA должен проверять, что сервер возвращает корректные 4xx коды при некорректных действиях пользователя.
    • Примеры:
     * `400 Bad Request` — общая ошибка запроса (например, невалидный JSON).  
     * `401 Unauthorized` — требуется аутентификация.  
     * `403 Forbidden` — доступ запрещён (права есть, но действия недоступны).  
     * `404 Not Found` — ресурс не найден.  
     * `429 Too Many Requests` — превышены лимиты запросов (важно для тестирования нагрузкой).

  1. 5xx: Ошибка сервера (Server Error)
    Говорят о внутренних проблемах сервера. Для QA это явный признак дефекта в серверной логике, требующий фиксации в баг-трекинге.
    • Примеры:
     * `500 Internal Server Error` — общая ошибка сервера.  
     * `502 Bad Gateway` — проблемы у прокси-сервера.  
     * `503 Service Unavailable` — сервер временно недоступен (например, при перегрузке).  
     * `504 Gateway Timeout` — таймаут при ожидании ответа от upstream-сервера.

Практическое применение в QA-процессе

Для инженера по качеству информационные коды — ключевой инструмент в различных активностях:

  • Тестирование API (REST, GraphQL):
    Валидация ответов сервера на разные сценарии. Например, при отправке POST-запроса с неполными данными ожидается 400 Bad Request, а не 500.

    # Пример теста на Python с использованием библиотеки requests
    import requests
    
    response = requests.post('https://api.example.com/users', json={'name': 'John'})
    assert response.status_code == 400, f"Ожидался 400, получен {response.status_code}"
    print("Тест пройден: сервер корректно обрабатывает невалидные данные")
    
  • Веб-тестирование:
    Проверка корректности перенаправлений (3xx), загрузки страниц (2xx) или обработки битых ссылок (404). Инструменты вроде Selenium могут использоваться для анализа.

  • Нагрузочное тестирование:
    Мониторинг появления 429 или 503 кодов при превышении лимитов RPS (запросов в секунду).

    # Пример анализа логов в нагрузочном тесте
    grep " 503 " access.log | wc -l
    
  • Декомпозиция инцидентов:
    При анализе логов или ошибок в продакшене код помогает быстро локализовать проблему. Например, 502 часто указывает на сбой в upstream-сервисе.

  • Автоматизация проверок:
    Включение валидации кодов состояния в CI/CD-пайплайны для предотвращения регрессий.

Распространённые ошибки и лучшие практики

  • Не путать 401 и 403: первый — "не авторизован" (требуются учётные данные), второй — "запрещено" (доступ есть, но действие невозможно).
  • Избегать 500 при ошибках клиента: это часто признак плохой обработки исключений на сервере.
  • Использовать специфичные коды: вместо общего 400 лучше применять 422 Unprocessable Entity для ошибок валидации данных.
  • Документировать ожидаемые коды: в спецификациях API (OpenAPI/Swagger) должны быть чётко указаны возможные ответы для каждого эндпоинта.

Заключение: Для QA-инженера информационные коды — это не просто числа, а язык общения с системой. Их анализ позволяет объективно оценивать качество продукта, выявлять дефекты на ранних этапах и обеспечивать стабильную работу приложения в production-среде. Глубокое понимание каждого класса и конкретных кодов напрямую влияет на эффективность тестирования и скорость реакции на инциденты.