1、什么是接口测试?php
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。html
接口测试适用于为其余系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试一样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。web
接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。express
基于接口测试的重要性,以及它比较容易自动化的特性,经过持续集成的接口监控可以及时的发现项目中存在的问题,这对持续运营的项目来讲,很是重要。apache
2、接口测试的流程api
一、 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档并发
二、 获取接口测试文档后,就能够进行接口用例的编写和调试框架
三、 接口用例编写调试完成后,部署到持续集成的测试环境中,ide
四、 设定脚本运行频率,告警方式等基本参数,进行接口的平常监控工具
五、 每日进行接口脚本的维护更新,接口异常的处理
3、编写接口测试脚本
大部分性能工具均可以用来进行接口测试,jmeter就是一个好用的性能测试工具, 他也一样能够用来进行接口测试,jmeter比较适用于CGI、webservice、DB等类型的接口测试。下面以websevice api接口为例说明如何编写接口测试用例(本文侧重于接口测试平台的搭建,对于具体工具是使用只进行简单介绍,对于工具不了解的,能够自行百度):
jimter接口脚本的编写步骤以下:
一、 编写接口请求
经过录制或者查看接口文档,编写接口请求,进行调试,确保接口调试经过
对于http的请求来讲,就是正确的填写域名,查询字符串,查询参数等信息
二、 对接口的返回结果进行断言
断言的目的是对输出结果进行判断,确认接口测试结果是否有异常
这些工做完成后,接口测试脚本就准备好了
4、生成接口测试报告
接口测试脚本运行后生成的是JTL(xml)格式的文件,这些文件不具有可读性,所以咱们要把他转化为能够阅读的html格式报告。
转化的步骤以下:
一、 安装ant工具
Ant是一个功能强大的打包编译工具。咱们使用他的目的是将xml文件转化为html格式的文件
二、 找到jmeter自带的xsl文件
Xml文件要转化为html文件,须要编写xsl文件,实际上,jmeter已经自带了xsl文件,若是你不想本身定义格式的话,能够直接使用自带的格 式,这样能够省很多事情。这些文件的位置位于jmeter的extras文件夹下,只须要简单修改一些文件路径配置就能够正常使用。
三、 编写ant的buildfile文件
Ant自带了把XML转化为html的lib库,所以,这个转化也是至关简单的,示例以下:
<target name="xslt-report" depends="_message_xalan"> <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${resultpath}/${test}-${TODAY}.jtl" out="${resultpath}/${test}-${TODAY}.html" style="${jmeter.extras}/jmeter-results-detail-report${style_version}.xsl"> <param name="showData" expression="${show-data}"/> <param name="titleReport" expression="${report.title}"/> <param name="dateReport" expression="${report.datestamp}"/> </xslt> </target> |
完整的buildfile文件,请自行百度
四、 运行ant命令,生成html文件
Cmd运行ant –buildfile xsl文件,你就能够生成html报告了
生成的测试报告以下:
5、部署到持续集成平台
部署到持续集成平台能够实现脚本的定时运行,这是接口测试的核心。
这里咱们选用了jenkins,,jenkins是一个强大的持续集成系统,使用起来也很简单。
使用步骤以下:
一、 安装jenkins
Jenkins的安装是很是简单的
注意:请将jenkins安装到一个空间比较大的系统盘中。由于jenkins运行起来,生成的文件比较占空间。
二、 安装完成后,配置一个项目
三、 配置item参数
旧的构建保存了你在一次构建中的全部临时文件,若是构建没有保留的必要,就勾选丢弃旧的构建,同时设置保持构建天使和保持构建的最大个数两个参数。
注意:三个设置必须同时设置,不然无效
四、 设置定时运行间隔,这里,设置间隔时间为10分钟运行一次
五、设置invoke ant
经过设置invoke ant,就能够调用ant,执行打包过程。在这里,也就是执行生成测试报告的步骤
经过以上步骤,咱们就成功搭建了一个简单的持续集成的接口测试平台,固然,你也能够根据本身的须要添加其余更强大的功能
jmeter能够经过ant自动执行测试脚本,而后集成到jenkins上,并发送测试报告
一、下载安装ant
二、将jmeter安装包extras文件夹里ant-jemter-1.1.1.jar 复制到ant\lib下
三、进入到jmeter安装包extras文件夹,ant后测试下可否生成test.jtl和test.html
四、将jmeter安装包extras文件夹下build.xml和collapse.png、expand.png、jmeter-results-detail-report_21.xsl复制到bin目录下
五、修改build.xml配置路径
六、jenkins上安装Performance plugin后,新建job
执行构建后就可启动jmeter的测试脚本并在jenkins上看大生成的测试报告
实际配置
对应的目录
设置的主目录
绝对路径
build.xml 内容
<?xml version="1.0" encoding="utf-8"?><project name="JmeterTest" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 须要改为本身本地的 Jmeter 目录--> <property name="jmeter.home" value="/usr/local/JmeterTest/apache-jmeter-2.13" /> <!-- jmeter生成jtl格式的结果报告的路径--> <!-- <property name="jmeter.result.jtl.dir" value="/usr/local/JmeterTest/results/jtl" /> --> <property name="jmeter.result.jtl.dir" value="/var/lib/jenkins/workspace/Jmeter/results/jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="/usr/local/JmeterTest/results/html" /> <!-- 生成的报告的前缀 --> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> <!-- 接收测试报告的邮箱 --> <property name="mail_to" value="11111@163.com" /> <!-- 电脑地址 --> <property name="ComputerName" value="bogon" /> <target name="all"> <antcall target="test" /> <antcall target="report" /> </target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的全部jmeter脚本 --> <testplans dir="/usr/local/JmeterTest/script" includes="*.jmx" /> </jmeter> </target> <target name="report"> <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" 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>
执行构建后就可启动jmeter的测试脚本并在jenkins上看大生成的测试报告