Jmeter+Maven+Jenkins是当前国内测试行业比较流行的做法,要实现该自动化框架,需先在本地进行搭建,测试无误后,再放到Jenkins上去进行持续集成。那么接下来我们将一步步来实现。首先介绍下用的软件版本:Eclipse 2019-03 (4.11.0),JDK 1.8.0_171 ,Maven 3.6.1,Jmeter V5.0。这些软件的安装与配置就不在该篇文章中过多描述了,开门见山,直接进入正题。
1、打开Eclipse新建Maven项目
项目新建最开始的目录结构是这样的。
2、修改目录结构及其相关配置
1)删除src/test/java目录下的文件,实际过程中用不到。
2)在src/test目录下新建一个jmeter的目录,用来存放jmeter脚本、配置文件、参数化文件
3)在src/test目录下新建一个resources的目录,用来存放资源文件,比如XSL样式表文件jmeter.results.shanhe.me.xsl、jmeter-results-detail-report.xsl、jmeter-results-detail-report_21.xsl、jmeter-results-report.xsl、jmeter-results-report_21.xsl(注意:如何找到这些样式文件?找到jmeter安装目录的extras文件夹,v5.0版本只含有jmeter-results-detail-report_21.xsl、jmeter-results-report_21.xsl)
4)修改项目jdk版本,引入本地最新的jdk
修改后的目录结构是这样的。
3、把脚本、参数化文件、配置文件放入src/test/jmeter目录中
*.jmx是调试过脚本文件,用例文件夹中包含参数化文件csv或者txt,各种properties文件来自于jmeter安装目录bin文件夹中。
4、把jmeter-results-detail-report_21.xsl、jmeter-results-report_21.xsl放入到resources文件夹中
现在目录结构是这样的。
5、接下来,重头戏来了,如何配置pom.xml,该文件是maven的引入jar包、插件的重要配置文件。
刚开始时,该XML文件是这样的。
1)将junit版本从3.8.1改成4.10,3.*的版本太老了
junit
junit
4.10
test
2)在properties中加入jtl、html的存放路径
jtl后缀文件是jmeter执行后产生的结果文件,如果参数不配置,那么生成的就是csv文件。
html是jtl文件通过XSL样式表文件转化的结果。
UTF-8
${project.build.directory}\jmeter\results
${project.build.directory}\jmeter\html
3)加入jmeter-maven-plugin组件,该组件是联系maven与jmeter的核心,没有该组件无法通过maven构建jmeter脚本进行测试
其中
这2个配置项很重要。
com.lazerycode.jmeter
jmeter-maven-plugin
2.9.0
jmeter-tests
jmeter
jtl
jmeter-check-results
results
5.0
xml
true
true
发布会系统测试.jmx
${jmeter.result.jtl.dir}
4)在jmeter.properties进行修改jmeter.save.saveservice.output_format=xml
5)再加入xml-maven-plugin组件,该组件能将jtl文件转换成html报表
org.codehaus.mojo
xml-maven-plugin
1.0-beta-3
verify
transform
${jmeter.result.jtl.dir}
src\test\resources\jmeter-results-report_21.xsl
${jmeter.result.html.dir}
html
${jmeter.result.jtl.dir}
src\test\resources\jmeter-results-detail-report_21.xsl
${jmeter.result.html.dir1}
html
net.sf.saxon
saxon
8.7
6)现在开始尝试运行一下了,在eclipse里面找到pom.xml文件右键run as ->Maven buil,Goals里填入verify,运行结果如下
忽略这2个警告:Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor,因为和提供的XSL样式表文件版本有关系。
7)打开本地(项目路径)autotest\target\jmeter\html 、(项目路径)autotest\target\jmeter\html1,查看报表
html:
html1:
发现红框的问题吗?图片没加载出来,怎么处理?
到jmeter安装目录的extras文件夹中,找到collapse.png、expand.png文件,复制到autotest\target\jmeter\html1的文件夹中,然后刷新html报表。
图标就变过来了。
6、Jmeter属性的设置的3种方式。
第一种,就是我们所用的,将jmeter.properties、saveservice.properties、system.properties、upgrade.properties、user.properties复制到项目中,进行修改。
第二种,直接在pom.xml文件中进行配置,放在
第三种,混合配置
现在将第二种的属性配置贴出来,不做讲解。
true
debug
utf-8
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
=true
true
true
7、大家可能有些奇怪,你为啥就知道在pom.xml中配置jmeter属性,其实这个不难,毕竟凡事都有因果。推荐2个网站,其实就是jmeter-maven-plugin、xml-maven-plugin官方网站。
https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/Advanced-Configuration
http://www.mojohaus.org/xml-maven-plugin/index.html
如果你jmeter-maven-plugin可以对应哪些jmeter版本,也可以去上面查看。
8、如果你需要删除不必要的脚本,因为maven项目时会把src/test/jmeter下的测试脚本复制到target/jmeter/testFiles路径下,这2个路径下的脚本都要删除。
9、最后贴下完整的pom.xml文件以及项目的目录结构
4.0.0
com.selftest
autointerface
0.0.1-SNAPSHOT
jar
autointerface
http://maven.apache.org
UTF-8
${project.build.directory}\jmeter\results
${project.build.directory}\jmeter\html
${project.build.directory}\jmeter\html1
junit
junit
4.10
test
com.lazerycode.jmeter
jmeter-maven-plugin
2.9.0
jmeter-tests
jmeter
jtl
jmeter-check-results
results
5.0
xml
true
true
发布会系统测试.jmx
${jmeter.result.jtl.dir}
org.codehaus.mojo
xml-maven-plugin
1.0-beta-3
verify
transform
${jmeter.result.jtl.dir}
src\test\resources\jmeter-results-report_21.xsl
${jmeter.result.html.dir}
html
${jmeter.result.jtl.dir}
src\test\resources\jmeter-results-detail-report_21.xsl
${jmeter.result.html.dir1}
html
net.sf.saxon
saxon
8.7