Про автоматизацию REST API с помощью Postman, Newman и Jenkins
Всем привет!
В этой статье хотел бы поделиться опытом автоматизации REST API с помощью таких инструментов как Postman, Newman и Jenkins.
Postman — популярный клиент API, который позволяет тестировать, делиться, создавать, сотрудничать и документировать процесс разработки API внутри команды. Немаловажной функцией Postman является возможность писать и выполнять тесты на основе JavaScript для API. Postman предлагает встроенные инструменты для интеграции API для некоторых инструментов непрерывной интеграции (CI), например Jenkins.
Создание коллекций и написание автотестов в Postman
Для начала необходимо создать коллекцию, наполнив ее запросами. После того, как коллекция будет готова, можно приступать к написанию автотестов. Есть два способа добавления кода JavaScript:
- Можно добавить скрипт перед отправкой запроса на сервер. Это делается на вкладке Pre‑request Script.
- Второй способ — добавление скрипта, который будет выполнен после получения ответа от сервера. Его можно добавить на вкладке Tests.
Я пользуюсь вкладкой Tests. После добавления кода во вкладку он будет запущен при выполнении запроса. Результат запуска будет доступен на вкладке Test Results ответа от сервера. В тестовых скриптах можно использовать динамические переменные. Добавлять проверки для данных из ответа и передавать полученные значения между запросами.
Очень удобно, что Postman предлагает готовые куски кода (code snippets) для стандартных задач, которые можно отредактировать под свои нужды для экономии времени. Тем самым этот вид автоматизации возможно осилить и тому, кто знает только основы JavaScript.
Первый простой автотест — это проверка того, что запрос прошел успешно и мы получили status code 200 (или любой другой код, который мы ожидаем). Удобнее всего включить этот тест на уровне коллекции, чтобы все запросы под ним наследовали эту проверку:
Следующий пример теста — это проверка схемы json. Почему требуется проверка схемы JSON? Потому что:
- Мы отслеживаем ответы API и гарантируем, что формат, который мы получаем, совпадает с ожидаемым.
- Мы получаем оповещение всякий раз, когда в ответе JSON есть какое‑либо критическое изменение.
- Для интеграционных тестов полезно проверять схему, её можно сгенерировать один раз из ответа сервиса, чтобы тестировать с ней все будущие версии сервиса.
Таким образом, мы имеем уже две автоматизированные проверки REST API. Не буду утомлять примерами автотестов, их можно найти и изучить в документации - https://learning.postman.com/docs/writing-scripts/test-scripts/ , лучше сразу перейдем к самому интересному, а именно дальнейшей интеграции нашей коллекции с Jenkins.
Интеграция Postman c системой сборки CI
Первый вопрос, который возникает – это как связать Postman и Jenkins. Здесь нужно использовать CLI (command-line interface). Для того, чтобы коллекцию Postman разложить на язык командой строки используется Newman – приложение, которое позволяет запускать и тестировать коллекцию Postman непосредственно из командной строки.
Приведу упрощенный список шагов, как нужно дальше действовать:
1. Установите Jenkins локально и запустите его. Для получения более подробной информации обратитесь к документации Jenkins на Jenkins.io
2. Установите Node.js и Newman в Jenkins:
- Перейти на свой сервер Jenkins и войти в систему
- Перейти в раздел «Управление Jenkins» > «Управление плагинами» и установить плагин NodeJS
- Перейти в Manage Jenkins > Global Tool Configuration и в разделе NodeJS выбрать "Добавить NodeJS"
- Ввести имя для установки Node.js
- В поле "Глобальные пакеты npm" для установки ввести newman
3. Выбрать "Сохранить". Подробные инструкции можно найти здесь
4. Убедитесь, что npm (менеджер пакетов для JavaScript) также установлен , введя следующие команды в командной строке:
5. Откройте консоль и установите сам Newman с помощью команды:
6. Сохраните свою коллекцию тестов, и тут есть два варианта - мы можем сгенерировать URL для тестов (share) или сохранить файлом (export).
7. Запустите тесты в консоли с помощью следующей команды:
При использовании ссылки:
При использовании файла используйте команду с указанием каталога файла коллекции:
После запуска тесты прогоняются в консоли и выводится результат:
Далее можно исполнять Newman из Jenkins после каждого коммита, чтобы тестировать образ на корректность ответов.
Желательно подготовить шаблоны в postman — вынести адрес хоста и другие изменяющиеся параметры запроса — в переменные и передать их из credentials‑плагина в Jenkins.
8. Конфигурируем задачи — добавляем shell-команду, а внутри нее вызов Newman.После этого Jenkins будет прогонять тесты. Можно настроить нужную частоту (в окне сборки -> Configure -> build Triggers -> build periodically) и Jenkins будет сообщать была ли сборка успешной или неудачной.
Для других членов команды можно настроить рассылку информации о последних сборках и их статусе по электронной почте. Это позволяет активно отслеживать свои сборки API вместе с другими компонентами API. Можно использовать множество других конфигураций, чтобы сделать коллекцию более динамичной.
В заключение хотелось бы привести за и против использования такого вида автоматизации.
Начну с преимуществ: Postman интуитивно-понятен и простой в использовании, не требует какой-то сложной настройки, поддерживает разные API (REST, SOAP, GraphQL), легко интегрируется в CI/CD с помощью рассмотренного Newman. Newman также очень простой в использовании, идеально подойдет для тех, кто часто использует Postman и хочет немного большего с минимальными затратами по времени.Данные инструменты очень выручат, если есть желание добавить автоматизацию в тестирование, подойдут на начальных этапах.
Но и хотелось бы отменить несколько недостатков такой интеграции, а именно полного построения автоматизированных тестов для больших проектов, которые имеют большое количество REST-сервисов. Из-за отсутствия возможности переиспользовать код, написание автотестов может превратиться в копипаст, поддерживать такие тесты будет сложно (например, когда количество сценариев может переваливать за 1000).Также этот подход не подойдет, если в системе CI исполняется много задач (собирается билд, прогоняются автотесты, внутри есть зависимости, деплоится билд, поднимается на каком-то окружении). В таком случае нужно увеличивать количество машин, на которых прогоняются автотесты, и каждую настраивать с нуля, ничего не забыв при этом.
Искусственный интеллект становится незаменимым помощником для программистов, помогая решать задачи быстрее, находить ошибки и даже придумывать новые решения. Для этого достаточно использовать текстовые запросы — или промты — которые направляют ИИ на выполнение определенных действий. В этой статье я расскажу о промтах, которые стали моими ежедневным…
Личный бренд, блог, свои соц.сети — сейчас все помешаны на наборе аудитории. Глупый тренд или занятие заслуживающее внимания?
Уже понятно, что 2025 год для бизнеса в России останется периодом турбулентности. И важное умение любого эффективного бизнеса — эффективно подстраиваться под изменения и находить решения для оптимизации.
Часто в практике мы сталкиваемся с нестабильными тестами, которые хочется перезапустить несколько раз. Если после n-го количества перезапусков тест остаётся неудачным, его признают проваленным.
В этой статье я рассмотрю возможные способы повторного запуска тестов в JUnit 5, с которыми я столкнулась при поиске решений.
ИИ плотно вошел в мою жизнь. Если с каждым годом нужно бежать быстрее, чтобы просто оставаться на месте, то в 2025 нужно сесть в болид Формулы-1, чтобы не потерять своих позиций. Я начала использовать ИИ в 24-ом, продолжила в 25 и хочу рассказать об экспериментах и кейсах, где ИИ меня выручил и сильно помог.
аккуратно, это лонгрид
🧪💡 Юнит-тесты: что это, зачем нужны и что делать, если разработчики их не пишут? 🧑💻🚀
📌 Почему это важно?
Юнит-тесты – это фундамент качества кода! Они помогают находить баги на ранних этапах, облегчают рефакторинг и ускоряют разработку. Но что делать, если в вашей команде их просто не пишут? 🤔
🔍 Что внутри статьи?
✅ Что такое юнит-тесты и…
Закупки – один из самых сложных и затратных процессов в бизнесе. Компании тратят сотни часов на согласование, анализ предложений, управление тендерами и оформление документации. Любая ошибка может привести к финансовым потерям, срыву сроков и даже юридическим рискам. Вот что сказали нам спецы по автоматизации и мы согласились.
Автоматизируем только там, где есть очень уставший человек
Однажды видел договор, который можно было расторгнуть только через суд, а выплаты по нему причитались только после завершения контракта.