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

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.

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

Запрос]: полезно перед отправкой запроса 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 .