JMETER+JENKINS接口测试持续集成
FIDDER+ANT+JENKINS+JMETER+SVN+tomcat接口测试集成
操作流程:
1.测试人员通过FIDDER过滤抓取接口调用信息,导出成jmx文件。(jmeter支持命令行方式调用jmx)
感谢黑夜小怪的分享(飞测上有DLL供下载)
2.jmx在jmeter上做修改后,增加线程组,断言,结果树。保存上传SVN指定位置。
3.JKENINS构建活动,使用ant 批量执行jmx脚本,并把报告转换成html格式。
4.tomcat添加虚拟主机,文件方式浏览报告。
一.FIDDER导出JMX。
2.生成报告
这个时候,自然而然地想到了万能的ant,希望它能有相应的jmeter task。
下面简单说明一下,如果使用:
① 首先,为了能够在ant中使用jmeter task,必须将“ant-jmeter-1.1.1.jar”这个jar包放到ant的classpath中去。这个jar包位置 jmeter的安装目录下的 extras 目录中。
PS:可直接将这个jar拷贝至ant安装目录下的lib目录中去就可以了。
② 编写脚本
Ant代码
<?xml version="1.0"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="E:\apache-jmeter-2.12" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value=".\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value=".\html" />
<!-- 生成的报告的前缀->
<property name="ReportName" value="kamen" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}\${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}\${ReportName}.html" />
<property name="jmeter.result.htmlName2" value="${jmeter.result.html.dir}\${ReportName}2.html" />
<target name="all">
<antcall target="test" />
<antcall target="report" />
<antcall target="report2"/>
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="D:\jenkinshome\jobs\卡门接口\workspace\jtestcase\" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-report.xsl" />
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
<target name="report2">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName2}"
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>
③ 生成的结果报告如下图
-
④ 下面说一个,我在使用过程中遇到的一个问题: 就是在执行 最后生成报告的 task 时,一直报下面这个错:TransformerException, Content is not allowed in prolog.后来在ant-jmeter官网上查到了原因:Java代码
- 1default 所以需要修改Jmeter的一个配置
Java代码jmeter.save.saveservice.output_format=xml
再来就是配置我们的Jeknins了。
这里就直接截个图了。配置实际上是很简单的东西的。
这里执行的python脚本是为了进行重命名报告文件的用处。因为发送邮件的时候我们需要将html的结果显示在页面上。所以需要指定一个名字,但是我们又不想后续生成的报告都覆盖之前的报告。所以这里多了个重命名的操作。报告的模板的话,建议大家百度下。有个标准的模板挺好用的。(注意事项:修改build.xml文件JMX的目录为JENKINS活动更新之后的文件路径)
- 1default 所以需要修改Jmeter的一个配置