话说无时无刻都觉得有很多东西需要学习,但是我所奉行的理念的就是每天都进步一点,不断完善不断提高!!!!话不多说,进入正题:其实在本文最重要的应该就是jmeter的脚本和pom.xml文件
一、首先当然是在Jmeter的工具里面编写好自己的脚本,调试运行成功。本文就以项目测试中的两个脚本为例。
二、新建MAVEN工程,我用的是Eclipse
1、在src/test目录下新建jmeter目录,然后把自己的测试脚本丢进去
2、在在src/test目录下新建resources目录,然后把测试模板丢进去。
在Jmeter3.2中自带的模板是下图的两个,apache-jmeter-3.2\extras
但是基于自带的模板太简单了,需要去网上下载比较好用的模板,我这里下载的就是这两个,反正喜欢哪个就把哪个丢进去。
3、编写pom.xml文件
我这里列举比较重要的几点
(1)添加jmeter-maven-plugin依赖,这样才能在eclipse里面运行Jmeter的脚本,而不依赖与Jmeter这个工具本身;
(2)由于jmeter-maven-plugin这个插件生成的测试结果的格式是jtl的,我们需要转换成html的,更直观,而且能在jenkins中直接显示;
(3)在本人构建项目的过程中,遇到一个比较大的坑就是html页面显示出来的数据有一些是NaN的
这个问题确实困扰了我很久,在网上搜到的办法都是关于ant的。相对于Maven的资料相对就很少了。后来才发现需要用XSLT2.0,在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>zdt</groupId>
<artifactId>zdt-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>zdt-test</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
<jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1>
<ReportName>TestReport</ReportName>
</properties>
<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.2.0</version>
<configuration>
<resultsFileFormat>xml</resultsFileFormat>
<ignoreResultFailures>true</ignoreResultFailures>
<testResultsTimestamp>false</testResultsTimestamp>
</configuration>
<executions>
<execution>
<id>jmeter-tests</id>
<phase>verify</phase>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<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-report-loadtest.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir1}</outputDir>
<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>
至此项目的运行应该不存在问题了。在Eclipse中运行之后就会有测试结果。
results、html、html1三个文件中存在的就是jtl、HTML、HTML格式的测试结果。html中得测试结果更偏向于性能测试,html1中的测试结果更多的是显示一些接口信息,适用于接口测试。
三、在Jenkins进行自动化构建并展示测试结果
在jenkins进行构建之前首先需要装几个插件
Maven Integration plugin Maven插件;
Git plugin GIT 插件;
Performance plugin 性能报告插件;
HTML Publisher plugin HTTP report插件;
前面两个插件是因为项目本身是Maven项目,代码统一传在git上;后面两个插件只是为了展示测试报告。
1、创建一个Maven项目
2、选择存放代码的位置。git服务器的URL地址
build中填写pom.xml路径
至此应该可以构建成功了。
查看构建日志
3、但是我们还需要一些步骤来做测试前准备和测试后报告展示
测试前准备:pre steps
在下一次测试前删除上一次的测试结果,这里可以执行各种类型的脚本,因为我们的服务器是linux的,所以这里选的是shell脚本
测试后测试结果展示:
(1)jenkins设置展示jtl的测试结果
展示的效果:
(2)jenkins设置展示成html
展示的效果:
scenario1 HTML Report:
scenario1 HTML Report1:(这个需要修改jmeter.properties文件,把需要的字段改为true,否则显示不出来)