Исследование с 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 последовательно выполняет все запросы в коллекции с проверкой тестовых утверждений.
Запуск коллекции
- Нажмите "Runner" в Postman
- Выберите коллекцию
- Выберите окружение
- Задайте количество итераций (выполнить всю коллекцию N раз)
- Загрузите файл данных для тестирования на основе данных
Тестирование на основе данных
Создайте 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 пайплайнов переходите на автоматизацию на основе кода.
Практическое упражнение
- Найдите публичный API с OpenAPI-спецификацией (например, Petstore, JSONPlaceholder или API вашей компании)
- Импортируйте спецификацию в Postman
- Создайте окружения staging и production
- Напишите тестовые скрипты для минимум 5 эндпоинтов: проверьте коды состояния, структуру ответа и отсутствие конфиденциальных данных
- Свяжите запрос авторизации с защищённым эндпоинтом через переменные окружения
- Запустите коллекцию через Collection Runner и проверьте результаты
Ключевые выводы
- Используйте Postman для исследования API перед написанием автоматизированных тестов
- Настройте окружения для лёгкого переключения между dev/staging/production
- Пишите тестовые скрипты для валидации ответов на месте
- Связывайте запросы через переменные окружения (сохраните токен из логина, используйте в последующих запросах)
- Используйте Collection Runner для пакетного выполнения и тестирования на основе данных
- Переходите на автоматизацию на основе кода (pytest, Newman) для CI/CD