Как вы используете Postman для тестирования API?

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

Ответ

Postman — это основной инструмент для ручного тестирования, отладки и автоматизации проверок API.

Основные сценарии использования:

  1. Ручное тестирование и отладка: Быстрая отправка запросов (GET, POST, PUT, DELETE, PATCH), проверка статус-кодов, тела ответа (JSON, XML), заголовков и cookies.
  2. Организация работы: Создание коллекций для группировки запросов по функциональности (например, User API, Order API). Использование папок внутри коллекций.
  3. Управление окружениями: Создание переменных окружений (dev, staging, prod) для хранения базовых URL, токенов, учетных данных. Быстрое переключение между средами.
  4. Автоматизация проверок (Postman Tests): Написание скриптов на JavaScript для автоматической валидации ответов.
  5. Запуск коллекций (Collection Runner): Последовательный или параллельный запуск набора запросов, создание сценариев (pre-request scripts, tests).
  6. Интеграция в CI/CD: Запуск коллекций из командной строки с помощью Newman для автоматического прогона в пайплайнах.

Пример коллекции с переменными окружения и тестами:

Окружение Staging:

{
  "id": "staging-env",
  "name": "Staging",
  "values": [
    {
      "key": "baseUrl",
      "value": "https://api.staging.example.com",
      "type": "default"
    },
    {
      "key": "authToken",
      "value": "{{your_token_here}}",
      "type": "secret"
    }
  ]
}

Запрос GET /users/{{userId}} с тестами:

// Pre-request Script: Установка переменной (пример)
pm.variables.set("userId", 42);

// Тесты (Tests tab)
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Response has JSON body", function () {
    pm.response.to.be.json;
});

pm.test("User ID matches request", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData.id).to.eql(pm.variables.get("userId"));
});

pm.test("Response time is acceptable", function () {
    pm.expect(pm.response.responseTime).to.be.below(500); // Меньше 500 мс
});

Дополнительные возможности:

  • Мониторинг API: Настройка периодического запуска коллекций для проверки доступности.
  • Документирование: Генерация документации из коллекций.
  • Моки серверов (Mock Servers): Создание заглушек для API на этапе разработки.
  • Работа в команде: Синхронизация коллекций через Workspaces, контроль версий.