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>
③ 生成的结果报告如下图
    1.  
       
       
       
      ④ 下面说一个,我在使用过程中遇到的一个问题: 就是在执行 最后生成报告的 task 时,一直报下面这个错:
          TransformerException,  Content is not allowed in prolog.
      后来在ant-jmeter官网上查到了原因: 
      Java代码  
       
      1. 1default 所以需要修改Jmeter的一个配置 
        Java代码  
         jmeter.save.saveservice.output_format=xml

        再来就是配置我们的Jeknins了。 

        这里就直接截个图了。配置实际上是很简单的东西的。

        这里执行的python脚本是为了进行重命名报告文件的用处。因为发送邮件的时候我们需要将html的结果显示在页面上。所以需要指定一个名字,但是我们又不想后续生成的报告都覆盖之前的报告。所以这里多了个重命名的操作。
        报告的模板的话,建议大家百度下。有个标准的模板挺好用的。
         
        (注意事项:修改build.xml文件JMX的目录为JENKINS活动更新之后的文件路径)
         
         
           
                   
posted @ 2016-10-21 18:07  stone_xiao  阅读(684)  评论(0编辑  收藏  举报