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

Postman — самый популярный инструмент для тестирования API, используемый более чем 30 миллионами разработчиков и тестировщиков по всему миру. Он предоставляет визуальный интерфейс для отправки HTTP-запросов, инспекции ответов и написания автоматизированных тестовых проверок — всё это без написания кода.

Установка

Скачайте Postman с postman.com/downloads. Он доступен для Windows, macOS и Linux. Хотя существует веб-версия, настольное приложение предлагает лучшую производительность и дополнительные функции, такие как локальные прокси и управление сертификатами.

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

Интерфейс Postman

Основное рабочее пространство состоит из:

  • Боковая панель — коллекции, окружения, история
  • Конструктор запросов — строка URL, выбор метода, вкладки для params/headers/body/tests
  • Просмотрщик ответов — тело, заголовки, код статуса, время ответа, размер
  • Консоль — логи из скриптов и детали запросов (View > Show Postman Console)

Ваш первый запрос

Отправим простой GET-запрос:

  1. Нажмите + для открытия новой вкладки запроса
  2. Выберите GET из выпадающего списка методов
  3. Введите https://jsonplaceholder.typicode.com/posts/1
  4. Нажмите Send

Вы должны увидеть JSON-ответ со статусом 200 OK, содержащий поля userId, id, title и body.

Теперь попробуйте POST-запрос:

  1. Измените метод на POST
  2. URL: https://jsonplaceholder.typicode.com/posts
  3. Перейдите на вкладку Body > выберите raw > выберите JSON
  4. Введите:
{
  "title": "Мой первый пост",
  "body": "Тестирование с Postman",
  "userId": 1
}
  1. Нажмите Send — вы должны получить 201 Created

Коллекции: организация тестов

Коллекции — это папки, группирующие связанные API-запросы. Думайте о них как о тестовых наборах (test suite).

Создание коллекции

  1. Нажмите Collections на боковой панели
  2. Нажмите + для создания новой коллекции
  3. Назовите её «JSONPlaceholder API Tests»
  4. Добавьте папки для разных типов ресурсов: Posts, Users, Comments

Добавление запросов в коллекции

Правый клик по коллекции > Add Request. Называйте каждый запрос описательно:

  • GET All Posts
  • GET Single Post
  • POST Create Post
  • PUT Update Post
  • DELETE 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 имеет четыре области видимости (от высшего приоритета к низшему):

  1. Local — устанавливаются в скриптах, существуют только во время выполнения
  2. Environment — привязаны к выбранному окружению
  3. Collection — общие для всех запросов в коллекции
  4. 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 на коллекции для выполнения всех запросов последовательно:

  1. Выберите окружение
  2. Установите количество итераций (запуск набора несколько раз)
  3. Добавьте файл данных (CSV/JSON) для data-driven тестирования
  4. Установите задержку между запросами
  5. Нажмите 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.

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

  1. Создайте коллекцию для JSONPlaceholder с запросами для CRUD-операций Posts
  2. Настройте два окружения (можете использовать один URL с разными переменными для имитации)
  3. Напишите тесты для каждого запроса, проверяя коды статуса и структуру ответов
  4. Свяжите запросы: Создайте пост, извлеките его ID, найдите его по ID, обновите, затем удалите
  5. Запустите коллекцию через Collection Runner и убедитесь, что все тесты проходят

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

  • Postman предоставляет визуальный интерфейс для построения, организации и запуска API-тестов без кода
  • Коллекции организуют запросы в логические группы; окружения управляют переменными для каждого сервера
  • Переменные (local, environment, collection, global) устраняют захардкоженные значения и обеспечивают переиспользуемость
  • Тестовые скрипты используют JavaScript-проверки для валидации кодов статуса, тел ответов и заголовков
  • Newman переносит коллекции Postman в CI/CD-пайплайны для автоматизированного регрессионного тестирования