Какие ошибки HTTP-запросов встречаются чаще всего при тестировании API?

Ответ

При тестировании API наиболее частыми являются следующие ошибки HTTP:

  1. 400 Bad Request — некорректный синтаксис запроса. Например, невалидный JSON или отсутствие обязательных полей.

    POST /api/users
    Content-Type: application/json
    
    {"name": "John" // Ошибка: пропущена закрывающая фигурная скобка
  2. 401 Unauthorized — проблемы с аутентификацией: неверный, истекший или отсутствующий токен.

  3. 403 Forbidden — у аутентифицированного пользователя нет прав на доступ к запрашиваемому ресурсу.

  4. 404 Not Found — запрашиваемый ресурс или эндпоинт не существует.

    GET /api/non-existent-resource
  5. 500 Internal Server Error — необработанное исключение на стороне сервера.

  6. 429 Too Many Requests — клиент превысил лимит запросов (rate limiting).

  7. Ошибки валидации данных — например, передача строки вместо числа в обязательном числовом поле.

    {
      "quantity": "five" // Ожидается тип integer
    }
  8. Проблемы с заголовками (Headers) — отсутствие или неверное значение Content-Type.

    POST /api/data
    Content-Type: text/plain // Сервер ожидает application/json
    
    {"key": "value"}

Для эффективного тестирования важно покрывать эти сценарии как позитивными, так и негативными тестами.

Ответ 18+ 🔞

А, слушай, вот это реально полезная хуйня, которую каждый тестировщик должен в печёнках иметь! Сейчас разжую, как это всё выглядит в боевых условиях, чтобы ты не наступал на те же грабли, что и все мы, блядь.

Вот смотри, когда ты долбишь по какому-нибудь API, то 90% всей ебалы сводится к восьми классическим пиздецам. Запоминай, как «Отче наш», а то будешь потом как дурак в логах копаться.

1. 400 Bad Request — это когда ты такой умный отправляешь серверу какую-то ахинею, а он тебе: «Чувак, ты совсем, блядь, охренел?». Типа, JSON кривой, запчасть от запроса потерял или отправил хуйню вместо данных.

POST /api/users
Content-Type: application/json

{"name": "John" // Ошибка: пропущена закрывающая фигурная скобка

Вот тут, видишь? Скобку забыл. Сервер смотрит на это и думает: «Ну и мудень, ёпта».

2. 401 Unauthorized — классика жанра! Твой токен умер, сдох, истёк, или ты его вообще забыл прицепить. Сервер глядит на пустоту и говорит: «А ты кто такой, сука? Иди лесом».

3. 403 Forbidden — а вот это поинтереснее. Ты вроде залогинился, токен твой живенький, но тебе лезть в этот шкафчик нельзя. Как будто ты дворник, а пытаешься в кабинет к гендиру. «Не-не-не, дружок, это тебе не по чину, блядь».

4. 404 Not Found — самый частый пиздец. Ты опечатался в адресе, или фича уже сломана, или её никогда и не было.

GET /api/non-existent-resource

Сервер такой: «Иди нахуй с твоим ресурсом, я про такую хуйню первый раз слышу».

5. 500 Internal Server Error — это уже не твоя вина, а пиздец на той стороне. У них там код упал, исключение не поймали, база легла. В общем, «ой, всё». Сиди и жди, пока админы отпляшут с бубном.

6. 429 Too Many Requests — ага, попался, скорострел! Слишком часто долбишь, решил, что ты DDoS-бот. Лимитер накрыл тебя медным тазом. «Успокойся, блядь, подожди немного».

7. Ошибки валидации данных — моя любимая, ебать! Ты в поле quantity (количество), которое ждёт цифру, пишешь "five".

{
  "quantity": "five" // Ожидается тип integer
}

Сервер в ауте: «Пять? Это типа строка "five"? Да иди ты нахуй, я жду циферку!». И правильно делает.

8. Проблемы с заголовками (Headers) — а это для особо одарённых. Ты шлёшь JSON, а в заголовке пишешь, что это простой текст.

POST /api/data
Content-Type: text/plain // Сервер ожидает application/json

{"key": "value"}

Сервер парсит это как текст, получает пиздюлину и отвечает тебе той же монетой. «Я ждал JSON, а ты мне какую-то хуйню прислал!».

Вот и весь базовый набор, блядь. Суть в чём: ты должен эти все сценарии намеренно ломать. Не только «солнечный путь» тестить, где всё работает, но и специально слать кривые JSON'ы, битые токены и запросы не туда. Тогда и найдёшь всю ту дрянь, которая прячется в углах. Удачи, не проёбывайся!