接口测试持续集成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试持续集成相关的知识,希望对你有一定的参考价值。

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. "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代码  
      技术分享
      1. 1default 所以需要修改Jmeter的一个配置 
        Java代码  
        技术分享

        1. 再来就是配置我们的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>

以上是关于接口测试持续集成的主要内容,如果未能解决你的问题,请参考以下文章

接口测试持续集成是如何进行的呢?

Python接口测试实战5(上) - Git及Jenkins持续集成

接口测试持续集成

什么是持续集成?

Jenkins+maven+jmeter接口可持续集成自动化测试

接口自动化测试持续集成--Soapui接口测试