Postman для API тестирования: гайд для начинающих QA
Postman для API тестирования: первый тест за 5 минут
Сложность: 4,5/5
Работаешь Manual QA? Видел в вакансиях требование "API тестирование"? Не знаешь что это и с чего начать?
Postman — самый популярный инструмент для тестирования API. Я покажу как сделать первый запрос за 5 минут. С установкой. С примерами. Без сложной теории.
После статьи запустишь свой первый API тест. И поймёшь что это не страшно.
Быстрый старт (5 минут)
Скачай Postman с postman.com (бесплатно)
Установи и открой
Создай новый запрос: кнопка "New" → "HTTP Request"
Увидел JSON ответ внизу? Поздравляю — первый API запрос готов!
Работает? Читай дальше — разберём что произошло.
Что такое API и зачем его тестировать
API (Application Programming Interface) — способ как программы общаются между собой.
Пример:
Открываешь приложение погоды. Оно отправляет запрос на сервер: "дай погоду для Москвы". Сервер отвечает JSON с данными. Приложение показывает тебе погоду.
Запрос к серверу — это API запрос.
Зачем тестировать API:
✅ Быстрее чем UI (не надо кликать кнопки)
✅ Стабильнее (нет проблем с вёрсткой, анимациями)
✅ Находишь баги на backend до UI
✅ Можешь автоматизировать легко
✅ Проверяешь данные напрямую
Что тестируем:
Правильность данных (корректный JSON)
Статус коды (200, 400, 500)
Время ответа (performance)
Авторизацию (токены, права доступа)
Валидацию (что будет если ввести неверные данные)
API vs UI тестирование: в чём разница
Правило: сначала проверь API. Потом UI. Найдёшь баги раньше.
Нажми Send. Внизу вкладка Test Results — видишь результаты проверок.
Проверка JSON ответа
// Парсим JSON pm.test("Response has correct structure", 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("ID is 1", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).to.eql(1); });
// Проверяем тип данных pm.test("Email is a string", function () { var jsonData = pm.response.json(); pm.expect(jsonData.email).to.be.a("string"); });
// Проверяем что email содержит @ pm.test("Email contains @", function () { var jsonData = pm.response.json(); pm.expect(jsonData.email).to.include("@"); });
Snippets (готовые шаблоны):
Справа во вкладке Tests есть кнопки с готовыми проверками. Кликай — код вставляется автоматически.
Запуск коллекции через Runner
Collection Runner — запускает все тесты коллекции разом.
Шаги:
Открой коллекцию
Кнопка Run (справа вверху)
Выбери запросы которые запустить
Выбери окружение
Кнопка Run [Collection Name]
Результат:
Видишь какие тесты прошли (зелёные), какие упали (красные).
Плюсы:
✅ Регрессионное тестирование за 1 клик
✅ Видишь все баги разом
✅ Можно сохранить результаты
Newman: запуск через командную строку
Newman — CLI для Postman. Запускаешь коллекции без GUI.
Зачем:
✅ Интеграция в CI/CD (Jenkins, GitLab)
✅ Запуск на сервере без интерфейса
✅ Автоматизация в расписании
Установка:
bash npm install -g newman
Экспорт коллекции:
Коллекция → три точки → Export
Сохрани как collection.json
Запуск:
bash newman run collection.json
С окружением:
bash newman run collection.json -e environment.json
Отчёт HTML:
bash npm install -g newman-reporter-htmlextra newman run collection.json -r htmlextra
💡 Хочешь интегрировать API тесты в CI/CD? На курсе автоматизации разберём Newman + Jenkins подробно.
Частые ошибки новичков
1. Не проверяют статус коды
Запрос прошёл, данные есть — думают всё ок. А статус 500 (ошибка сервера).
Решение: всегда проверяй статус.
2. Забывают Headers
Отправляют JSON без Content-Type: application/json. Сервер не понимает формат.
Решение: проверяй Headers, особенно при POST/PUT.
3. Хардкодят данные
Пишут URL прямо в запросах. Потом меняется сервер — надо менять везде.
Решение: используй переменные окружения.
4. Не организуют коллекции
Все запросы в куче. Невозможно найти нужный.
Решение: структурируй по папкам.
5. Не используют Pre-request Scripts
Нужен токен для каждого запроса. Копируют вручную каждый раз.
Решение:
// Pre-request Script на уровне коллекции pm.sendRequest({ url: "{{base_url}}/auth/login", method: "POST", body: { mode: "raw", raw: JSON.stringify({ username: "admin", password: "admin123" }) } }, function (err, res) { pm.environment.set("auth_token", res.json().token); });