REST Assured против JMeter: сравнение инструментов тестирования REST

Опубликовано: 2022-03-11

Автоматизированное тестирование является важным компонентом процесса обеспечения качества программного обеспечения. Но тестирование API репрезентативной передачи состояния (REST) ​​может оказаться непростой задачей. Многие, кто прибегает к ручному тестированию REST API, упускают из виду детали и способы сэкономить время.

Любая служба REST API, прошедшая надлежащее тестирование, будет охватывать следующие области:

  • Проверка соответствия службы API стандартам REST.
  • Тестирование кодов ответов службы API
  • Утверждение содержимого ответа службы API
  • Сравнительный анализ производительности службы API

Инструменты для REST-тестирования

Для этого нужны правильные инструменты. Apache JMeter и REST Assured — два популярных инструмента тестирования REST для тестирования сервисов REST API. Вы можете узнать больше о том, как вы можете использовать их на практике здесь и здесь.

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

Простота настройки

Есть одно предварительное условие: и для JMeter, и для REST Assured требуется Java, поэтому для запуска JMeter или REST Assured на вашем компьютере должна быть установлена ​​Java.

Установить Apache JMeter очень просто: перейдите на страницу загрузки, выберите ZIP или TAR, загрузите архив, распакуйте его, и все готово.

Перейдите в папку, в которую вы распаковали архив, перейдите в подпапку bin и запустите jmeter.bat (или аналогичный для вашей операционной системы, если она отличается от Windows). Для получения более подробной информации о настройке Apache JMeter см. эту страницу.

Установка REST Assured — это немного другой опыт. REST Assured не является самостоятельным инструментом. Это библиотека Java. Чтобы использовать его, вы должны настроить новый проект Java и включить его в качестве библиотеки для своего проекта. Конечно, существует поддержка многих инструментов сборки, поэтому вы можете просто указать свой преобразователь зависимостей в какой-нибудь общедоступный (Maven) репозиторий. Вы можете найти более подробную информацию о том, как настроить REST Assured здесь.

Документация

Документацию по Apache JMeter можно найти на официальном сайте JMeter. Он предоставляет довольно подробную документацию от начала работы до сложных функций, таких как прослушиватели. Кроме того, на официальном веб-сайте JMeter вы можете найти ссылки на некоторые очень богатые ресурсы, такие как видеоуроки. Если вы меньше читаете и больше смотрите, это, безусловно, плюс для вас.

Документацию REST Assured, как и сам инструмент/библиотеку, можно найти в репозитории Github. У него есть большой список функций, перечисленных в онлайн-документации, с очень подробными объяснениями того, как чего-то добиться. Однако вся документация представляет собой одну огромную веб-страницу — не самый удобный способ изучения инструмента.

Автоматическое создание и обслуживание тестов REST

Apache JMeter как отдельное приложение с графическим пользовательским интерфейсом (GUI) позволяет создавать тесты из графического интерфейса. Это может быть удобно, особенно из-за иерархии сущностей, представленной в JMeter — все, что вы создаете в своем тесте, будет отображаться в виде дерева в графическом интерфейсе JMeter.

Чтобы создать тест, не обязательно иметь какие-либо навыки программирования. Однако графический интерфейс не ограничивает возможности планирования тестирования. Если вы все еще хотите добавить какое-то пользовательское программирование/поток, компонент(ы) BeanShell позволит вам это сделать.

Скриншот графического интерфейса JMeter

Когда вы сохраняете свой проект JMeter, все, что вы создали, будет сохранено в один огромный файл XML (с расширением .jmx ). Как правило, даже для небольшого изменения в одном из тестов вам (весьма вероятно) придется заново открывать проект в графическом интерфейсе, чтобы внести изменения.

Если вам нужно сотрудничать с другими над одним и тем же файлом проекта JMeter, этот огромный XML-файл будет непросто поддерживать с помощью какой-либо системы управления исходным кодом (SCM) (например, Git, SVN, Perforce и т. д.).

REST Assured, с другой стороны, требует навыков программирования на Java для создания тестов. Нет удобного графического интерфейса для создания тестов. Тем не менее, REST Assured позволяет вам писать тесты с использованием языка Gherkin (синтаксис «Given-When-Then»), поэтому, даже если вам нужны некоторые навыки программирования на Java, тесты вполне удобочитаемы для человека.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

Поскольку REST Assured — это библиотека, а тесты на самом деле написаны на Java, вы можете организовать свои тесты в отдельных файлах Java, поэтому, когда вам нужно изменить один тест, вам нужно просто открыть один файл. Вам не нужен графический интерфейс, поэтому вы можете легко редактировать тест даже через SSH-терминал. Сотрудничество с другими довольно просто, потому что файлы Java легко поддерживать с помощью любого SCM.

Типы REST-тестов

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

Скриншот времени отклика JMeter

С другой стороны, это также не основной сценарий использования JMeter. Вы можете создавать функциональные тесты для REST API с помощью JMeter, включая утверждение ответа.

