Как настроить плагин Jmeter Maven для создания панели отчетов Jmeter 3.0

Я не могу сгенерировать панель инструментов отчета для Jmeter 3.0 с помощью Jmeter-maven-plugin версии 2.0.3. Я добавил и добавил свойства jmeter.save.saveservice в свой pom в разделе конфигурации в плагине Jmeter maven, но я получаю "убедитесь, что свойства jmeter.save.saveservice.* Такие же, как при создании файла CSV или при чтении файла. неправильно "ошибка при попытке создать отчет Dashboard после выполнения.

Я также добавил Jmeter.properties и user.properties в свою папку src/test/jmeter и вижу, что эти свойства добавляются в эти файлы в моей целевой папке после выполнения.

Может кто-нибудь подскажите, пожалуйста, как должен быть pom, чтобы мы могли автоматически создавать панель инструментов отчета для Jmeter 3.0.

Спасибо

3 ответа

Вот шаги -

  • копия report-templatereportgenerator.reporties из каталога jmeter bin и храните его в src/test/resources папка
  • добавлять maven-antrun-plugin в вашем пом следующим

<plugin>
 <artifactId>maven-antrun-plugin</artifactId>
  <executions>
   <execution>
    <phase>pre-site</phase>
     <configuration>
      <tasks>
       <mkdir dir="${basedir}/target/jmeter/results/dashboard" />
                                <copy file="${basedir}/src/test/resources/reportgenerator.properties" 
           tofile="${basedir}/target/jmeter/bin/reportgenerator.properties" />
                                <copy todir="${basedir}/target/jmeter/bin/report-template">
                                    <fileset dir="${basedir}/src/test/resources/report-template" />
                                </copy>
                                <java jar="${basedir}/target/jmeter/bin/ApacheJMeter-3.0.jar" fork="true">
                                    <arg value="-g" />
                                    <arg value="${basedir}/target/jmeter/results/*.jtl" />
                                    <arg value="-o" />
                                    <arg value="${basedir}/target/jmeter/results/dashboard/" />
                                </java>
       </tasks>
      </configuration>
     <goals>
    <goal>run</goal>
   </goals>
</execution>
   </executions>
 </plugin>

После запуска нагрузочного теста вы можете выполнить mvn pre-site и он будет генерировать тестовую панель JMeter под target\jmeter\results\dashboard

Ссылка - http://www.testautomationguru.com/jmeter-continuous-performance-testing-jmeter-maven/

Еще несколько вещей - я не использую maven jmeter analysis, так как html dashboard намного лучше, чем этот. Поэтому я генерирую результаты теста в формате CSV, который менее ресурсоемкий, чем XML. Я использую следующий сценарий оболочки, чтобы пометить задание CI как сбой после неудачных тестов после выполнения теста и генерации отчета.

if grep false ${WORKSPACE}/prototype/target/jmeter/results/TestPlanNew.jtl; then
echo "Test Failures!!! please check "${WORKSPACE}/prototype/target/jmeter/results/TestPlanNew.jtl" file"
exit 1
fi

Я хочу предложить изменение / дополнение к ответу @Tarun, поскольку я получаю следующую ошибку при запуске mvn pre-site:

[java] An error occurred: Cannot read test results file :.../target/jmeter/results/*.jtl

Это было связано с использованием подстановочного знака для имени файла результата. Если вам требуется динамическое имя файла для файла.jtl, то вы также можете скопировать файл и дать ему статическое имя. Например, через включение следующего <copy> блокировать в <tasks>:

<mkdir dir="${basedir}/target/jmeter/results/tmp" />
<copy todir="${basedir}/target/jmeter/results/tmp">
    <fileset dir="${basedir}/target/jmeter/results/" >
        <include name="**/*.jtl"/>
    </fileset>
    <globmapper from="*" to="result.jtl" />
</copy>

и корректировать значение для -g аргумент соответственно

<arg value="${basedir}/target/jmeter/results/tmp/result.jtl" />

Наконец, после включения org.slf4j:slf4j-simple:1.7.21 зависимость (версия может меняться со временем) для JMeter (3.1), он работал и генерировал панель инструментов HTML, как и ожидалось.

При использовании последней версии плагина он будет сгенерирован по умолчанию.

Пример pom.xml:

<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.foo</groupId>
    <artifactId>test</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>training-project</name>
    <url>http://maven.apache.org</url>
    <dependencies>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <plugins>
            <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>
                    <execution>
                        <id>jmeter-tests2</id>
                        <goals>
                            <goal>results</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <generateReports>true</generateReports>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Версия Maven 2.3 будет генерировать отчет в формате jtl, который может обрабатывать ant.

<tasks>
<delete dir="${basedir}/target/jmeter/results/dashboard"/>
<mkdir dir="${basedir}/target/jmeter/results/dashboard" />
<copy file="${basedir}/src/test/resources/reportgenerator.properties"
tofile="${basedir}/target/jmeter/bin/reportgenerator.properties" />
<copy todir="${basedir}/target/jmeter/bin/report-template">
<fileset dir="${basedir}/src/test/resources/report-template" />
</copy>                                
<mkdir dir="${basedir}/target/jmeter/results/tmp" />
<copy todir="${basedir}/target/jmeter/results/tmp">
 <fileset dir="${basedir}/target/jmeter/results/" >
 <include name="**/*.jtl"/>
</fileset>
<globmapper from="*" to="result.jtl" />
</copy>                                
 <java jar="${basedir}/target/jmeter/bin/ApacheJMeter-3.3.jar" fork="true">
 <arg value="-g" />
 <arg value="${basedir}/target/jmeter/results/tmp/result.jtl" />
<arg value="-o" />
<arg value="${basedir}/target/jmeter/results/dashboard/" />
</java>
</tasks>
Другие вопросы по тегам