Jmeter+Ant自定义接口测试报告以及集成jenkins
(文档包含自定义接口测试报告以及集成jenkins)
Jmeter是压力测试、接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkins是持续集成工具。将这三者结合起来可以搭建一套webservice接口测试的持续构建环境。
1、安装JDK,配置java环境变量(略过)
2、安装Jmeter,这里用到的版本是3.1(安装过程略过)
3、安装 ANT
3.1 下载安装
下载地址 http://ant.apache.org/bindownload.cgi,下载后解压到指定位置即可,
比如:D:/program files/apache-ant-1.9.0
3.2 配置环境变量
windows中设置ant变量:
ANT-HOME D:/program files/apache-ant-1.9.0
path D:/program files/apache-ant-1.9.0/bin
classpath D:/program files/apache-ant-1.9.0/lib
3.3 安装验证
验证安装结果,命令行输入ant -v ,出现版本信息则安装成功(本人安装的是1.10.5版)
4、ANT中配置Jmeter
4.1、配置库文件
将jmeter extras目录下的ant-jmeter-1.1.1.jar 文件拷贝到ant安装目录下的lib文件夹中(本人安装的是jmeter3.1)
copy from:
paste to:
4.2 配置ANT与Jmeter的配置文件
4.2.1 配置ant 编译文件 build.xml
拷贝下面的内容与新建的txt文件中,并将此文件改名为:build.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <project name="ant-jmeter-test" default="run" basedir=".">
4 <tstamp>
5 <format property="time" pattern="yyyyMMddhhmm" />
6 </tstamp>
7 <!-- 需要改成自己本地的 Jmeter 目录-->
8 <property name="jmeter.home" value="D:\测试工具\JMETER\apache-jmeter-3.1" />
9 <!-- jmeter生成jtl格式的结果报告的路径-->
10 <property name="jmeter.result.jtl.dir" value="D:\测试工具\JMETER\apache-jmeter-3.1\bin\ant-test\smoke_report\jtl" />
11 <!-- jmeter生成html格式的结果报告的路径-->
12 <property name="jmeter.result.html.dir" value="D:\测试工具\JMETER\apache-jmeter-3.1\bin\ant-test\smoke_report\html" />
13 <!-- 生成的报告的前缀-->
14 <property name="ReportName" value="TestReport" />
15 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
16 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />
17
18 <target name="run">
19 <antcall target="test" />
20 <antcall target="report" />
21 </target>
22
23 <target name="test">
24 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
25 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
26 <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
27 <testplans dir="D:\测试工具\JMETER\apache-jmeter-3.1\bin\ant-test\测试" includes="*.jmx" />
28
29 <property name="jmeter.save.saveservice.output_format" value="xml"/>
30 </jmeter>
31 </target>
32
33 <path id="xslt.classpath">
34 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
35 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
36 </path>
37
38 <target name="report">
39 <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
40 <xslt
41 classpathref="xslt.classpath"
42 force="true"
43
44 in="${jmeter.result.jtlName}"
45 out="${jmeter.result.htmlName}"
46 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
47
48 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
49 <copy todir="${jmeter.result.html.dir}">
50 <fileset dir="${jmeter.home}/extras">
51 <include name="collapse.png" />
52 <include name="expand.png" />
53 </fileset>
54 </copy>
55 </target>
56
57 </project>
View Code(复制代码记得删除每行数列的数字序号)
4.2.2 配置jmeter.properties
配置jmeter报告输出格式为xml在jmeter目录下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv 为
jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#
4.3 验证配置,执行构建测试
4.3.1 准备测试脚本数据
build配置文件放在与测试脚本同目录
4.3.2 执行测试
命令行cd到build.xml文件所在目录,输入ant run ,执行测试
看到build successful 则说明构建测试成功
4.3.3 报告输出路径下查看测试结果报告
按build.xml文件中设置的测试报告地址找到html版测试报告
打开看看:测试结果展现了用例数、成功率、用例执行时间等结果参数
4.4、 测试报告优化
用jmeter自带的测试报告得到的测试报告信息并不是很全,这里参考网上的方法,做一个优化
4.4.1、下载优化模板 jmeter-results-shanhe-me.xsl,拷贝到jmeter的extras目录中,
如D:\测试工具\JMETER\apache-jmeter-3.1\extras
链接:https://pan.baidu.com/s/1dWvwufys0YtYDC6w8bnSMQ 密码:7m03
上面的为请求结果自动换行,且用json格式化请求结果
4.4.2、设置测试输出报告要输出的内容
同样在jmeter.properties中,设置需要输出的内容为true,并去掉前面的注释符号#,这里全部设置成true
4.4.3 设置build文件的报告模板为优化后的模板jmeter-results-shanhe-me.xsl
链接:https://pan.baidu.com/s/1ogCJRfdsZ6s2m-PHN1nSEA 密码:rk81
4.4.4、按前面的方式再次用ant构建测试,查看优化后的测试报告
5、配置jenkins
5.1 、jenkins.war的下载与安装,下载后放到d盘根目录
5.2 、配置环境变量,设置JENKINS_HOME ,例如jenkins文件在d盘根目录,JENKINS_HOME=d:\jenkins
5.3 、启动jenkins(jenkins.war文件我放在D盘根目录的)
命令行输入java -jar jenkins.war
浏览器中输入url:jenkins所在主机IP 端口:8080 ,打开jenkins
配置用户名、密码及插件,这里需要配置invoke ant插件、HTML测试报告展示的插件
invoke ant插件
HTML插件
5.4、新建并配置一个JOB
设置项目名称:
配置构建:
配置构建:invoke ant
配置build文件路径:
配置测试报告插件,用于打开测试结果报告
基本配置完成
5.5、JOB主页,点击立即构建,执行测试,构建完成即可通过HTML_Report来查看测试结果
继续构建基本完成
配置邮件插件来发送测试报告(引用他人截图)
1、在Jenkins安装Email Extension Plugin插件,如下图:
2、设置Extended E-mail Notification
进入“系统管理”-“系统设置”,对Extended E-mail Notification进行配置,具体参考下图:
注意:上图中的Password不是qq密码,而是在QQ邮箱申请开通IMAP/SMTP服务后收到的密码
3、设置邮件通知
还是在系统管理-系统设置里面设置,内容和Extended E-mail Notification差不多,具体如下图:
4、Jenkins任务的配置
a、在进入任务的配置页面,然后在构建后操作模块增加构建后的操作“Editable Email Notification”,如图:
b、我的Editable Email Notification配置如下:
注释:当测试邮件配置失败,看下系统管理员邮箱有没有配置。
c、注意:还要在高级里设置邮件的触发条件,如下:
d、我的邮件内容如下,可参考
第一个:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<div>
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<th align="center" colspan="2"><br />
<h2>构建信息</h2>
</th>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li><br />
<li>详细测试报告 : <a href="${PROJECT_URL}测试报告">${PROJECT_URL}测试报告</a></li><br />
<li>触发原因: ${CAUSE}</li><br />
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />
</ul>
</td>
<td>${JELLY_SCRIPT,template="html"}<br/>
</tr>
<tr>
<td colspan="2" align="center"><br />
<h2>测试报告</h2>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<div>${FILE ,path="C:/Users/kingdee/.jenkins/workspace/AutoTestDemo/target/surefire-reports/emailable-report.html"}</div>
</td>
</tr>
</table>
</div>
</body>
</html>
注意这行代码:
${FILE ,path=”D:/测试工具/JMETER/apache-jmeter-3.1/bin/ant-test/smoke_report/TestReport.htmll”}
作用是引入了testng生成的测试报告,然后在邮件的html里显示出来。
第二个:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本邮件是程序自动下发的,请勿回复!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">Changes Since Last
Successful Build:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
<tr>
<td><b>Failed Test Results</b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><pre
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
<br /></td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<!-- <tr>
<td>Test Logs (if test has ran): <a
href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
<br />
<br />
</td>
</tr> -->
<tr>
<td><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
设置构建时间来定时自动执行测试