JMeter ( http://jmeter.apache.org/ ) — это инструмент с открытым исходным кодом, написанный на Java для тестирования производительности системы, имитирующий различные типы большой нагрузки в тестируемой системе с использованием различных протоколов (HTTP, SOAP, JDBC, LDAP, JMS, и т.д.). Эта статья предназначена для людей, которые хотят понять, как автоматизировать выполнение планов тестирования JMeter с помощью Jenkins: я предполагаю, что читатель хорошо знает JMeter и Maven, и опускаю некоторые детали функций JMeter и Maven. Релиз JMeter, на который я ссылаюсь в этом посте, — 2.12. Планы тестирования в JMeter могут выполняться из командной строки или через графический интерфейс Java Swing. Пробежка по Дженкинсу не требует их обоих. Вам нужно использовать только Jenkins (конечно), Maven и плагин Performance ( https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin). Вы можете использовать графический интерфейс JMeter просто для внесения изменений в план тестирования.
Создать план тестирования
Давайте сначала создадим простой план тестирования. Предположим, это план тестирования HTTP. Вы можете начать с Web Test Plan, одного из шаблонов, доступных в JMeter. Этот шаблон создает план тестирования HTTP для домашней страницы Google ( www.google.com ). Добавьте параметр для свойства Number of Thread группы Thread:
выполнить план тестирования, чтобы убедиться, что все в порядке, и затем сохранить его (для этого примера выбрано имя HTTPExampleTestPlan.jmx ). Как указывалось ранее, это единственный шаг, для которого вам нужно использовать JMeter.
Создать проект Maven
Создайте папку для проекта Maven и скопируйте файл плана тестирования .jmx в подпапку src / test / jmeter . Затем создайте файл POM для проекта:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>jmeter-demo</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>jmeter-demo</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<testResultsTimestamp>false</testResultsTimestamp>
<propertiesUser>
<threadCount>${performancetest.threadCount}</threadCount>
</propertiesUser>
<propertiesJMeter>
<jmeter.save.saveservice.thread_counts>true</jmeter.save.saveservice.thread_counts>
</propertiesJMeter>
</configuration>
<executions>
<execution>
<id>jmeter-tests</id>
<phase>verify</phase>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Вам нужно написать только основной файл POM, который включает только плагин JMeter Maven ( http://jmeter.lazerycode.com/ ). Раздел <configuration> плагина представляет собой конфигурацию JMeter. Здесь вы можете сказать Maven, что план тестирования параметризован и какое свойство конфигурации параметризовано (в нашем примере только свойство threadCount ). Вы можете заметить, что в коде файла POM нет ссылки на имя плана тестирования. Любой файл JMX, сохраненный в подпапке src / test / jmeter, автоматически выполняется во время выполнения плагином JMeter Maven. Вы можете запустить этот проект из команды оболочки, чтобы протестировать его перед тем, как перейти к Jenkins:
mvn jmeter: jmeter -Dperformancetest.threadCount = 2
Результаты этого теста будут созданы в папке target / jmeter / report .
Установите плагин производительности
Установите Performance Plugin из Центра обновлений Jenkins обычным способом. Этот плагин позволяет получать данные из отчетов JMeter и JUnit, а также создавать диаграммы с отчетом о динамике производительности. В этом посте мы сосредоточимся только на части JMeter.
Создать задание по сборке Jenkins
С помощью Jenkins Dashboard создайте новое задание на сборку в стиле фристайл и сделайте его парометрическим, чтобы принять значение свойства счетчика потоков в плане тестирования Meter:
Добавьте шаг сборки Maven. Установите цели так же, как для запуска проекта Maven из команды оболочки, и укажите расположение файла POM проекта:
Затем добавьте плагин Performance в качестве действия после сборки и укажите расположение файла отчета в проекте Maven:
Наконец, установите другие свойства (пороги) для выполнения плана тестирования:
казнить
Установите расписание для задания по сборке и выполните его. После каждой сборки вы можете увидеть текстовую сводку результатов теста в выводе консоли:
[info] Completed Test: HTTPExampleTestPlan.jmx
[info]
[info] Building JMeter Report(s)...
[info]
[info] Raw results: C:\Guglielmo\Code\JMeter\target\jmeter\report\HTTPExampleTestPlan.jtl
[info] Test report: C:\Guglielmo\Code\JMeter\target\jmeter\report\HTTPExampleTestPlan.jtl-report.html
[INFO]
[INFO] Test Results:
[INFO]
[INFO] Tests Run: 1, Failures: 0, Errors: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.731s
[INFO] Finished at: Tue Dec 09 10:55:37 GMT 2014
[INFO] Final Memory: 7M/15M
[INFO] ------------------------------------------------------------------------
Performance: Percentage of errors greater or equal than 0% sets the build as unstable
Performance: Percentage of errors greater or equal than 0% sets the build as failure
а также в графическом формате на странице проекта для задания по сборке:
Нажав на ссылку Performance Trend в левом столбце страницы проекта
Вы можете увидеть как общую, так и единичную тенденцию производительности тестовых случаев (в нашем примере они перекрываются, потому что у нас есть один тестовый случай) при выполнении заданий сборки:
Нажмите на ссылку « Отчет о производительности» в левом столбце каждой страницы сборки.
вы можете увидеть полный подробный отчет о производительности
Нажав на имя теста в таблице, вы можете увидеть подробности теста для текущего прогона, разделенного на нить (пример, показанный на следующем рисунке, относится к прогону с THREAD_COUNT = 4):
Следуя простым шагам, описанным в этой статье, вы можете запланировать и выполнить любой тип плана тестирования JMeter для любого типа протокола через Jenkins.