Гарантирует ли HTTP-статус 200 (OK) корректную работу backend-логики?

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

Ответ

Нет, статус 200 OK означает лишь успешную доставку HTTP-ответа, но не гарантирует семантическую или бизнес-корректность данных.

Проблемные сценарии при статусе 200:

  1. Неверная бизнес-логика в ответе:

    // Запрос: GET /api/orders/123
    // Ответ 200 OK
    {
      "status": "success",
      "order": {
        "id": 123,
        "total": -150.00 // Некорректная отрицательная сумма
      }
    }
  2. Нарушение контракта API:

    // Ожидается массив объектов, приходит null или строка
    {"data": null}
  3. Частичный или ложный успех:

    // Операция создания завершилась с 200, но объект не сохранён в БД
    {"id": null, "message": "Created"}

Что должен проверять тестировщик помимо статуса 200:

  • Структура ответа: Соответствие схеме (JSON Schema, OpenAPI).
  • Корректность данных: Логическая правильность (цены > 0, даты в будущем и т.д.).
  • Состояние системы: Изменилось ли оно ожидаемым образом после запроса.
  • Пограничные случаи: Поведение при отсутствующих или максимальных данных.

Рекомендация: Всегда использовать валидацию ответа на стороне клиента и в автотестах, не полагаясь только на HTTP-статус.