Тестирование API с Postman
Postman — это популярное средство для ручного и автоматизированного тестирования API, предоставляющее коллекции, окружения, тесты и интеграцию с CI/CD.
Краткое описание
Если вы работаете с API, обойти Postman вряд ли удастся. Конечно, существуют и другие инструменты, но Postman прост в использовании и широко применяется в обучении.
Независимо от качества документации API, с Postman вы можете проверить конечные точки без написания кода.
Postman — приложение для разработки, тестирования и документирования API. Он позволяет создавать HTTP-запросы, управлять параметрами и заголовками, инспектировать ответы и писать тесты. Collections группируют несколько запросов для удобной организации. Environments хранят переменные вроде URL, токенов и ID, позволяя переключаться между разработкой, тестированием и production. С помощью Tests можно описать утверждения на JavaScript, проверяющие коды статуса, время ответа, заголовки и тело JSON. Newman — это командная строка Postman, которая запускает collections в конвейерах CI/CD. Postman также поддерживает Mock-серверы, мониторы и командную работу. Для профессиональной разработки API Postman незаменим при тестировании на этапе разработки и в production.
Ключевые компоненты
Collections
Collection — это группа запросов в Postman. Вы можете организовать запросы по конечным точкам, функциям или тестовым случаям. Collections можно экспортировать, импортировать, версионировать и публиковать. Они образуют основу документированных и воспроизводимых тестов.
Requests
Запрос в Postman состоит из HTTP-метода, URL, заголовков, тела и параметров. Postman поддерживает все стандартные методы и форматы: JSON, Form-Data, x-www-form-urlencoded и Binary. Ответ можно просмотреть в том же окне.
Environments
Environments содержат переменные, которые изменяются в разных контекстах выполнения. Типичные переменные: baseUrl, apiKey, authToken, userId. С помощью Environments одну и ту же коллекцию можно запускать против разработки, staging и production без дублирования запросов.
Variables
Postman поддерживает несколько уровней переменных: Global, Collection, Environment, Data и Local. Переменные ссылаются двойными фигурными скобками, например {{baseUrl}}. Они обеспечивают гибкость и переиспользование тестов.
Pre-Request Scripts
Pre-Request Scripts выполняются перед отправкой запроса. Их можно использовать для установки переменных, генерации токенов, создания временных меток или динамической подготовки данных. Они полезны для подготовительных шагов, которые не должны быть частью самого теста.
Tests
Тесты Postman — это JavaScript фрагменты, выполняемые после запроса. Они проверяют, например, наличие статуса 200, присутствие поля в ответе или соответствие времени ответа лимиту. Тесты пишутся на вкладке Tests запроса.
Chaining
Chaining означает извлечение значений из ответа и их использование в последующих запросах. Например, вы сохраняете ID из POST-ответа в переменную и используете её в следующем GET-запросе. Это позволяет тестировать реалистичные сценарии.
Newman
Newman — это командная строка Postman. Он запускает collections и генерирует отчёты. Newman идеален для CI/CD-конвейеров, так как автоматизирует тесты и может выводить результаты в различных форматах: HTML, JSON, JUnit.
Monitors
Мониторы Postman запускают collections через регулярные промежутки и отслеживают доступность и корректность API. Они подходят для простого мониторинга API и могут отправлять оповещения при сбоях.
Mock-Server
Postman может создать Mock-сервер из collection, который возвращает предопределённые ответы. Это полезно при разработке клиентов, когда настоящий API ещё не готов, или для предоставления тестовых данных.
Team Collaboration
Postman предоставляет Workspaces для совместной работы команд. Collections, Environments и API можно публиковать, версионировать и комментировать. Роли и разрешения контролируют доступ.
Практический пример
Команда тестирует API пользователей приложения. Collection содержит запросы для создания, получения и обновления пользователя.
Шаг 1: Создание пользователя:
POST {{baseUrl}}/users
Content-Type: application/json
{
"name": "Max Mustermann",
"email": "max@example.com"
}
Тест в ответе:
pm.test("Status code is 201", function () {
pm.response.to.have.status(201);
});
pm.test("Response contains user id", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.environment.set("userId", jsonData.id);
});
Шаг 2: Получение пользователя:
GET {{baseUrl}}/users/{{userId}}
Тест:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Email matches", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.email).to.eql("max@example.com");
});
Шаг 3: Запуск в конвейере с Newman:
newman run user-api.collection.json -e staging.environment.json -r cli,html
Получается непрерывная цепь тестов, которая может выполняться как вручную, так и автоматически.
FAQ: Тестирование API с Postman
1. Что такое Postman?
2. Что такое Postman Collection?
3. Что такое Environments в Postman?
4. Что такое Postman Tests?
5. Что такое Chaining в Postman?
6. Что такое Newman?
7. Как интегрировать Postman в CI/CD?
8. Что такое Postman Monitor?
9. Что такое Mock-Server в Postman?
10. Что такое Pre-Request Scripts?
11. Как хранить секретные значения в Postman?
12. Что такое Postman Console?
13. Можно ли использовать Postman для GraphQL?
14. Что такое Workspaces в Postman?
15. Какие Best Practices для тестирования с Postman?
Продолжение обучения по API
Следующая статья в цикле обучения по API охватывает API Testing: Unit, Integration и Contract Tests — пирамиду тестирования для API от изолированных unit-тестов до contract-тестов.
Источники
- https://learning.postman.com/
- https://github.com/postmanlabs/newman
- https://www.postman.com/api-platform/api-testing/
Рекомендуемые книги по API Testing
Если ты хочешь углубиться в изучение Postman, API Testing и автоматизации тестирования, рекомендуем следующие книги:
Keine Bücher für Kategorie "api-development" gefunden.