Основной сценарий использования REST Assured предназначен для функционального тестирования служб REST API. Он даже имеет собственный механизм подтверждения ответа (синтаксис Gherkin). Поскольку REST Assured — это библиотека Java, ее можно легко интегрировать с модульными тестами.

Что касается тестирования производительности, REST Assured не поддерживает тестирование производительности по умолчанию. Однако если вы хотите использовать его для тестирования производительности, вам придется разработать собственную среду для тестирования производительности вокруг REST Assured.

Выполнение теста

Тесты JMeter можно вызывать двумя способами.

В пользовательском интерфейсе, нажав кнопку «Выполнить»:

Скриншот кнопки запуска JMeter

Из командной строки:

 jmeter -n -t your_script.jmx

Официальная рекомендация JMeter — не запускать тесты производительности с использованием графического интерфейса, поскольку тесты будут выполняться медленнее (с точки зрения количества запросов в секунду) по сравнению с их запуском из командной строки.

REST Assured, с другой стороны, требует отдельного средства запуска тестов, например, jUnit или TestNG (или любого другого способа выполнения кода Java).

Из Eclipse с помощью TestNG:

Скриншот Eclipse с гарантированным REST

Из командной строки, используя, например, инструмент сборки Ant:

 ant run-tests

Типы отчетов

Apache JMeter, благодаря своему основному назначению, имеет большое количество типов отчетов, которые вы можете создавать по результатам своих тестов. Поскольку вы можете запускать тесты производительности из JMeter, показатели производительности обычно отображаются с помощью таких диаграмм:

Отчет о производительности JMeter

Вы можете узнать больше об отчетах JMeter и типах отчетов, которые вы можете создавать здесь.

REST Assured сам по себе не создает никаких отчетов, так что это зависит от вас и от выбранной вами тестовой среды. Однако при интеграции с какой-либо средой модульного тестирования вы можете получать довольно удобные отчеты в форматах HTML, текст или XML.

HTML-отчет с поддержкой REST

Интеграция с Дженкинсом

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

Автоматические тесты JMeter можно легко интегрировать с Jenkins с помощью плагина Performance, который позволяет настроить действия после сборки и получить красивую страницу панели инструментов из страницы вакансий Jenkins.

JMeter Дженкинс Скриншот

REST Assured также можно легко интегрировать с Jenkins, поскольку у Jenkins есть плагины практически для всех сред тестирования; например, плагин TestNG, который снова может создать четкую диаграмму тенденций для результатов тестирования.

Скриншот REST Assured Jenkins

Активность сообщества

Эта категория не может быть легко измерена. Активность сообщества зависит от ряда факторов, таких как зрелость инструмента или количество участников.

В настоящее время Apache JMeter имеет более широкое сообщество. В основном это связано с тем, что JMeter давно появился на рынке и считается отраслевым стандартом, когда речь идет о тестировании производительности веб-приложений и сервисов. JMeter публикует официальные релизы каждые 5-6 месяцев. Его репозиторий на GitHub очень активен, ежедневно появляются новые коммиты. JMeter использует Bugzilla в качестве средства отслеживания проблем и имеет список открытых проблем, которые часто меняются. В поиске StackOverflow есть более 23000 результатов для JMeter. На сайтах социальных сетей у JMeter есть официальная учетная запись в Twitter. В Facebook и LinkedIn нет официальной учетной записи для JMeter, но есть несколько групп, большая из которых — эта группа Facebook и эта группа LinkedIn.

REST Assured пробивается к основному этапу и стал первым выбором, рекомендацией из нескольких источников, когда дело доходит до автоматизации функциональных тестов службы REST API. REST Assured публикует официальные релизы раз в 6 месяцев в течение последних двух лет. В репозитории GitHub много участников, и он немного менее активен, чем репозиторий JMeter, но тоже очень активен. REST Assured отслеживает проблемы в репозитории GitHub, поэтому все находится в одном месте. В StackOverflow есть более 2000 результатов поиска для REST Assured, поэтому мы можем сказать, что это значительно меньше по сравнению с результатами поиска JMeter. Что касается групп в социальных сетях, то только в группе LinkedIn было обнаружено значительно меньшее количество участников по сравнению с JMeter. Сообщество REST Assured может быть не таким большим, как сообщество JMeter, но оно очень активно.

Резюме

И JMeter, и REST Assured имеют свои преимущества друг перед другом. Но в зависимости от проекта, над которым вы работаете, один будет лучше подходить для автоматизации тестирования REST API. Оба очень надежны, имеют полезные параметры тестирования, могут похвастаться хорошими возможностями отчетности и могут быть легко интегрированы с пользовательскими средами тестирования.

Вот сводка всех критериев сравнения, рассмотренных в этой статье для этих двух популярных инструментов тестирования REST:

Apache JMeter Будьте уверены
Требуются навыки кодирования Нет Да (Ява)
Тщательные документы да да
Функциональное тестирование Да (но перебор) да
Тестирование производительности да Нет (из коробки)
Подходит для SCM (Git, P4...) Нет да
Отчеты об испытаниях да Нет
Интеграция с инструментами CI да да
Интеграция с модульными тестами Нет да
Распараллеливание тестов да да
Общественная деятельность да да