TL;DR
- Postman — самый популярный инструмент API-тестирования с 30M+ разработчиков
- Организуй запросы в Коллекции с папками для связанных эндпоинтов
- Используй Окружения для переключения между dev/staging/production без изменения запросов
- Пиши тесты на JavaScript используя
pm.test()— выполняются после каждого запроса- Newman CLI запускает коллекции в CI/CD пайплайнах
Подходит для: QA-инженеров, изучающих API-тестирование, разработчиков, тестирующих свои API Пропусти, если: Предпочитаешь code-only инструменты (REST Assured, requests) или нужен сложный скриптинг Время чтения: 12 минут
Ты тестируешь API вручную. Копируешь токен из ответа логина, вставляешь в следующий запрос, меняешь URL для staging, повторяешь для production. Это быстро надоедает.
Postman решает эту проблему. Коллекции организуют запросы. Окружения хранят переменные. Тест-скрипты автоматически валидируют ответы. Newman запускает всё в CI/CD.
Начало работы
Установка
Скачай с postman.com/downloads. Доступен для Windows, macOS, Linux и как веб-приложение.
Твой первый запрос
- Нажми New → HTTP Request
- Введи URL:
https://jsonplaceholder.typicode.com/posts/1 - Нажми Send
- Смотри ответ со статусом, временем и телом
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit..."
}
HTTP методы
| Метод | Использование | Пример |
|---|---|---|
| GET | Получение данных | Получить профиль пользователя |
| POST | Создание ресурса | Создать нового пользователя |
| PUT | Замена ресурса | Обновить всего пользователя |
| PATCH | Частичное обновление | Обновить только email |
| DELETE | Удаление ресурса | Удалить пользователя |
Коллекции: Организация запросов
Коллекции группируют связанные запросы. Думай о них как о папках для твоих API-тестов.
Создание коллекции
- Нажми Collections в sidebar
- Нажми + для создания новой коллекции
- Назови “User API Tests”
- Правый клик → Add Request
Структура коллекции
User API Tests/
├── Authentication/
│ ├── Login
│ ├── Refresh Token
│ └── Logout
├── Users/
│ ├── Get All Users
│ ├── Get User by ID
│ ├── Create User
│ ├── Update User
│ └── Delete User
└── Posts/
├── Get User Posts
└── Create Post
Окружения: Управление переменными
Окружения хранят переменные, которые меняются между контекстами (dev, staging, production).
Создание окружения
- Нажми Environments в sidebar
- Нажми + для создания нового
- Назови “Development”
- Добавь переменные:
| Переменная | Initial Value | Current Value |
|---|---|---|
| base_url | https://api.dev.example.com | https://api.dev.example.com |
| api_key | dev_key_123 | dev_key_123 |
Использование переменных
Ссылайся на переменные двойными фигурными скобками:
GET {{base_url}}/users
Authorization: Bearer {{access_token}}
Области видимости переменных
| Область | Видимость | Использование |
|---|---|---|
| Global | Все коллекции | Общие для всего |
| Environment | Активное окружение | URL, credentials по окружениям |
| Collection | Одна коллекция | Данные конкретной коллекции |
| Local | Один запрос | Временные значения |
Установка переменных в скриптах
// Pre-request Script (выполняется до запроса)
pm.environment.set("timestamp", Date.now());
pm.environment.set("random_email", `user_${Date.now()}@test.com`);
// Tests tab (выполняется после ответа)
const response = pm.response.json();
pm.environment.set("user_id", response.id);
pm.collectionVariables.set("last_created_user", response.id);
Написание тестов
Тесты выполняются после каждого запроса. Используй JavaScript с API pm от Postman.
Базовые assertions
// Статус код
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
// Время ответа
pm.test("Response time is less than 500ms", function() {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// JSON тело
pm.test("Response has correct user ID", function() {
const response = pm.response.json();
pm.expect(response.id).to.eql(1);
pm.expect(response.name).to.be.a('string');
});
// Заголовки
pm.test("Content-Type is JSON", function() {
pm.response.to.have.header("Content-Type", "application/json; charset=utf-8");
});
Распространенные паттерны тестов
// Проверка длины массива
pm.test("Returns 10 users", function() {
const users = pm.response.json();
pm.expect(users).to.be.an('array');
pm.expect(users.length).to.eql(10);
});
// Проверка структуры объекта
pm.test("User has required fields", function() {
const user = pm.response.json();
pm.expect(user).to.have.property('id');
pm.expect(user).to.have.property('email');
pm.expect(user).to.have.property('name');
});
// Проверка вложенных свойств
pm.test("Address has city", function() {
const user = pm.response.json();
pm.expect(user.address.city).to.be.a('string');
});
// Валидация ответа об ошибке
pm.test("Error response has message", function() {
if (pm.response.code === 400) {
const error = pm.response.json();
pm.expect(error).to.have.property('message');
}
});
Валидация JSON Schema
const schema = {
"type": "object",
"required": ["id", "email", "name"],
"properties": {
"id": { "type": "integer" },
"email": { "type": "string", "format": "email" },
"name": { "type": "string", "minLength": 1 }
}
};
pm.test("Response matches schema", function() {
pm.response.to.have.jsonSchema(schema);
});
Аутентификация
Bearer Token
Authorization: Bearer {{access_token}}
Или во вкладке Authorization:
- Выбери Bearer Token
- Введи
{{access_token}}
Автоматическое обновление токена
// Во вкладке Tests запроса Login
pm.test("Login successful", function() {
pm.response.to.have.status(200);
const response = pm.response.json();
pm.environment.set("access_token", response.access_token);
pm.environment.set("refresh_token", response.refresh_token);
// Установить время истечения
const expiresIn = response.expires_in * 1000;
pm.environment.set("token_expiry", Date.now() + expiresIn);
});
Data-Driven тестирование
Запускай один запрос с разными данными используя CSV или JSON файлы.
CSV файл (users.csv)
email,name,age
john@test.com,John Doe,30
jane@test.com,Jane Smith,25
bob@test.com,Bob Wilson,35
Использование данных в запросе
// Тело запроса
{
"email": "{{email}}",
"name": "{{name}}",
"age": {{age}}
}
Запуск с данными
- Нажми Run на коллекции
- Выбери Data → Укажи CSV файл
- Установи количество итераций
- Нажми Run
Newman: CLI Runner
Newman запускает коллекции Postman из командной строки — необходим для CI/CD.
Установка
npm install -g newman
Базовое использование
# Запустить коллекцию
newman run collection.json
# С окружением
newman run collection.json -e environment.json
# С итерациями
newman run collection.json -n 5
# С файлом данных
newman run collection.json -d users.csv
Интеграция с CI/CD
# .github/workflows/api-tests.yml
name: API Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Newman
run: npm install -g newman newman-reporter-htmlextra
- name: Run API Tests
run: |
newman run postman/collection.json \
-e postman/staging.json \
-r cli,htmlextra \
--reporter-htmlextra-export reports/api-report.html
- name: Upload Report
if: always()
uses: actions/upload-artifact@v4
with:
name: api-test-report
path: reports/
AI-Assisted разработка в Postman
AI-инструменты могут ускорить твой workflow в Postman.
Что AI делает хорошо:
- Генерация тест-скриптов из документации API
- Создание JSON-схем из примеров ответов
- Написание скриптов трансформации данных
- Объяснение ошибок API
- Конвертация cURL команд в запросы Postman
Что всё ещё требует людей:
- Проектирование стратегии и покрытия тестов
- Решение, какие edge cases тестировать
- Понимание валидации бизнес-логики
- Отладка периодических сбоев
Полезный промпт:
У меня есть такой ответ API:
{
"user": {
"id": 123,
"email": "test@example.com",
"profile": {
"name": "John",
"age": 30
}
},
"token": "eyJ..."
}
Напиши Postman тесты, которые:
1. Валидируют статус 200
2. Проверяют, что user имеет id, email и profile
3. Проверяют, что profile имеет name и age
4. Сохраняют token в переменную окружения
5. Валидируют время ответа менее 500ms
FAQ
Postman бесплатный для API-тестирования?
Да. Бесплатный тариф Postman включает неограниченные запросы, коллекции, окружения и тест-скрипты. Можно запускать коллекции вручную и использовать Newman для CI/CD. Платные планы добавляют командные workspace, мониторинг, mock-серверы и продвинутые функции.
Как писать тесты в Postman?
Используй вкладку Tests в любом запросе. Пиши JavaScript с API pm от Postman:
pm.test("Status is 200", function() {
pm.response.to.have.status(200);
});
pm.test("Has user ID", function() {
const data = pm.response.json();
pm.expect(data.id).to.exist;
});
Тесты автоматически выполняются после каждого запроса и показывают pass/fail в результатах.
Что такое Newman в Postman?
Newman — CLI-раннер коллекций Postman. Установи через npm install -g newman, затем запускай newman run collection.json. Необходим для интеграции с CI/CD — работает в headless-окружениях, генерирует отчеты и возвращает exit-коды для статуса пайплайна.
Может ли Postman тестировать GraphQL API?
Да. Postman имеет встроенную поддержку GraphQL:
- Редактор запросов с подсветкой синтаксиса
- Интроспекция схемы для автокомплита
- Поддержка переменных для динамических запросов
- Те же возможности скриптинга, что и для REST
Выбери GraphQL как тип body и пиши свой запрос.
Когда выбирать Postman
Выбирай Postman когда:
- Команде нужен визуальный инструмент API-тестирования
- Хочешь быстрое создание тестов без кодирования
- Нужен шеринг коллекций и коллаборация
- Создаешь документацию API вместе с тестами
- Предпочитаешь GUI вместо code-only инструментов
Рассмотри альтернативы когда:
- Нужна сложная программная логика тестов (REST Assured)
- Хочешь тесты в том же репо, что и код (pytest + requests)
- Команда предпочитает TypeScript (Playwright API testing)
- Нужно нагрузочное тестирование (k6, JMeter)
Официальные ресурсы
Смотрите также
- API Testing Mastery - Полное руководство по стратегиям API-тестирования
- Postman Automation Guide - Продвинутая автоматизация с Newman и CI/CD
- REST Assured Tutorial - Code-first API-тестирование на Java
- Postman Alternatives - Bruno, Insomnia и другие варианты
