Статьи

Автоматизация планов испытаний JMeter в Дженкинсе

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.