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代码
- "1.0""UTF-8""ant-jmeter-test""all"".""time""yyyyMMddhhmm""jmeter.home""F:\xxxxx\Jmeter""jmeter.result.jtl.dir""F:\xxxxx\resultLog\jtl""jmeter.result.html.dir""F:\xxxxx\resultLog\html""ReportName""TestReport""jmeter.result.jtlName""${jmeter.result.jtl.dir}/${ReportName}${time}.jtl""jmeter.result.htmlName""${jmeter.result.html.dir}/${ReportName}${time}.html""all""test""report""test""jmeter""org.programmerplanet.ant.taskdefs.jmeter.JMeterTask""${jmeter.home}""${jmeter.result.jtlName}""*.jmx""D:\test_case_path""*.jmx""report""${jmeter.result.jtlName}""${jmeter.result.htmlName}""${jmeter.home}/extras/jmeter-results-detail-report_21.xsl""${jmeter.result.html.dir}""${jmeter.home}/extras""collapse.png""expand.png"
③ 生成的结果报告如下图
④ 下面说一个,我在使用过程中遇到的一个问题: 就是在执行 最后生成报告的 task 时,一直报下面这个错:
TransformerException, Content is not allowed in prolog.
后来在ant-jmeter官网上查到了原因:
Java代码
- 1default 所以需要修改Jmeter的一个配置
Java代码
- 再来就是配置我们的Jeknins了。
这里就直接截个图了。配置实际上是很简单的东西的。
这里执行的python脚本是为了进行重命名报告文件的用处。因为发送邮件的时候我们需要将html的结果显示在页面上。所以需要指定一个名字,但是我们又不想后续生成的报告都覆盖之前的报告。所以这里多了个重命名的操作。
报告的模板的话,建议大家百度下。有个标准的模板挺好用的。
(注意事项:修改build.xml文件JMX的目录为JENKINS活动更新之后的文件路径)
build.xml:
<?xml version="1.0"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property name="jmeter.home" value="E:\apache-jmeter-2.12" />
<property name="jmeter.result.jtl.dir" value=".\jtl" />
<property name="jmeter.result.html.dir" value=".\html" />
<property name="ReportName" value="kamenwang" />
<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"/>
<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>
</copy>
</target>
</project>
- 1default 所以需要修改Jmeter的一个配置