Тестируем API без головной боли: автоматизация с Postman

API-тестирование — один из важнейших этапов разработки, позволяющий убедиться, что серверная часть приложения работает корректно. Однако ручное тестирование каждого сценария может отнимать слишком много времени. Здесь на помощь приходит Postman — популярный инструмент для работы с API. Его возможности автоматизации позволяют существенно ускорить процесс тестирования, делая его удобным даже для начинающих специалистов.
Тестирование API может быть выполнено с помощью различных способов автоматизации. В предыдущей статье мы рассмотрели способы с помощью RestAssured и Postman. Здесь рассмотрим автоматизацию тестирования с переиспользованием предварительных запросов для удобного построения автоматизации в Postman, запуском автотестов через Newman и публикации их результатов в системе управление тестированием Test IT. Этот подход будет полезен начинающим специалистам в автоматизированном тестировании и ручным тестировщикам.
Коротко о возможностях автоматизации в Postman
Postman предоставляет широкий спектр инструментов для автоматизации тестирования API. Среди ключевых возможностей:
-
Скрипты Pre-request и Tests, позволяющие автоматически подготавливать данные и проверять результаты.
-
Коллекции запросов, которые можно запускать пакетно.
-
Интеграция с CI/CD, обеспечивающая тестирование на этапе сборки.
-
Переменные среды, которые упрощают настройку тестов под разные окружения.
-
Генерация отчетов и интеграция с внешними системами управления тестированием.
Описание тестового API с CRUD-операциями
Для демонстрации возможностей автоматизации используем тестовый проект с https://github.com/stillwork-bit/test-api
API предоставляет стандартные CRUD-операции для управления пользователями:
1. Создание пользователя
-
Метод: POST
-
Путь: /api/users
-
Body:
2. Обновление пользователя
-
Метод: PUT
-
Путь: /api/users/{{id_user}}, где id_user- id пользователя
-
Body:
3. Получение пользователя по ID
-
Метод: GET
-
Путь: /api/users/{{id_user}}, где id_user- id пользователя
4. Получение всех пользователей
-
Метод: GET
-
Путь: /api/users
5. Удаление пользователя
-
Метод: DELETE
-
Путь: /api/users/{{user_name}}, где user_name - имя пользователя
Создание коллекции Postman и переменных окружения
Создайте в Postman коллекцию со структурой:
TestAPI
├── Option, PreRequest, Test
└── Collection
Описание каталогов:
-
TestAPI: секция для инициализации базовых переменных в Pre-request.
-
Option, PreRequest, Test: подготовка HTTP Options для создания и удаления пользователя.
-
Collection: логирование названий запросов и выполнение автотестов.
Также в нашем проекте будет подготовлена переменная среды test_api с переменными:
-
url — адрес подключения со значением http://localhost:
-
port — порт подключения со значением 9999.
-
logLevel — уровень логирования со значением info
Эта структура автоматизации в Рostman позволяет на каждом уровне определить необходимые скрипты и переменные для переиспользования в запросах. Например, при пользовательском тестировании API вместо уровня Collection может быть любое количество контроллеров или других элементов.
Пишем автотесты в Postman
Подготовка PreRequest коллекции TestAPI
Во вкладке PreRequest на уровне коллекции TestAPI можно инициализировать переменные для использования в тестах Postman. В примере ниже я написал функцию для получения рандомного значения (не забываем про динамические переменные, реализованные в Postman, чтобы не изобретать колесо), а также условие для отображения заполненных глобальных переменных.

Код PreRequest:
Подготовка Option, PreRequest, Test
В Option, PreRequest, Test во вкладке PreRequest подготовлены option для запросов в тестах с публикацией их в глобальные переменные.

Код PreRequest:
Подготовка Collection
Удобно, если в консоли Postman логируется название запроса, который мы выполняем. Для этого в PreRequest на уровне Collection подготовим скрипт для его отображения.

Код PreRequest:
Написание запросов Postman с RreRequest и Tests
1. Создайте запрос Get all users с заполненным test:
2. Создайте запрос Get user by Id c path {{url}}{{port}}/api/users/161 (в моем случае был id пользователя =161) с заполненным test:
3. Создайте запрос Post new user c path {{url}}{{port}}/api/users с заполненным test:
Body запроса raw json:
4. Создайте запрос Put update user c path {{url}}{{port}}/api/users/{{id_user}} с заполненным prerequest и test
PreRequest:
Test:
Body запроса raw json:
5. Создайте запрос Delete delete user c path {{url}}{{port}}/api/users/{{user_name}} с заполненным prerequest и test
PreRequest:
Test:
Проверка работы запросов
При этом подходе на примере запроса PUT для обновления тестового запроса видны несколько этапов выполнения:
-
Подготовка тестовых данных путем создания тестового пользователя.
-
Выполнение тестового запроса по обновлению тестового пользователя.
-
Удаление тестового пользователя.

Также у вас отрабатывают тесты на каждом этапе:

Как еще можно улучшить проект автоматизации в Postman и убрать дублирование?
-
Вынести проверку status code за пределы запроса (на уровень Collection)
-
Сделать проверку полей
-
Подготовить ID пользователя для запроса Get By ID
и другие шаги.
Публикация автотестов в Test IT
Подготовьте параметры перед публикацией автотестов:
-
Запустите тестовый проект из GitHub.
-
Подготовьте коллекцию запросов в Postman.
-
Экспортируйте тестовую коллекцию и переменные седы в удобный для вас каталог.
-
Для проверки тест-кейсов экспорта автотестов Postman в Test IT вам потребуется проект. Если у вас его нет, то зарегистрируйтесь и создайте проект — например, test-api.
-
Скопируйте project ID и configuration ID из вашего проекта в Test IT. Можно собрать ID из консоли разработчика в разделе Network в запросах конфигурации и переходе в тестовый проект.

6. Скопируйте токен вашего пользователя из Test IT для публикации результатов автотестов.

7. Установите Newman: npm install -g newman.
Создание отчета c помощью Newman + Allure Report и публикация в Test IT
1. Выполните запуск автотестов Postman через Newman с помощью команды для формирования отчета Allure:
2. Установите импортер Allure от Test IT для отчета:
3. Выполните экспорт результатов в TMS Test IT с помощью команды:
В Test IT появится запуск автотестов с вашими тест-кейсами и их статусом выполнения:

Создание отчета c помощью Newman + JUNIT и публикация в Test IT
1. Выполните запуск автотестов Postman через Newman с помощью команды для формирования отчета junit-export results:
2. Установите testit-cli:
3. Выполните экспорт результатов в Test IT с помощью команды:

Подробнее об импорте результатов автотестов в Test IT читайте в документации по ссылке.
Результаты и преимущества
В результате мы не только реализовали автотесты в Postman, но и настроили их запуск и публикацию в системе управления тестированием Test IT. Ознакомьтесь с результатом обновления тестового пользователя и списком выполненных шагов:

Это дает нам следующие преимущества:
-
Упрощение работы: Postman позволяет быстро автоматизировать даже сложные сценарии.
-
Скорость: Использование автоматизации уменьшает затраты времени на ручное тестирование.
-
Интеграция: Возможность интеграции с CI/CD и системами управления тестами.
Начать автоматизацию в Postman — это первый шаг к более быстрому и качественному тестированию API. С Test IT вы сможете эффективно управлять результатами и улучшать процессы тестирования.
Оцените возможности Test IT прямо сейчас на бесплатном тарифе