Как выявляли неуспешные (failed) HTTP-запросы при тестировании API?

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

Ответ

Неуспешные запросы выявляются по нескольким ключевым признакам:

  1. HTTP Status Code: Коды ответа 4xx (ошибка клиента) и 5xx (ошибка сервера) указывают на неудачу.

    import requests
    response = requests.post(url, data=payload)
    if not response.ok:  # Проверяет, что статус-код в диапазоне 4xx или 5xx
        print(f"Request failed: {response.status_code}")
  2. Структура тела ответа: Многие API возвращают ошибки в стандартизированном JSON-теле.

    {
      "success": false,
      "error": {
        "code": "VALIDATION_ERROR",
        "message": "Field 'email' is required"
      }
    }
  3. Время ответа: Запрос считается неудачным, если превышен таймаут.

  4. Инструменты для анализа:

    • Postman/Insomnia: Встроенные тесты и визуализация ответов.
    • Прокси (Charles, Fiddler): Позволяют перехватывать и инспектировать весь трафик.
    • Логи сервера (application.log, access.log): Анализ записей об ошибках на стороне бэкенда.

В автоматизированных тестах проверка на неуспешный статус является базовым assertion.