Как определяли, что HTTP-запрос к API выполнен успешно?

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

Ответ

Успешный запрос определяется по комбинации следующих критериев:

  1. Корректный HTTP статус-код из класса 2xx:

    • 200 OK — стандартный ответ для успешных GET, PUT, PATCH запросов.
    • 201 Created — ресурс успешно создан (обычно в ответ на POST).
    • 204 No Content — запрос выполнен, но тело ответа не возвращается (например, после DELETE).
  2. Проверка статус-кода в коде или инструментах:

    import requests
    resp = requests.post("https://api.example.com/items", json=data)
    # Основная проверка
    resp.raise_for_status()  # Выбросит исключение для 4xx/5xx кодов
    # Или явная проверка
    assert resp.status_code == 201
  3. Валидация структуры и содержимого ответа: Успешный статус-код должен сопровождаться корректными данными.

    • Соответствие схеме (JSON Schema): Проверка структуры ответа.
    • Наличие ожидаемых полей: Например, ID созданного объекта.
    • Корректность бизнес-логики: Фактическое создание/изменение данных в БД.
  4. Анализ в Postman:

    pm.test("Request is successful", function () {
        pm.expect(pm.response.code).to.be.oneOf([200, 201, 204]);
        // Дополнительная проверка тела ответа
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.have.property('id');
    });

    Успешность запроса — это не только статус 200, но и соблюдение контракта API.