1.Jmeter脚本
录制/编写Jmeter脚本(不做描述)
2.Maven项目配置
1、创建一个Maven工程
2、在src/test目录下新建一个jmeter的目录,用来存放jmeter脚本、配置文件、参数化文件;
3、将需要运行的jmx文件放置在src/test/jmeter目录下,将jmeter bin目录下的配置文件拷贝到src/test/jmeter目录下;
4、修改jmeter.properties文件中的属性值;
5、在src/test目录下新建一个resources的目录,并将它在项目属性中设置为Test resource用来存放资源文件;
6、修改pom.xml文件中的配置,该文件是maven的引入jar包、插件的重要配置文件;
<?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>org.example</groupId>
<artifactId>JmeterMavenAuto</artifactId>
<version>1.0-SNAPSHOT</version>
<name>JmeterMavenAuto</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<jmeter.result.jtl.dir>${project.build.directory}jmeteresults</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}jmeterhtml</jmeter.result.html.dir>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- 核心插件,用来执行jmx脚本,版本号对应的jmeter版本可在此地址查询 https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/blob/master/CHANGELOG.md-->
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<!-- 设置jmeter生成结果文件格式-->
<resultsFileFormat>xml</resultsFileFormat>
<!-- 设置忽略失败是否停止运行-->
<ignoreResultFailures>true</ignoreResultFailures>
<!--设置结果是否有时间戳-->
<testResultsTimestamp>false</testResultsTimestamp>
<testFilesIncluded>
<!-- //指定运行的jmeter脚本 -->
<jMeterTestFile>baidu.jmx</jMeterTestFile>
</testFilesIncluded>
<!-- 指定jtl生成目录 -->
<resultsDirectory>${jmeter.result.jtl.dir}</resultsDirectory>
</configuration>
<executions>
<execution>
<id>jmeter-tests</id>
<phase>verify</phase>
<!--脚本所在的文件夹 -->
<goals>
<goal>jmeter</goal>
</goals>
</execution>
<execution>
<id>configuration</id>
<goals>
<goal>configure</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--根据xsl模版把jtl文件转换成html-->
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter-results-detail-report_21.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<!-- 把jtl格式转传承html -->
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
</transformationSets>
</configuration>
<!-- using XSLT 2.0 -->
<dependencies>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
7、Run->Edit Configurations ,Goals里填入verify;
3.Maven项目运行
1、运行工程,点击Run或者Maven-verify
2、执行结果如下表示执行成功,生产相应target文件夹;
忽略警告,Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor,因为和提供的XSL样式表文件版本有关系。
3、打开本地项目路径,\JmeterMavenAuto\targetjmeterhtml\baidu.html,用浏览器打开html文件;
4、html文件图片未加载成功,到jmeter安装目录的extras文件夹中,找到collapse.png、expand.png文件,复制到targetjmeterhtml文件夹中,然后刷新html报表;
4.其他说明
1、Jmeter属性设置的3中方式:
第一种:将jmeter.properties、saveservice.properties、system.properties、upgrade.properties、user.properties复制到项目中,进行修改;
第二种:直接在pom.xml文件中进行配置,放在<configuration>节点下;
第三种:混合配置。
2、如果需要删除不必要的脚本,因为maven项目是会把src/test/jmeter下的测试脚本复制到target/jmeter/testFiles路径下,这两个路径下的脚本都要删除。(若只删除了src下的,则在运行前进行一次clean)
3、在运行maven后发现未生成html文件夹,查看maven-plugins未引入jmeter插件,引入成功后再次运行结果正确。(重新编辑pom.xml文件保存后引入成功)