Всем привет!
Меня зовут Федор, я QA-специалист в компании ITFB Group. В процессе тестирования программного продукта в зависимости от поставленных задач мне довольно часто приходится использовать Postman — популярный инструмент, который позволяет создавать и тестировать API. Для целей тестирования Postman позволяет создавать коллекции запросов к API, в том числе и для разных окружений, настраивать Mock-серверы для имитации работы эндпоинтов, писать простые автотесты на JavaScript, анализировать результаты выполнения запросов. В некоторых кейсах приходится создавать тест-раны для каскадной проверки работы вызова API и корректности возвращаемых ответов.
Помимо этого, в ходе тестирования ПО часто применяются системы управления тестированием (Test Management System, TMS) для упрощения ведения тестовых артефактов, быстрого запуска автотестов, анализа и визуализации значений тестовых метрик. И, несомненно, важно, чтобы результаты как ручных, так и автоматических тестов консолидировались в TMS. На одном из моих проектов применялась TMS TestIT от отечественных разработчиков. В настоящий момент TMS TestIT активно развивается, но, к сожалению, довелось столкнуться с малой информативностью имеющейся документации к ней. Это и вдохновило меня написать данную статью, чтобы помочь коллегам-тестировщикам, которым потребуется использовать Postman и TestIT в своих проектах.
В данной статье расскажу об одном из способов запуска тест-ранов API-запросов, созданных в Postman, с последующим экспортом результатов в систему управления тестированием TestIT с локального ПК на ОС Windows 11.
Интеграция Postman и TestIT реализуется по следующей схеме:
Postman → Newman → TestIT CLI → Проект в TestIT
Теперь подробнее о каждом элементе.
Postman — это, собственно, наш инструмент, в котором мы формируем коллекцию тест-ранов.
Newman — инструмент командной строки для Postman. Он позволяет запускать и тестировать коллекцию запросов прямо из командной строки, настроить необходимые параметры. Создавался с учетом возможности интеграции с CI, системами сборки и тест-системами.
TestIT CLI — специальная утилита командной строки, которая помогает взаимодействовать с системой управления тестированием TestIT. Она позволяет быстро собирать и загружать результаты автоматизированных тестов, работать с любыми тестовыми фреймворками и интегрироватьcя в них. TestIT CLI распространяется как пакет Python и может устанавливаться на любые платформы (Linux, Windows и macOS) и окружения (отдельные серверы, контейнеры Docker, CI/CD системы и т. д.).
Проект в TestIT — это сам проект в системе управления тестированием TestIT, куда будут загружаться результаты тест-ранов.
В рамках данной статьи мы рассматриваем ручной метод запуска, большая часть операций проводится в интерфейсе командной строки. В данном случае по умолчанию использовалась системная утилита Windows PowerShell.
Прежде чем осуществлять процесс запуска, необходимо провести предварительные действия.
1. Установить Node.JS. Это необходимо для работы Newman. Последняя версия доступна по ссылке на официальном сайте.
2. Используя утилиту PowerShell, установить Newman, введя команду:
npm install — g newman
Возможно, что политика безопасности Windows не позволит запустить процесс установки. Тогда предварительно необходимо разрешить запуск подписанных скриптов с локального диска (разрешить выполнять созданные и скачанные сценарии, подписанные доверенным издателем). Для этого нужно ввести команду в PowerShell:
set-executionpolicy remotesigned
3. Установить Python, если его нет на локальной машине. Последняя версия доступна на официальном сайте.
4. Используя PowerShell, установить TestIT CLI. Для этого используем команду:
py (или в некоторых случаях python) -m pip install testit-cli
После выполнения действия необходимо обязательно проверить наличие скрипта testit в каталоге Scripts в папке с установленным Python. Пример адреса такого каталога:
C:\Users\Иван\AppData\Local\Programs\Python\Python312\Scripts
На этом предварительные действия завершены.
Теперь организуем запуск примера простого тест-рана из Postman в Newman. Используем простой набор из четырех запросов для известного тестового API от Swagger. В качестве тестов применяются простые сниппеты на успешность выполнения запроса (код 200) и присвоение переменной окружения. Пример в Postman:
Далее необходимо осуществить выгрузку коллекции из Postman для ее последующего запуска в командной строке.
Используем вариант с сохранением коллекции в отдельной папке на ПК. Для этого экспортируем ее и сохраняем в соответствующую папку:
Рекомендуется хранить коллекции в обособленной папке, связанной с проектом. Также можно аналогично сохранить переменные окружения, если это необходимо в рамках тест-ранов.
Теперь подготовим конфигурацию команды для запуска коллекции в Newman через PowerShell. Newman имеет возможности настройки запуска в зависимости от применения и особенностей запуска коллекций (тест-ранов), которые приведены в официальной документации.
В рамках данной статьи будут рассматриваться основные параметры для запуска примера тест-рана.
Основная команда для запуска:
newman run C:\TESTS\EasyDoc\EasyDoc_AdminUI_dev.postman_collection.json -k -r 'cli,junit' --reporter-junit-export C:\TESTS\EasyDoc\results
Разберем ее структуру:
newman — инициирует Newman;
run C:\TESTS\EasyDoc\EasyDoc_AdminUI_dev.postman_collection.json — запускает метод run для конкретной коллекции на локальном диске по адресу;
-k — отключает проверки SSL (иногда в рамках проекта это необходимо);
-r 'cli,junit' — запускает генератор отчета в формате Junit для удобочитаемости со стороны TestIT;
--reporter-junit-export C:\TESTS\EasyDoc\results — задает местоположение для сохранения отчета репортера на локальном диске по адресу.
Запускаем команду нажатием Enter. В конце мы увидим результаты тестов:
Отчет будет сохранен в виде файла формата JUNIT XML в указанной папке:
Теперь загрузим данный отчет в свой проект TestIT.
Для импорта отчетов в проект применяется скрипт TestIT CLI, который мы установили ранее (и проверили, что он там присутствует). Перед его запуском в PowerShell необходимо переместиться в папку, где он установлен, по команде:
cd C:\Users\Иван\AppData\Local\Programs\Python\Python312\Scripts
Подготовим команду для загрузки отчетов в TestIT:
py (или в некоторых случаях python) testit.exe results import -u test-it.itfbgroup.ru -t ZnlNNHFhalU0RHhPcjlLOXJa --testrun-name «Postman run» --results C:\TESTS\EasyDoc\results -pi c0970f60-637c-43b6-838e-a895c59b2912 -ci 87be987a-32fc-4f6e-896f-83b0834d9c06
… И также разберем ее структуру:
py testit.exe (или python testit.exe) — инициирует в рамках Python скрипт TestIT CLI;
-u test-it.itfbgroup.ru — здесь прописывается адрес системы управления тестированием (в данном случае — компании, в которой я имею честь работать);
-t ZnlNNHFhalU0RHhPcjlLOXJa — прописывается приватный API-токен в системе управления тестированием (в статье он намеренно некорректный), способ его получения можно узнать в документации к системе управления тестированием;
--testrun-name «Postman run» — указывается в кавычках имя для прогона тестов;
--results C:\TESTS\EasyDoc\results — указывается местоположение хранения отчетов;
-pi c0930f60-637c-41b6-888e-a895c59b2012 — UUID проекта в системе TestIT (как вариант, его можно узнать из соответствующего json о проекте в системе TestIT, в статье он намеренно некорректный);
-ci 87be987a-32fc-4f6e-896f-83b0834d9c06 — UUID конфигурации в TestIT, его можно узнать аналогично UUID проекта — из соответствующего json о конфигурации в системе TestIT, в статье он также намеренно некорректный.
Вот как это выглядит на примере моего проекта:
Результат выполнения команды:
Убеждаемся в том, что результаты тест-рана отображаются в проекте TestIT:
Такая же схема может быть реализована с небольшими изменениями и в ОС семейства Linux.
При желании можно написать простой bash-скрипт на базе вышеописанных команд для упрощения процесса запуска в ручном режиме. Также есть возможность интеграции компонентов в свой инструмент CI/CD, например, Jenkins, и получать отчеты автоматически после каждой сборки в определенные периоды.
Спасибо за уделенное время! Надеюсь, что было полезно.
Folko85
Не понятно, почему всё расписано для Windows. Если это тестирование веб-сервисов, то логично было бы сразу описывать настройку ci/cd для какого-нибудь тестового стенда на linux. Собственно основная мысль - запустить коллекции постмана в ньюмане и отправить результаты в testIt. Это буквально пару команд. И видимо это костыль, призванный как-то автоматизировать ручную работу тестировщиков. Самому приходилось делать что-то похожее на Groovy. В итоге всё же усложнение бизнес-процесса привело к идее, что написать нормальные автотесты проще, чем поддерживать такие вот костыли в ci/cd.