【问题标题】:How to configure Jmeter maven plugin to generate Jmeter 3.0 report dashboard如何配置 Jmeter maven 插件以生成 Jmeter 3.0 报告仪表板
【发布时间】:2016-11-04 10:00:17
【问题描述】:

我无法使用 Jmeter-maven-plugin 2.0.3 版为 Jmeter 3.0 生成报告仪表板。我在 Jmeter maven 插件的配置下的 pom 中添加并添加了 jmeter.save.saveservice 属性,但我得到“确保 jmeter.save.saveservice.* 属性与创建 CSV 文件时相同或可以读取文件执行后尝试创建报告仪表板时出现“错误”错误。

我还在我的 src/test/jmeter 文件夹中添加了 Jmeter.properties 和 user.properties,我看到这些属性在执行后被添加到我的目标文件夹中的这些文件中。

有人可以告诉我 pom 应该如何,以便我们可以为 Jmeter 3.0 自动创建报告仪表板。

谢谢

【问题讨论】:

标签: jmeter maven-plugin jmeter-maven-plugin


【解决方案1】:

我想建议对@Tarun 的答案进行修改/添加,因为我在运行mvn pre-site 时遇到以下错误:

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

这与使用通配符作为结果文件名有关。如果您需要 .jtl 文件的动态文件名,那么您也可以复制该文件并为其指定一个静态名称。例如,通过在<tasks> 中包含以下<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>

并相应地调整-g 参数的值

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

最后,在为 JMeter (3.1) 添加了 org.slf4j:slf4j-simple:1.7.21 依赖项(版本可能随时间变化)之后,它按预期工作并生成了 HTML 仪表板。

【讨论】:

    【解决方案2】:

    这里是步骤 -

    • 从jmeter bin目录复制report-templatereportgenerator.reporties并保存在src/test/resources文件夹中
    • 在你的 pom 中添加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,它会在target\jmeter\results\dashboard下生成测试JMeter仪表板

    参考 - http://www.testautomationguru.com/jmeter-continuous-performance-testing-jmeter-maven/

    还有几件事 - 我不使用maven jmeter analysis,因为 html 仪表板比这要好得多。因此,我以 csv 格式生成测试结果,该格式的资源强度低于 xml。在运行测试并生成报告后,在测试失败后,我使用以下 shell 脚本将 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
    

    【讨论】:

      【解决方案3】:

      使用最新版本的plugin,默认配置会生成它。

      示例 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>
      

      【讨论】:

        【解决方案4】:

        Maven 2.3 版本会生成 ant 可以处理的 jtl 报告。

        <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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-11
          • 2022-08-11
          • 1970-01-01
          • 2018-01-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多