什么是接口测试?
接口测试是测试系统组件间接口的一种测试。
主要用于检测外部系统与系统之间以及系统内部各个子系统之间的交互点。
重点测试数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等等。
这要求对业务逻辑有一定程度上的理解,对数据流向有较好的定位。
接口测试般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。
接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。
接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。
接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比。
接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。
接口测试的目的是测试接口,尤其是那些与系统相关联的外部接口,测试的重点是要检查数据的交换、传递和控制管理过程,还包括处理的次数。外部接口测试一般是作为系统测试来看待的。
不是所有的团队都可以在一个隔离的测试环境中进行测试工作的,因此使得对外部接口的测试显得困难。
我们应该确保较早地与相关的组织协调好并确定进行外部接口测试的方案。
有时候相关的组织只是人工的静态的审阅一次数据而并不真正的用这些数据来测试,这些都增加了实际测试执行中遇到的风险,但有些时候是可以避免的。
接口测试有的公司是归纳在集成测试里面,也有的公司会放在系统测试阶段,不过这个都没有什么区别,本质上接口测试就是通过某个功能模块对外暴露的一个接口地址传参进行测试。
一般来说接口分为如下三类:
A. 系统与系统之间的调用(如我们一般常见的分享内容到朋友圈或者是微信朋友时,微信会提供接口给这些需要用到分享的应用)上层服务对下层服务的调用(这个理解难度稍微有点大,在我们程序中功能是分层的,那么属于上层对底层服务的调用,以后能够有机会接触到代码或者更加稍微复杂点的接口测试就能够理解。举个例子,我们的程序框架分为三层,分别是web层:提供给用户请求的层次;feb迁至层:作为信息传递的中转站;service层:作为程序应用的核心,处理所有的请求
C.服务之间的调用(如添加一条数据时,会先调用数据查询的服务,查询该数据是否是重复数据)
不同类型的接口测试方法可能不一致,但总体来说不管是哪种类型,被测接口即为服务,测试手段为客服方,接口测试的目的就是:通过我们的测试手段,去验证满足其申明提供的功能。
2如何做接口测试
接口测试的原理:通过测试程序模拟客服端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(reques->response)。
接口测试的流程与功能测试有什么区别呢?从原则上以及流程上讲,是没有啥区别的,都同一套软件测试流程:需求讨论->评审需求->确定需求->产出接口定义->根据需求文档及接口定义设计测试用例(测试用例主要从业务场景,功能以及异常测试几个方面考虑)->评审用例->执行测试。
接口测试采用的最基本的就是黑盒测试,在这个测试过程中我们最需要关注的是,如何来设计测试用例,设计测试用例所采用的方法也是我们常所用的几大方法:等价类、边界值以及错误推测法、场景法。在设计测试用例之前,我们先来看看常见的接口文档形式。
这就是上图是一种比较规范的接口文档说明,包含了如下内容模块:接口的类型说明、接口地址、http请求方式、输入参数和请求接口后返回的响应结果。
接口测试编写测试用例,主要关注点是输入参数、输出结果以及内部业务逻辑是否正常‘,所以我梦设计用例也要从这几方面出发考虑:
a)输入参数测试:针对输入参数进行的测试,也可以说是假定接口参数的不正确性 进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法(不合法),输入参数为空,为null,输入参数超长等等;
b)接口是否满足了所提供的功能,相当正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例就有更好的可读性和可维护性;
c)逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试的界限并不是那么清晰,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;
d)异常情况接口测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何异常都进行处理;
针对上面的注册接口,我们利用测试用例设计方法来编写测试用例,如下所示:
3接口测试的工具选择
可以进行接口测试的工具有很多,这里简单介绍几个:
>loadrunner :一款商业性能测试工具,用来做接口测试,很好很强大。
>jmeter :一款开源的性能测试工具,操作简单方便,既有jdbc request 操作数据库数据,也有http request 和 soap request 应对测试;
>httprequester :火狐浏览器自带接口测试工具,插件中安装即可,界面简单明了,容易上手。
>postman :谷歌浏览器的扩展工具,界面简洁,开发者比较常用的一款插件工具。
>soapui : 开源测试工具,通过soap/http 来检查、调用、实现web service的功能/负载/符合性测试。
我们将在后面的教学中,重点讲解Jmeter这款综合性比较高的工具;
2018-09-20 广告
2020-09-14 · 百度认证:西安菁英教育科技官方账号
什么是接口测试
接口测试是测试系统组件间接口的一种方式,接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的增删改查操作,以及系统之间的逻辑关系等。
http的几个类型(接口的几种类型)
接口的类型包括:post ,get,put,和delete等。
post和get的区别:post的参数是存在webfrom,以表单的形式存在,get的参数是存在在url中
get:请求获取request-url所标时的资源
post:在request-url所标识的资源提交数据或者附加新的数据。
put:和post很像,也是想像服务器提交数据,put指定了资源在服务器上的位置,post没有
delete:删除服务器上的某个资源
怎么做接口测试
接口测试只是无界面的功能测试,设计的思路跟功能测试基本都是一致的。
1、输入的参数测试
1)根据参数的要求,进行判断是否满足要求,参数要符合他的要求,比方假如让输入一个数字,那么就判断输入数字----整数、小数、负数、复数等数字进行正常测试,或者超大数值和超小数值,异常测试就是判断当不输入数字,保持为空,或者输入的为字符串,不为数字时,反应是否正常。
2)参数是否为必填项,如果为必填项,将所有的必填项都填写,进行接口测试当必填项未填写时,进行接口测试,查看是否报错
3)如果参数为选填项,则进行测试,如果有多个选填项,一个个进行测试,填入所有必填项,和要求的一个选填项,接口返回是否正确,再测试,当选填项保持为空时,是否能够正常返回,当多个选填项时,是否返回正常
4)如果参数名称填写错误是否报错,如果存在不合法的参数,是否报错等等
5)对每个接口进行逻辑的测试,就是比方为新增一个数据,查对应的url,就得显示新增的数据,也就是所描述的每次新增,删除或者改动后都要进行检查查询。
6)接口中还得考虑一些异常情况,比方权限问题,a方建立了多个内容,b方采用接口是否可以删掉。
7)接口测试还得考虑各种逻辑和现实问题,这个就需要就是根据项目本身的可用性,可以完全想象成功能测试进行测试
8)还要考虑反复提交接口,是否报错
9)异常情景,如请求超时,快速连续点击、请求失败等情况
10)安全性问题,比方登录的密码是否需要加密。
用例设计:
1:写一个程序去调用该接口,看是否能够达到该接口所定义的功能。
2:根据该接口参数,构造不同的用例,测试接口在参数合法及非法情况下能否达到预期效果。
3:根据该接口中的逻辑,设计不同条件的用例,测试该接口实现代码的逻辑。
4:进行容错及健壮性测试。
5:静态检测代码,看是否有内存泄露、或永远走不到的分支、代码规范及逻辑是否合理。
6:对于一些接口,需要进行多线程测试。
用例设计:
1:写一个程序去调用该接口,看是否能够达到该接口所定义的功能
2:根据该接口参数,构造不同的用例,测试接口在参数合法及非法情况下能否达到预期效果
3:根据该接口中的逻辑,设计不同条件的用例,测试该接口实现代码的逻辑
4:进行容错及健壮性测试
5:静态检测代码,看是否有内存泄露、或永远走不到的分支、代码规范及逻辑是否合理。
6:对于一些接口,需要进行多线程测试