1. Обзор
В этой статье мы собираемся использовать Apache JMeter для настройки и запуска тестов производительности.
2. Настройка JMeter
Давайте скачаем JMeter , распакуем его, перейдем в папку bin
и запустим исполняемый файл ( .bat
для Windows и .sh
для Linux/Unix).
Далее нам просто нужно добавить эту папку в переменную среды пути, чтобы она была доступна из командной строки.
Самая стабильная версия на момент написания — 3.3 — мы можем проверить самую новую версию здесь .
3. Создание скриптов JMeter
Теперь давайте напишем наш первый скрипт JMeter (файл, содержащий техническое описание наших тестов).
Этот API представляет собой простое приложение SpringBoot , предоставляющее REST API.
Давайте обновим план тестирования
и сначала изменим его имя, а затем добавим группу потоков
.
Группа потоков
позволяет нам узнать поток пользователей и имитировать их взаимодействие с приложением. Щелкните правой кнопкой мыши имя нашего скрипта в графическом интерфейсе и следуйте выбранному меню:
Теперь переходим к конфигурационной части Thread Group
, где указываем количество пользователей, параллельно выполняющих запросы к нашему приложению:
Здесь мы указали такие параметры, как:
– Имя:
имя, которое мы хотим дать группе потоков.
– Количество потоков (пользователей)
: количество параллельных пользователей
– Время разгона
: время, необходимое для перехода от 0 к заявленному количеству пользователей
Количество циклов
: количество повторений
Добавьте HTTP-запрос
, поскольку мы будем моделировать его как исходящий от каждого из 5 пользователей.
Давайте заполним информацию, чтобы обратиться к нашему API, описанному там, как на изображении ниже:
Мы просто заполняем адрес веб-сайта, порт и конкретный путь.
Далее давайте смоделируем запросы пользователей после добавления дерева результатов просмотра
(используйте просмотр результатов в таблице
, если результаты представляют собой список записей), следуя меню « Добавить > Слушатель»
.
Нажмите правую кнопку с зеленой стрелкой вверху, чтобы запустить тест и увидеть данные ответа:
Мы можем увидеть более подробное представление ответа на вкладке результатов Sampler .
В заключение добавим Duration Assertion
в HTTP-запрос
, поэтому каждый запрос, который длится дольше десяти миллисекунд, будет считаться неудачным тестом:
После повторного запуска теста мы видим, что есть некоторые (здесь их 3) пользователи, которые не могут получить списки студентов менее чем за десять миллисекунд:
Теперь давайте сохраним тест с расширением .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
; вот консольный вывод команды:
Примечание. Здесь мы указали каталог, в котором находятся наши тесты в проекте, либо будет выбран каталог по умолчанию ( ${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 .