Робот-скульптор
Huawei Pura X
Pixar напрягся
Будни офиса Miro
Бонобо Канзи
Рабочее место для кота
Протесты против Маска
«Офису» — 20 лет
Ламба из картона

Про автоматизацию REST API с помощью Postman, Newman и Jenkins

Про автоматизацию 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 (или любой другой код, который мы ожидаем). Удобнее всего включить этот тест на уровне коллекции, чтобы все запросы под ним наследовали эту проверку:

pm.test("Status code is 200", function () { pm.response.to.have.status(200);

Следующий пример теста — это проверка схемы json. Почему требуется проверка схемы JSON? Потому что:

  • Мы отслеживаем ответы API и гарантируем, что формат, который мы получаем, совпадает с ожидаемым.
  • Мы получаем оповещение всякий раз, когда в ответе JSON есть какое‑либо критическое изменение.
  • Для интеграционных тестов полезно проверять схему, её можно сгенерировать один раз из ответа сервиса, чтобы тестировать с ней все будущие версии сервиса.
let schema = { "items": { "type": "boolean" } }; pm.test("Схема корректна", () => { pm.response.to.have.jsonSchema(schema); });

Таким образом, мы имеем уже две автоматизированные проверки 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) также установлен , введя следующие команды в командной строке:

node -v npm -v

5. Откройте консоль и установите сам Newman с помощью команды:

npm install -g newman

6. Сохраните свою коллекцию тестов, и тут есть два варианта - мы можем сгенерировать URL для тестов (share) или сохранить файлом (export).

7. Запустите тесты в консоли с помощью следующей команды:

При использовании ссылки:

newman run https://www.getpostman.com/collections/..... (URL тот, что получили при шаринге из коллекции).

При использовании файла используйте команду с указанием каталога файла коллекции:

newman run /Users/Postman/postman_collection.json

После запуска тесты прогоняются в консоли и выводится результат:

Про автоматизацию REST API с помощью Postman, Newman и Jenkins

Далее можно исполнять 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 исполняется много задач (собирается билд, прогоняются автотесты, внутри есть зависимости, деплоится билд, поднимается на каком-то окружении). В таком случае нужно увеличивать количество машин, на которых прогоняются автотесты, и каждую настраивать с нуля, ничего не забыв при этом.

11
реклама
разместить
Начать дискуссию
Эти промты помогают мне в программировании каждый день

Искусственный интеллект становится незаменимым помощником для программистов, помогая решать задачи быстрее, находить ошибки и даже придумывать новые решения. Для этого достаточно использовать текстовые запросы — или промты — которые направляют ИИ на выполнение определенных действий. В этой статье я расскажу о промтах, которые стали моими ежедневным…

Эти промты помогают мне в программировании каждый день
22
Мобильные тесты за пару кликов с помощью Maestro?
Мобильные тесты за пару кликов с помощью Maestro?
11
Почему ДАЖЕ строителю нужен личный блог

Личный бренд, блог, свои соц.сети — сейчас все помешаны на наборе аудитории. Глупый тренд или занятие заслуживающее внимания?

Почему ДАЖЕ строителю нужен личный блог
22
5 неочевидных решений, которые позволят вам сократить расходы на IT

Уже понятно, что 2025 год для бизнеса в России останется периодом турбулентности. И важное умение любого эффективного бизнеса — эффективно подстраиваться под изменения и находить решения для оптимизации.

55
Способы повторного запуска тестов

Часто в практике мы сталкиваемся с нестабильными тестами, которые хочется перезапустить несколько раз. Если после n-го количества перезапусков тест остаётся неудачным, его признают проваленным.
В этой статье я рассмотрю возможные способы повторного запуска тестов в JUnit 5, с которыми я столкнулась при поиске решений.

22
Как протестировать онлайн-чат: чек-лист для QA-инженеров
Привет,  в этой статье я расскажу о тестировании онлайн-чатов, работающих на WebSocket. Я приведу исчерпывающий чек-лист проверок, разберу какие виды тестирования необходимы и предоставлю практические примеры использования техник тест-дизайна.
11
Выйти в оффлайн: как Telegram-канал о городской жизни Петербурга смог издать толстый журнал
Выйти в оффлайн: как Telegram-канал о городской жизни Петербурга смог издать толстый журнал
11
ИИ для продакта: кейсы, где нейросети помогли и немного подвели

ИИ плотно вошел в мою жизнь. Если с каждым годом нужно бежать быстрее, чтобы просто оставаться на месте, то в 2025 нужно сесть в болид Формулы-1, чтобы не потерять своих позиций. Я начала использовать ИИ в 24-ом, продолжила в 25 и хочу рассказать об экспериментах и кейсах, где ИИ меня выручил и сильно помог.

аккуратно, это лонгрид

@es_ca
Что такое unit-тесты? Зачем они нужны и что делать если разработчики их не пишут?
Что такое unit-тесты? Зачем они нужны и что делать если разработчики их не пишут?

🧪💡 Юнит-тесты: что это, зачем нужны и что делать, если разработчики их не пишут? 🧑‍💻🚀
📌 Почему это важно?
Юнит-тесты – это фундамент качества кода! Они помогают находить баги на ранних этапах, облегчают рефакторинг и ускоряют разработку. Но что делать, если в вашей команде их просто не пишут? 🤔
🔍 Что внутри статьи?
✅ Что такое юнит-тесты и…

22
реклама
разместить
Нам сказали что из-за закупок мы теряем миллионы и мы стали искать подрядчика по документообороту

Закупки – один из самых сложных и затратных процессов в бизнесе. Компании тратят сотни часов на согласование, анализ предложений, управление тендерами и оформление документации. Любая ошибка может привести к финансовым потерям, срыву сроков и даже юридическим рискам. Вот что сказали нам спецы по автоматизации и мы согласились.

11
CI/CD в мобильном тестировании (GitLab)

💡 Что такое CI/CD?

Автоматизируем только там, где есть очень уставший человек

Автоматизируем только там, где есть очень уставший человек

Однажды видел договор, который можно было расторгнуть только через суд, а выплаты по нему причитались только после завершения контракта.

11
[]