Начало работы с Postman
Postman — самый популярный инструмент для тестирования API, используемый более чем 30 миллионами разработчиков и тестировщиков по всему миру. Он предоставляет визуальный интерфейс для отправки HTTP-запросов, инспекции ответов и написания автоматизированных тестовых проверок — всё это без написания кода.
Установка
Скачайте Postman с postman.com/downloads. Он доступен для Windows, macOS и Linux. Хотя существует веб-версия, настольное приложение предлагает лучшую производительность и дополнительные функции, такие как локальные прокси и управление сертификатами.
После установки создайте бесплатный аккаунт. Хотя Postman можно использовать без аккаунта, авторизация включает облачную синхронизацию коллекций между устройствами.
Интерфейс Postman
Основное рабочее пространство состоит из:
- Боковая панель — коллекции, окружения, история
- Конструктор запросов — строка URL, выбор метода, вкладки для params/headers/body/tests
- Просмотрщик ответов — тело, заголовки, код статуса, время ответа, размер
- Консоль — логи из скриптов и детали запросов (View > Show Postman Console)
Ваш первый запрос
Отправим простой GET-запрос:
- Нажмите + для открытия новой вкладки запроса
- Выберите GET из выпадающего списка методов
- Введите
https://jsonplaceholder.typicode.com/posts/1 - Нажмите Send
Вы должны увидеть JSON-ответ со статусом 200 OK, содержащий поля userId, id, title и body.
Теперь попробуйте POST-запрос:
- Измените метод на POST
- URL:
https://jsonplaceholder.typicode.com/posts - Перейдите на вкладку Body > выберите raw > выберите JSON
- Введите:
{
"title": "Мой первый пост",
"body": "Тестирование с Postman",
"userId": 1
}
- Нажмите Send — вы должны получить 201 Created
Коллекции: организация тестов
Коллекции — это папки, группирующие связанные API-запросы. Думайте о них как о тестовых наборах (test suite).
Создание коллекции
- Нажмите Collections на боковой панели
- Нажмите + для создания новой коллекции
- Назовите её «JSONPlaceholder API Tests»
- Добавьте папки для разных типов ресурсов: Posts, Users, Comments
Добавление запросов в коллекции
Правый клик по коллекции > Add Request. Называйте каждый запрос описательно:
GET All PostsGET Single PostPOST Create PostPUT Update PostDELETE Remove Post
Лучшие практики структуры коллекций
📁 Project API Tests
├── 📁 Authentication
│ ├── POST Login
│ ├── POST Register
│ └── POST Refresh Token
├── 📁 Users
│ ├── GET List Users
│ ├── GET Get User by ID
│ ├── POST Create User
│ ├── PUT Update User
│ └── DELETE Remove User
├── 📁 Orders
│ ├── GET List Orders
│ ├── POST Create Order
│ └── PATCH Update Order Status
└── 📁 Negative Tests
├── GET Non-existent Resource
├── POST Invalid Payload
└── DELETE Unauthorized
Переменные и окружения
Переменные устраняют захардкоженные значения и делают коллекции переиспользуемыми в разных окружениях (dev, staging, production).
Переменные окружения
Создайте окружения для каждого сервера:
Development:
base_url: http://localhost:3000/api
auth_token: dev-token-123
admin_email: admin@dev.example.com
Staging:
base_url: https://staging-api.example.com
auth_token: staging-token-456
admin_email: admin@staging.example.com
Используйте переменные в запросах с двойными фигурными скобками:
GET {{base_url}}/users/{{user_id}}
Authorization: Bearer {{auth_token}}
Области видимости переменных
Postman имеет четыре области видимости (от высшего приоритета к низшему):
- Local — устанавливаются в скриптах, существуют только во время выполнения
- Environment — привязаны к выбранному окружению
- Collection — общие для всех запросов в коллекции
- Global — доступны во всех коллекциях
Написание тестов в Postman
Вкладка Tests позволяет писать JavaScript-проверки, выполняемые после получения ответа.
Базовые проверки
// Проверить код статуса
pm.test("Код статуса 200", function () {
pm.response.to.have.status(200);
});
// Проверить время ответа
pm.test("Время ответа менее 500мс", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// Проверить данные в теле ответа
pm.test("Ответ содержит правильное имя пользователя", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.eql("Alice Johnson");
});
// Проверить наличие обязательных полей
pm.test("Ответ содержит все обязательные поля", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData).to.have.property("name");
pm.expect(jsonData).to.have.property("email");
});
// Проверить длину массива
pm.test("Возвращает минимум 10 постов", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.length).to.be.at.least(10);
});
Связывание запросов через переменные
Извлекайте значения из ответов и используйте их в последующих запросах:
// В POST Create User (вкладка Tests):
pm.test("Сохранить ID созданного пользователя", function () {
var jsonData = pm.response.json();
pm.environment.set("created_user_id", jsonData.id);
});
// В GET Get User (URL):
// {{base_url}}/users/{{created_user_id}}
Pre-Request Scripts
Выполнение JavaScript перед отправкой запроса:
// Сгенерировать уникальный email для каждого запуска
var timestamp = Date.now();
pm.environment.set("test_email", "user" + timestamp + "@test.com");
// Сгенерировать случайное число
pm.environment.set("random_id", Math.floor(Math.random() * 1000));
Запуск коллекций
Collection Runner
Нажмите Run на коллекции для выполнения всех запросов последовательно:
- Выберите окружение
- Установите количество итераций (запуск набора несколько раз)
- Добавьте файл данных (CSV/JSON) для data-driven тестирования
- Установите задержку между запросами
- Нажмите Run
Runner показывает pass/fail для каждой тестовой проверки и предоставляет итоговый отчёт.
Newman: запуск из командной строки
Newman запускает коллекции Postman из терминала, что идеально для CI/CD.
Установка Newman:
npm install -g newman
Запуск коллекции:
# Экспортировать коллекцию из Postman как JSON
newman run my-collection.json -e staging-environment.json
# С HTML-отчётом
newman run my-collection.json -e staging.json -r htmlextra
# Установить количество итераций
newman run my-collection.json --iteration-count 5
Пример интеграции с CI/CD (GitHub Actions)
- name: Run API Tests
run: |
npm install -g newman newman-reporter-htmlextra
newman run tests/api-collection.json \
-e tests/staging-env.json \
-r cli,htmlextra \
--reporter-htmlextra-export reports/api-report.html
Продвинутые возможности
Data-Driven тестирование
Создайте CSV или JSON файл с тестовыми данными:
email,name,expected_status
valid@test.com,Alice,201
invalid-email,Bob,400
,Charlie,400
a@b.c,Dave,201
Ссылайтесь на переменные данных: {{email}}, {{name}}, {{expected_status}}
Mock-серверы
Создавайте mock API для фронтенд-разработки или тестирования, когда реальный API недоступен. Postman генерирует URL mock-сервера на основе сохранённых ответов вашей коллекции.
Документация API
Postman автоматически генерирует документацию из ваших коллекций, включая примеры запросов, образцы ответов и описания. Публикуйте её как публичный или приватный URL.
Практическое упражнение
- Создайте коллекцию для JSONPlaceholder с запросами для CRUD-операций Posts
- Настройте два окружения (можете использовать один URL с разными переменными для имитации)
- Напишите тесты для каждого запроса, проверяя коды статуса и структуру ответов
- Свяжите запросы: Создайте пост, извлеките его ID, найдите его по ID, обновите, затем удалите
- Запустите коллекцию через Collection Runner и убедитесь, что все тесты проходят
Ключевые выводы
- Postman предоставляет визуальный интерфейс для построения, организации и запуска API-тестов без кода
- Коллекции организуют запросы в логические группы; окружения управляют переменными для каждого сервера
- Переменные (local, environment, collection, global) устраняют захардкоженные значения и обеспечивают переиспользуемость
- Тестовые скрипты используют JavaScript-проверки для валидации кодов статуса, тел ответов и заголовков
- Newman переносит коллекции Postman в CI/CD-пайплайны для автоматизированного регрессионного тестирования