Modern QA2026Исследование с Postman
Join

Course14 API Testing Fundamentals

Foundations · Chapter 14

Исследование с Postman

Updated Jul 2026

Прежде чем автоматизировать, разберитесь в API. Postman — универсальный инструмент для ручного исследования API. Он позволяет отправлять запросы, инспектировать ответы, выстраивать цепочки вызовов и формировать ментальную модель поведения API до написания единой строки тестового кода.

Начало работы с Postman

1. Импортируйте спецификацию API

Большинство API предоставляют спецификацию OpenAPI (Swagger). Импорт её в Postman автоматически генерирует коллекцию со всеми эндпоинтами, схемами тел запросов и примерами параметров.

File > Import > OpenAPI/Swagger URL or file

Это даёт вам мгновенную отправную точку: каждый эндпоинт документирован с ожидаемыми параметрами и схемами ответов.

2. Настройте окружения

Окружения содержат переменные, переключающиеся между dev/staging/production без модификации запросов.

Переменная Dev Staging Production
{{base_url}} http://localhost:3000 https://api.staging.example.com https://api.example.com
{{auth_token}} (dev-токен) (staging-токен) (read-only prod-токен)
{{timeout}} 5000 10000 10000

Переключайте окружения через выпадающий список в правом верхнем углу. Все запросы, использующие {{base_url}}, автоматически указывают на правильный сервер.

3. Организуйте коллекции

Структурируйте коллекции так, чтобы они отражали структуру API:

My API Collection/
  Auth/
    POST Login
    POST Refresh Token
    POST Logout
  Users/
    GET List Users
    GET Get User by ID
    POST Create User
    PUT Update User
    DELETE Delete User
  Orders/
    GET List Orders
    POST Create Order
    GET Get Order by ID

Написание тестовых скриптов

Тестовые скрипты Postman выполняются после каждого запроса, валидируя ответы на месте.

Базовые утверждения

// Status code
pm.test("Status is 200", () => {
    pm.response.to.have.status(200);
});

// Response has expected fields
pm.test("Response has user ID", () => {
    const data = pm.response.json();
    pm.expect(data.id).to.be.a("number");
    pm.expect(data.email).to.be.a("string");
    pm.expect(data).to.not.have.property("password");
});

// Response time
pm.test("Response time < 500ms", () => {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

// Headers
pm.test("Content-Type is JSON", () => {
    pm.response.to.have.header("Content-Type", "application/json; charset=utf-8");
});

Цепочки запросов

Извлечение данных из одного запроса для использования в следующем:

// In POST /auth/login Tests tab:
pm.test("Save auth token", () => {
    const token = pm.response.json().access_token;
    pm.environment.set("auth_token", token);
});

// In subsequent requests, use {{auth_token}} in the Authorization header:
// Bearer {{auth_token}}

Динамические переменные

Postman предоставляет встроенные динамические переменные:

{{$randomEmail}}      -> random email address
{{$randomFullName}}   -> random name
{{$randomUUID}}       -> UUID v4
{{$timestamp}}        -> current Unix timestamp
{{$randomInt}}        -> random integer

Скрипты предварительного запроса

Скрипты предварительного запроса выполняются перед отправкой запроса — полезны для генерации динамических данных или вычисления подписей.

// Generate a unique email for each test run
const timestamp = Date.now();
pm.environment.set("test_email", `testuser_${timestamp}@test.com`);

// Calculate HMAC signature for signed requests
const CryptoJS = require('crypto-js');
const secret = pm.environment.get("api_secret");
const payload = JSON.stringify(pm.request.body.raw);
const signature = CryptoJS.HmacSHA256(payload, secret).toString();
pm.request.headers.add({ key: "X-Signature", value: signature });

Collection Runner

Collection Runner последовательно выполняет все запросы в коллекции с проверкой тестовых утверждений.

Запуск коллекции

  1. Нажмите "Runner" в Postman
  2. Выберите коллекцию
  3. Выберите окружение
  4. Задайте количество итераций (выполнить всю коллекцию N раз)
  5. Загрузите файл данных для тестирования на основе данных

Тестирование на основе данных

Создайте CSV или JSON файл с тестовыми данными:

email,password,expected_status
valid@test.com,ValidPass123!,200
invalid@test.com,wrong,401
,ValidPass123!,400
valid@test.com,,400

В теле запроса используйте ссылки на столбцы: {{email}}, {{password}}

В тестовом скрипте:

pm.test(`Login with ${pm.iterationData.get("email")} returns ${pm.iterationData.get("expected_status")}`, () => {
    pm.response.to.have.status(parseInt(pm.iterationData.get("expected_status")));
});

Мониторы и рабочие области Postman

Мониторы

Планирование автоматического запуска коллекций (например, каждый час) с получением алертов при сбоях тестов. Полезно для проверок здоровья продакшена.

Рабочие области

Общий доступ к коллекциям для членов команды. Изменения синхронизируются автоматически. Используйте рабочие области для командной документации API и общих тестовых коллекций.

Ограничения Postman

Ограничение Влияние Альтернатива
Не идеален для CI/CD Требуется Newman для выполнения из командной строки Используйте Newman или pytest напрямую
Коллекции становятся неуправляемыми при масштабировании Сложно управлять 500+ запросами Используйте тесты на основе кода (pytest)
Ограниченная модель программирования Только JavaScript, ограниченные библиотеки Полная экосистема языка в pytest/Jest
Контроль версий JSON-экспорт сложно сравнивать Тесты на основе кода в Git
Сложные утверждения Трудно создавать переиспользуемые библиотеки утверждений Библиотеки утверждений Python/TypeScript

Postman отлично подходит для исследования и прототипирования. Для продакшен CI/CD пайплайнов переходите на автоматизацию на основе кода.

Практическое упражнение

  1. Найдите публичный API с OpenAPI-спецификацией (например, Petstore, JSONPlaceholder или API вашей компании)
  2. Импортируйте спецификацию в Postman
  3. Создайте окружения staging и production
  4. Напишите тестовые скрипты для минимум 5 эндпоинтов: проверьте коды состояния, структуру ответа и отсутствие конфиденциальных данных
  5. Свяжите запрос авторизации с защищённым эндпоинтом через переменные окружения
  6. Запустите коллекцию через Collection Runner и проверьте результаты

Ключевые выводы

  • Используйте Postman для исследования API перед написанием автоматизированных тестов
  • Настройте окружения для лёгкого переключения между dev/staging/production
  • Пишите тестовые скрипты для валидации ответов на месте
  • Связывайте запросы через переменные окружения (сохраните токен из логина, используйте в последующих запросах)
  • Используйте Collection Runner для пакетного выполнения и тестирования на основе данных
  • Переходите на автоматизацию на основе кода (pytest, Newman) для CI/CD