Найти в Дзене

HTTP Статус-коды для QA. Что нужно знать?

Всем привет. Я в профессии QA уже больше 4-х лет. Не так давно создал свой сайт для тестировщиков (смотрите в профиле или в конце статьи) и канал в ТГ. Меня это затянуло, и я решил ещё начать писать статьи. Так что приятно со всеми познакомиться и прошу к ознакомлению :) HTTP статус-код – это трёхзначное число, которое возвращает сервер в ответ на запрос клиента. Код показывает, как сервер обработал запрос и что делать с ним дальше. Где мы их видим? Например, в devtools во вкладке Network (ниже пример). Но что означают эти трёхзначные числа, есть ли в них смысл? Ответ – «Да», и понять их довольно просто. Всего существует 5 групп, где каждая группа отвечает за что-то своё. Эти коды помогают понять, правильно ли сервер реагирует на запроc. Группы делятся на сотни и ниже немного о каждой: 1xx ℹ️ Информационные – сервер говорит: «Я тут, всё принял, обрабатываю! Не паникуй, просто немного подожди».
2xx ✅ Успешно – всё прошло успешно и бояться нечего.
3xx ➡️ Перенаправления (редирект
Оглавление

Всем привет. Я в профессии QA уже больше 4-х лет. Не так давно создал свой сайт для тестировщиков (смотрите в профиле или в конце статьи) и канал в ТГ. Меня это затянуло, и я решил ещё начать писать статьи. Так что приятно со всеми познакомиться и прошу к ознакомлению :)

Что такое HTTP статус-код

HTTP статус-код – это трёхзначное число, которое возвращает сервер в ответ на запрос клиента. Код показывает, как сервер обработал запрос и что делать с ним дальше. Где мы их видим?

Например, в devtools во вкладке Network (ниже пример).

Но что означают эти трёхзначные числа, есть ли в них смысл? Ответ – «Да», и понять их довольно просто.

Группы статус-кодов

-2

Всего существует 5 групп, где каждая группа отвечает за что-то своё. Эти коды помогают понять, правильно ли сервер реагирует на запроc. Группы делятся на сотни и ниже немного о каждой:

1xx ℹ️ Информационные – сервер говорит: «Я тут, всё принял, обрабатываю! Не паникуй, просто немного подожди».
2xx ✅ Успешно – всё прошло успешно и бояться нечего.
3xx ➡️ Перенаправления (редиректы) – как поход в больницу: ты заходишь в один кабинет, а тебе говорят: «Тут больше не принимают, тебе нужно в кабинет 302», – и ты идёшь туда.
4xx ❌ Ошибки клиента – у нас проблема в запросе, а не на стороне сервера.
5xx 🔥 Ошибки сервера – всё просто: какие-то неполадки на стороне сервера.

Почему тестировщики должны знать статус-коды

Казалось бы, всё понятно, и зачем знать что-то ещё, кроме групп? Возможно, кому-то этого и достаточно, но мы с вами доблестные тестировщики, которые хотят знать точно, в чём проблема. Нам недостаточно знать, что «на клиенте просто какая-то ошибка», ведь зная подробности, мы можем избежать неловкости. Например:

Пришли мы на работу. Заварили себе кофе, садимся за компьютер, решаем зайти в проект – и видим «403 Forbidden». Бежим сломя голову к разработчику и, запыхавшись, кричим: «Сервер не пускает!!! Всё сломалось!!!».

-3


И вместо ожидаемых криков «БЫСТРЕЕ ЧИНИМ» нам спокойно отвечают:
«Спокойно… 403 значит, у тебя просто нет прав к ресурсу».

Или, если бы это была 401 ошибка:
«Спокойно… 401 значит, что ты не авторизован или ты не добавил токен».

Дальше небольшой список, чем нам помогают статус-коды:

  1. Быстро находить ошибки без лога: по статусу можно сразу понять, где сбой – на клиенте, сервере или из-за авторизации.
  2. Проверять корректность API: при тестировании REST-сервисов важно, чтобы каждый эндпойнт возвращал правильный код.
  3. Общаться с разработчиками на одном языке: «Я вижу, что POST /login возвращает 200 вместо 401, когда токен пустой». И всё – разработчик уже не спорит, а уважительно шепчет, какой вы молодец (ну или нет).

