Перейти к основному содержимому

Введение в тестирование производительности с использованием JMeter

· 4 мин. чтения

1. Обзор

В этой статье мы собираемся использовать Apache JMeter для настройки и запуска тестов производительности.

2. Настройка JMeter

Давайте скачаем JMeter , распакуем его, перейдем в папку bin и запустим исполняемый файл ( .bat для Windows и .sh для Linux/Unix).

Далее нам просто нужно добавить эту папку в переменную среды пути, чтобы она была доступна из командной строки.

Самая стабильная версия на момент написания — 3.3 — мы можем проверить самую новую версию здесь .

3. Создание скриптов JMeter

Теперь давайте напишем наш первый скрипт JMeter (файл, содержащий техническое описание наших тестов).

Этот API представляет собой простое приложение SpringBoot , предоставляющее REST API.

Давайте обновим план тестирования и сначала изменим его имя, а затем добавим группу потоков .

Группа потоков позволяет нам узнать поток пользователей и имитировать их взаимодействие с приложением. Щелкните правой кнопкой мыши имя нашего скрипта в графическом интерфейсе и следуйте выбранному меню:

./805a99584b10fe875b257cf312ceb362.png

Теперь переходим к конфигурационной части Thread Group , где указываем количество пользователей, параллельно выполняющих запросы к нашему приложению:

./b32311ddea35a8416c8838e2267a06da.png

Здесь мы указали такие параметры, как:

Имя: имя, которое мы хотим дать группе потоков.

Количество потоков (пользователей) : количество параллельных пользователей

Время разгона : время, необходимое для перехода от 0 к заявленному количеству пользователей

  • Количество циклов : количество повторений

Добавьте HTTP-запрос , поскольку мы будем моделировать его как исходящий от каждого из 5 пользователей.

Давайте заполним информацию, чтобы обратиться к нашему API, описанному там, как на изображении ниже:

./cbce6aaf84a316282d04ee0a90b6e50e.png

Мы просто заполняем адрес веб-сайта, порт и конкретный путь.

Далее давайте смоделируем запросы пользователей после добавления дерева результатов просмотра (используйте просмотр результатов в таблице , если результаты представляют собой список записей), следуя меню « Добавить > Слушатель» .

Нажмите правую кнопку с зеленой стрелкой вверху, чтобы запустить тест и увидеть данные ответа:

./26160fcdc43d8d7bf43adae638d66037.png

Мы можем увидеть более подробное представление ответа на вкладке результатов Sampler .

В заключение добавим Duration Assertion в HTTP-запрос , поэтому каждый запрос, который длится дольше десяти миллисекунд, будет считаться неудачным тестом:

./2dbf1dbdceed66c40bc2db0cc43af15e.png

После повторного запуска теста мы видим, что есть некоторые (здесь их 3) пользователи, которые не могут получить списки студентов менее чем за десять миллисекунд:

./02783450e1090d8ffbfd28ae220dcceb.png

Теперь давайте сохраним тест с расширением .jmx в папке ресурсов API.

Для настройки нашего тестового файла доступны дополнительные элементы:

  • Запрос JDBC : полезен для отправки запроса JDBC (запроса SQL) в базу данных, перед его использованием нам нужно настроить элемент конфигурации соединения JDBC .
  • Утверждение XML : проверяет, что данные ответа соответствуют правильному XML-документу.
  • Утверждение размера : утверждает, что ответ содержит правильное количество байтов.
  • JMS Publisher : публиковать сообщения для заданной цели (тема/очередь) в соответствии со спецификацией J2EE для обмена сообщениями.

Все доступные компоненты подробно описаны в руководстве пользователя .

4. Запустите тесты JMeter

Есть два способа запустить тесты JMeter, один из них состоит в использовании доступного плагина Maven, а другой — в автономном приложении JMeter в режиме без графического интерфейса.

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

4.1. Плагин JMeter Maven

Плагин JMeter Maven — это плагин Maven, который позволяет запускать тесты JMeter как часть нашей сборки; его последняя версия на данный момент — 2.6.0 , которая совместима с Apache JMeter 3.3.

Добавим его в pom.xml нашего проекта:

<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.6.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<testFilesDirectory>${project.basedir}/src/main/resources</testFilesDirectory>
<resultsDirectory>${project.basedir}/src/main/resources</resultsDirectory>
</configuration>
</plugin>

После этого мы можем запустить все наши тесты с помощью mvn verify или только тесты JMeter с помощью mvn jmeter:jmeter ; вот консольный вывод команды:

./693595e3246c417ff4f400724369e4a4.png

Примечание. Здесь мы указали каталог, в котором находятся наши тесты в проекте, либо будет выбран каталог по умолчанию ( ${project.basedir}/src/test/jmeter ); аналогичным образом настраивается каталог результатов, иначе по умолчанию будет ${project.basedir}/target/jmeter/results .

Полная документация плагина доступна здесь .

4.2. Режим без графического интерфейса

Другой способ сделать это через исполняемый файл JMeter, предполагая, что он доступен через командную строку, мы можем сделать это:

jmeter -Jjmeter.save.saveservice.output_format=xml

-n -t источник/основной/ресурсы/JMeter.jmx -l источник/основной/ресурсы/JMeter.jtl

В качестве выходного формата мы устанавливаем XML, который заполняет точный тестовый файл и файл результата.

Примечание: рекомендуется не использовать режим графического интерфейса для нагрузочного тестирования, а только для создания и отладки тестов.

5. Вывод

В этом кратком руководстве мы настроили Apache JMeter в приложении SpringBoot для запуска тестов производительности с помощью подключаемого модуля Maven, одновременно изучая, как разработать базовый тест производительности.

Как всегда, исходный код этой статьи можно найти на GitHub .