1. Обзор
В этой статье мы будем использовать Apache JMeter для настройки и запуска тестов производительности.
2. Настройка JMeter
Давайте https://jmeter.apache.org/download jmeter.cgi[downdown JMeter]распакуем его, перейдем в папку bin и запустим исполняемый файл ( . Bat для Windows и . Sh__ для Linux/Unix).
Далее нам просто нужно добавить эту папку в переменную окружения path, чтобы она была доступна из командной строки.
Самая стабильная версия на момент написания этой статьи - 3.3. Мы можем проверить новейшую версию here .
3. Создание сценариев JMeter
Теперь давайте напишем наш первый скрипт JMeter (файл, содержащий техническое описание наших тестов). **
Этот API представляет собой простую ссылку:/spring-boot-start[SpringBoot]приложение, представляющее REST API.
Давайте обновим Test plan one и сначала изменим его имя, затем добавим Thread Group .
Thread Group позволяет нам узнать пользовательский поток и моделировать, как они взаимодействуют с приложением, щелкнуть правой кнопкой мыши на имени нашего скрипта в графическом интерфейсе и следовать выбранному меню:
ссылка:/uploads/thread-group-menu-blur-1-1.png%201110w[]
Теперь мы переходим к части конфигурации Thread Group , где мы указываем количество пользователей, параллельно выполняющих запросы к нашему приложению:
ссылка:/uploads/create-thread-group-blur-1024x567.png%201024w[]
Здесь мы указали такие параметры, как:
-
- ** Name: имя, которое мы хотим дать группе потоков
-
Количество потоков (пользователей) : количество параллельных пользователей
-
Время разгона: время, необходимое для перехода от 0 до заявленного количества пользователей
-
Loop count : количество повторений
-
Добавьте HTTP-запрос , поскольку он будет имитироваться каждым из 5 пользователей.
Давайте заполним информацию для адресации нашего API, описанного там, как на картинке ниже:
ссылка:/uploads/http-request-blur-1024x565.png%201024w[]
Мы просто заполняем адрес сайта, порт и конкретный путь.
Далее, давайте смоделируем запросы пользователей после добавления View Results Tree (используйте View Results in Table , если результаты представляют собой список записей), следуя меню « Add> Listener» .
Нажмите зеленую стрелку вправо вверху для запуска теста и просмотра данных ответа:
ссылка:/uploads/http-request-view-result-blur-1024x565.png%201024w[]
Мы можем увидеть более подробное представление ответа на вкладке Sampler result .
Давайте закончим, добавив подтверждение длительности в HTTP-запрос, поэтому каждый запрос, который длится более десяти миллисекунд, будет считаться неудачным тестом:
ссылка:/uploads/duration-assertion-blur-1024x567.png%201024w[]
После повторного выполнения теста мы видим, что есть некоторые (здесь их 3) пользователи, которые не могут получить списки студентов менее чем за десять миллисекунд:
ссылка:/uploads/duration-assertion-failed-blur-1024x568.png%201024w[]
Теперь давайте сохраним тест с расширением .jmx в папке ресурсов API.
Для настройки нашего тестового файла доступно больше элементов:
-
http://jmeter.apache.org/usermanual/component reference.html#JDBC Request[JDBC
Запрос]: полезно перед отправкой запроса JDBC (SQL-запроса) в базу данных используя его нам нужно настроить http://jmeter.apache.org/usermanual/component reference.html#JDBC Connection Configuration[JDBC конфигурация соединения]элемент ** http://jmeter.apache.org/usermanual/component reference.html#XML__Assertion[XML
Утверждение]: проверяет, что данные ответа имеют правильно правильный XML документ ** http://jmeter.apache.org/usermanual/component reference.html#Size Assertion[Size
Утверждение]: утверждает, что ответ содержит правильное количество байтов в этом ** http://jmeter.apache.org/usermanual/component reference.html#JMS Publisher[JMS
Издатель]: публиковать сообщения для определенной цели (темы/очереди) в соответствии со спецификацией J2EE для обмена сообщениями
Все доступные компоненты подробно описаны в руководстве user .
4. Запустите тесты JMeter
Существует два способа запуска тестов JMeter, один из которых состоит из использования доступного плагина Maven, а другой - автономного приложения JMeter в режиме без графического интерфейса пользователя.
В любом случае, оба должны знать, где найти сценарий JMeter, который мы настроили ранее.
4.1. Плагин JMeter Maven
http://jmeter.lazerycode.com/ - это плагин Maven, который позволяет запускать тесты JMeter как часть нашей сборки; его последняя версия прямо сейчас is 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 ; Вот консольный вывод команды:
ссылка:/uploads/run-jmeter-log-1024x370.png%201024w[]
Примечание. Здесь мы указали каталог, в котором находятся наши тесты в проекте, либо будет выбран каталог по умолчанию ( $ \ {project.basedir}/src/test/jmeter ); аналогичным образом настраивается каталог результатов, иначе каталогом по умолчанию будет $ \ {project.basedir}/target/jmeter/results .
Полная документация по плагину доступна по адресу here .
4.2. Режим без графического интерфейса
Другой способ сделать это через исполняемый файл JMeter, предполагая, что он доступен через командную строку, мы можем сделать это:
jmeter -Jjmeter.save.saveservice.output format = xml__
-n -t src/main/resources/JMeter.jmx -l src/main/resources/JMeter.jtl
Мы устанавливаем XML в качестве выходного формата, который заполняет точный тестовый файл и полученный файл.
-
Примечание: рекомендуется не использовать режим GUI для нагрузочного тестирования, только для создания теста и отладки теста
5. Заключение
В этом кратком руководстве мы настроили Apache JMeter для приложения SpringBoot, чтобы запускать тесты производительности с помощью подключаемого модуля Maven, в то же время рассматривая практически как разработать базовый тест производительности.
Как всегда, исходный код этой статьи можно найти over на GitHub .