Теперь рассмотрим самые популярные и самые необходимые, на мой взгляд, статус-коды в каждой группе.

ℹ️ 1xx: информационные

Я бы сюда не стал ничего добавлять: группа 1xx почти не используется для проверок, но всё же расскажу про 1–2 статуса для ясности.

100 Continue ⏳ – обозначает «нормальную работу». Указывает, что пользователь сделал корректный запрос, и сервер начал его обрабатывать.
102 Processing ⚙️ – запрос в обработке (долгие задачи).

🌟 2xx: успешные

200 OK ✅ – один из самых популярных, но при этом незаметных кодов. Он указывает, что передача данных между сервером и пользователем завершилась, и всё прошло так, как должно.

201 Created ➕ – статус-код, который сервер возвращает, когда новый ресурс успешно создан в результате запроса (обычно POST). Это не просто «всё ок» (200), а конкретное «я сделал новую запись в базе, и вот её адрес!».

204 No Content 🗑 – сервер говорит: «Всё сделал, но отвечать нечем!». Это статус успеха без тела ответа – идеально подходит для операций, где результат и так ясен (удаление, очистка, обновление без возврата данных).

➡️ 3xx: перенаправления

301 Moved Permanently 🔄 и 302 Found ➡️ – это «братья-редиректы», которые сервер использует, чтобы сказать: «Ты заблудился, но я помогу!». Разница между ними критически важна для SEO, кеширования и тестирования.

В чём же разница?

  • 301 – как переезд в новую квартиру: «Всё, старый адрес в прошлом!».
  • 302 – как ремонт в офисе: «Подождите неделю, потом возвращайтесь».

301 Moved Permanently 🔄 – означает, что запросы на этот ресурс (а также последующие запросы) следует перенаправить на указанный URL («переехал НАВСЕГДА»).

302 Found ➡️ – говорит пользователю, что местоположение запрашиваемого веб-документа было временно изменено, а код состояния 302 включает данные о новом размещении, к которому пользователь может делать запрос («временно не тут» – возвращайся на старый URL).

😤 4xx: клиентские фейлы

400 Bad Request ❌ - Запрос не обрабатывается правильно в связи с синтаксической ошибкой. Сервер не понял запрос из-за синтаксиса или формата.
Пример:
POST /api/users
{ "name": "Иван, "email": }
Криво написан JSON: нет закрывающей кавычки в имени «Иван» → 400 Bad Request.

401 Unauthorized – нет токена. Используется для ресурсов, которые требуют авторизации. Код 401 информирует, что предварительную авторизацию отклонили, поскольку переданные пользовательские данные были неверны.

403 Forbidden – «Ты авторизован, но сюда нельзя!». Есть токен, но прав недостаточно. Админ-ресурс → обычный user?

404 Not Found – настоящая классика в статус-кодах, её знают и видели все. Ресурс не существует: страница удалена, не найдена или вы ввели неверный адрес. Перепроверьте введённый URL.

💥 5xx: ошибки сервера

500 Internal Server Error – самая популярная, на мой взгляд, ошибка из 5xx. Это «серверные крики о помощи».

503 Service Unavailable – «Я жив, но сейчас не могу ответить!». Сервер отказывается работать. Возможно, возникли технические причины, из-за которых сервер на определённое время не способен обработать запросы. Допустимо использовать в случаях, когда на сайт есть повышенный спрос, но у сервера нет возможности обрабатывать все входящие запросы.

Заключение

HTTP статус-коды – один из базовых, но мощных инструментов QA-специалиста. Не нужно стараться запомнить все, большинство и правда вам не пригодится. Если возникнет необходимость быстро узнать какой-либо статус, смело заходите и смотрите на моём сайте: https://qaspace.ru/instruments/status-kod

Надеюсь, статья вам понравилась, и вы захотите поддержать меня, подписавшись на мой канал в Telegram: https://t.me/qualityAssuranceSpace и посетив мой сайт для QA: https://qaspace.ru/

Всем спасибо :)