JMeter:实例_搭建持续集成接口测试平台(Jenkins+A
一、环境准备
1、JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、Jmeter:http://jmeter.apache.org/download_jmeter.cgi
3、Ant:http://ant.apache.org/bindownload.cgi
4、Jenkins:http://jenkins-ci.org/
Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html
命令行输入:java -version,出现如下提示说明安装成功
ANT下载:http://ant.apache.org/bindownload.cgi
命令行输入:ant -v,出现如下提示说明安装成功
window中设置ant环境变量:
ANT_HOME G:\ANT\apache-ant-1.9.6
path G:\ANT\apache-ant-1.9.6\bin
classpath G:\ANT\apache-ant-1.9.6\lib
PATH:%ANT_HOME%\bin (为了方便在dos环境下操作,可以这样配置)
Jmeter下载:http://jmeter.apache.org/download_jmeter.cgi
安装配置参见相关文章
Jenkins下载:http://jenkins-ci.org/
使用setup.exe文件安装后,启动页面如下
部署成功后,可使用http://localhost:8080/登陆。
5)、其他配置
将jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中,这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本
修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
二、JMmter脚本准备
1)、脚本目录及内容
脚本目录:G:\JMETER\apache-jmeter-2.13\demo
脚本内容
2)、build.xml代码
脚本主要逻辑思路:运行G:\JMETER\apache-jmeter-2.13\demo\下面的.jmx脚本,生成.jtl文件放入 G:\JMETER\apache-jmeter-2.13\demo\jtl文件中,ant在将相应的文件转换为对应的html文件放入G:\JMETER\apache-jmeter-2.13\demo\html中
修改相对应的脚本目录,及JMeter目录路径。
<?xml version="1.0" encoding="utf8"?>
<project name="JmeterTest" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property name="jmeter.home" value="G:\JMETER\apache-jmeter-2.13" />
<property name="jmeter.result.jtl.dir" value="G:\JMETER\apache-jmeter-2.13\demo\jtl" />
<property name="jmeter.result.html.dir" value="G:\JMETER\apache-jmeter-2.13\demo\html" />
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<property name="mail_to" value="277973238@qq.com" />
<property name="ComputerName" value="jkqsh-l0285" />
<target name="all">
<antcall target="test" />
<antcall target="report" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<testplans dir="G:\JMETER\apache-jmeter-2.13\demo" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
3)、运行脚本
cmd进入脚本目录:G:\JMETER\apache-jmeter-2.13\demo
输入:ant 或 ant all(all为build.xml中的task名),执行结果:
4)、测试报告目录
通过ant运行后,会生成相对于的结果存放在G:\JMETER\apache-jmeter-2.13\demo\html目录下。
5)、报告问题
打开TestReport201601150256.html文件
问题解决见【默认报告优化】节点内容
6)、其他问题
1、脚本在运行过程中,会报
Error reading project file G:\JMETER\apache-jmeter-2.13\demo\build.xml: 2 字节的 UTF-8 序列的字节 2 无效。
解决:把build.xml文件前的utf-8,修改为utf8即可。
三、JMeter默认报告优化
1、Date report这里的时间没有正确显示出来
2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间。
1)、JMeter+Ant报告生成原理
在解决问题之前,让我们先弄清楚Jmeter+Ant是生成报告的原理,知道原理后我们就可以很从容的解决问题了。另外,如果后续我们想定制报告也就很容易了。
1、在Jmeter的extras目录下,官方已经为我们提供了一个现成的实例,我们只需要在该目录下执行ant命令就可以生成一个数据文件Test.jtl和一个报告Test.html。
2、知道了上一步后,接下来我们研究的重点就是extras目录下的build.xml文件了,具体研究细节就不在此细说了,因为这就部分内容属于ant的范围,有需要的可以自行补充下ant的知识。
2)、问题解决
1、找到extras目录下build.xml文件内容的如下部分:它的作用就是把生成的.jtl数据文件转换为.html格式的报告
具体属性的含义:
in:生成的.jtl文件的路径
out:生成的.html文件的路径
style:从.jtl转换成.html所使用的样式,这些文件也在extras目录下,这个是最重要的部分,如果我们想定制报告可以自行定义这个文件或者从网上找一些合适的文件。
param:参数,这几个参数可以在style中使用,下面会讲到。
path:添加jar包的路径,在下面的target中有引用到(下面第9行)。
2、通过上面的分析,style 文件是整成报告转换的关键,那我们就打开jmeter-results-detail-report_21.xsl这个文件看看,找到如下几行,这里也定义了三个参数跟build.xml文件中一样,由此可猜测,我们只要在build.xml文件中定义dateReport这个参数和值,在style中就可以按如下方式使用,经过测试证明猜测是正确的,那么第一个问题就解决了:
3、对于第二个问题,其实把第1步中的代码复制到我们自己的build.xml文件中后,可以一并解决这两个问题。解决第二个总是的关键代码是第9行和第10行:
classpathref="xslt.classpath"
force="true"
而第9行又引用了第1~4行
4、到此,两个问题都解决了,最终修改后的build.xml文件如下,红色方框是解决总是添加的代码:
5、修改后的报告:
四、ANT的build.xml代码准备
以下代码未包括【JMeter默认报告优化】节点相关修改代码。
1)]配置执行脚本
<?xml version="1.0"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property environment="env"/>
<property name="ReportName" value="TestReport" />
<property name="jmeter.home" value="G:\JMETER\apache-jmeter-2.13" />
<property name="jmeter.result.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" />
<property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" />
<target name="run">
<echo message="start..."/>
<antcall target="clean" />
<antcall target="test" />
<antcall target="report" />
</target>
<target name="clean">
<mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<testplans dir="G:\JMETER\apache-jmeter-2.13\up" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<target name="report">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
<copy todir="${jmeter.result.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
2)、基于Jenkins编译问题
在编译bulid.xml文件执行过程中,出现一些问题解决如下:
1编译提示【前言中不允许有内容】
解决:把xml文件的头<?xml version="1.0" encoding="utf8"?>,去掉encoding="utf8"即可。
五、配置Jenkins Job并运行
1)、Job配置
新建项目,选择一个选项
Job配置如下
2)、Job运行日志
3)、Job生成报告
在job的workspace目录下会生成结果报告
查看TestReport.html