带有Jmeter Maven插件的Apache Dashboard HTML报告

时间:2018-10-18 17:08:02

标签: maven jmeter jmeter-maven-plugin

我希望mvn clean verify为我运行以下命令

jmeter -n -t <file.jmx> -l <reports.csv> -e -o /htmlReports

我在下面类似的问题How to create HTML reports using Jmeter Maven Plugin 2.1.0.下进行了核对,但对我而言无效。

我希望所有数据都放在target文件夹中,再加上.jtl,以便在下次运行时清除以前的所有数据。

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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.demo.performancetesting</groupId>
    <artifactId>Demo-performance-testing</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.8.0</version>
                <configuration>

                        <generateReports>true</generateReports>
                    </configuration>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>de.codecentric</groupId>
                <artifactId>jmeter-graph-maven-plugin</artifactId>
                <version>0.1.0</version>
                <configuration>
                    <inputFile>${project.build.directory}/jmeter/results/*.jtl</inputFile>
                    <graphs>
                        <graph>
                            <pluginType>ResponseTimesOverTime</pluginType>
                            <width>800</width>
                            <height>600</height>
                            <outputFile>${project.build.directory}/jmeter/results/BlazeDemoRequest.png</outputFile>
                        </graph>
                    </graphs>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3 个答案:

答案 0 :(得分:0)

您可以使用Maven Exec plugin进行此操作,相关配置应为

<configuration>
    <basedir>/path/to/bin/folder/of/your/jmeter/installation</basedir>
    <executable>jmeter</executable>
    <commandlineArgs>-n -t -f file.jmx -l ${basedir}/target/reports.csv -e -o ${basedir}/target/htmlReports</commandlineArgs>
</configuration>

以防万一在这里“无法正常工作”的是完整的 pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>jmeter</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <basedir>/path/to/bin/folder/of/your/jmeter/installation</basedir>
                            <executable>jmeter</executable>
                            <commandlineArgs>-n -t -f file.jmx -l ${basedir}/target/reports.csv -e -o
                                ${basedir}/target/htmlReports
                            </commandlineArgs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

不要忘记将/path/to/bin/folder/of/your/jmeter/installation更改为JMeter的真实路径,否则它将“不起作用”。


通过JMeter Maven Plugin生成

报告也应该可以正常工作,如果遇到任何问题,请显示 pom.xml 文件和maven命令输出。

可用于参考的示例配置:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>jmeter</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.8.0</version>
                <executions>
                    <!-- Run JMeter tests -->
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                        <configuration>
                            <generateReports>true</generateReports>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

  • 您将需要将file.jmx脚本复制到src / test / jmeter文件夹中,否则“将不起作用”
  • 如果您的测试使用的是任何JMeter Plugins-如果没有defining them as dependencies,它将“不起作用”
  • 如果您的测试使用外部数据文件-除非将它们复制到src / test / jmeter文件夹,否则它“将无法工作”

更多信息:Five Ways To Launch a JMeter Test without Using the JMeter GUI

答案 1 :(得分:0)

使用JMeter Maven Plugin生成报告可以满足您的要求,您不需要任何其他插件。 示例:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.demo.performancetesting</groupId>
    <artifactId>Demo-performance-testing</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.8.0</version>
                <executions>
                    <!-- Run JMeter tests -->
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

要求:

  • 将您的jmx文件复制到src / test / jmeter文件夹中
  • 如果您使用JMeter Plugins之类的第三方插件,请确保遵循此documentation
  • 如果您使用CSV数据文件-将它们复制到src / test / jmeter文件夹

答案 2 :(得分:0)

第1步-创建测试计划并保存JMX脚本

第2步-执行JMeter测试

<plugin>
    <groupId>com.lazerycode.jmeter</groupId>
    <artifactId>jmeter-maven-plugin</artifactId>
    <version>1.8.1</version>
    <executions>
     <execution>
      <id>jmeter-tests</id>
      <phase>verify</phase>
      <goals>
       <goal>jmeter</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <ignoreResultFailures>true</ignoreResultFailures>
     <testResultsTimestamp>false</testResultsTimestamp>
    </configuration>
   </plugin>

第3步-将测试结果保存到csv / xls文件中

第4步-以下插件用于转换结果

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>xml-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
     <execution>
      <phase>verify</phase>
      <goals>
       <goal>transform</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <transformationSets>
      <transformationSet>
       <dir>${project.build.directory}/jmeter/results</dir>
       <stylesheet>${project.basedir}/src/main/jmeter-results-report_21.xsl</stylesheet>
       <outputDir>${project.build.directory}/jmeter/results</outputDir>
       <fileMappers>
        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.RegExpFileMapper">
         <pattern>(.*?)\s(.*?)</pattern>
         <replacement>$1$2</replacement>
         <replaceAll>true</replaceAll>
        </fileMapper>
        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
         <targetExtension>.html</targetExtension>
        </fileMapper>
       </fileMappers>
      </transformationSet>
     </transformationSets>
    </configuration>
   </plugin>