一、接口测试什么,为什么要进行接口测试?
1.接口测试定义
1.1什么是接口(API)
接口主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
API全称Application Programming Interface,这里面我们其实不用去关注AP,只需要I上就可以。一个API就是一个Interface。我们无时不刻不在使用interfaces。我们乘坐电梯里面的按钮是一个interface。我们开车一个踩油门它也是一个interface,我们计算机操作系统也是有很多的接口。
接口就是一个位于复杂系统之上并且能简化你的任务,它就像一个中间人让你不需要了解详细的所有细节。那我们今天要讲的Web API就是这么一类东西。像谷歌搜索系统,它提供了搜索接口,简化了你的搜索任务;再像用户登录页面,我们只需要调用我们的登录接口,我们就可以达到登录系统的目的。
首先从我们熟悉的普通基于图形界面做的手工测试开始,手工测试是这样子的:
接口测试则是这样子的:
这里唯一的不同,就是把手工测试操作的图形界面,改成了接口测试的工具或脚本。也就是说,我们做普通手工测试的大部分测试设计方法,在接口测试中仍然适用。
接口你可以简单的理解他就是URL,工作原理就会说URL通过get或者post请求向服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输与接收。
2.为什么要做接口测试
- 接口是各种系统功能的基础,一旦接口出现问题可能会引起许多系统功能的问题并且不容易定位。
- 测试前移,开展接口测试可以及早发现问题,有效降低测试成本。
- 检查系统的安全性、稳定性,前端传参不可信,比如购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
- 接口一般较UI相对稳定,利于进行自动化和持续集成。
测试金字塔:
-
越底层,越高效。
程序的问题,最终还得落在具体的代码上,所以底层的测试更容易发现问题。 -
越底层,越高效。越底层的Bug,修复成本越低。
越底层测试能越早发现问题,越早发现问题,修复的成本自然越低。但是越底层的测试,越难实施,像上图的最底层的单元测试,对于技术专业性要求比较高,单元测试一般是由开发人员进行测试。通过对比,接口(API)测试可以获得较高的投资回报。
3.接口有哪些类型?
接口一般分为两种:
3.1.系统对外的接口
比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。比如支付的接口、查询天气预报的接口等。
3.2.程序内部的接口
方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如购物系统,有登录模块、加入购物车模块、提交订单模块等,那你要提交订单就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
往细一点分,接口还分为:WebService接口和HTTP API接口。
3.3.WebService接口
WebService接口是走Soap协议通过HTTP传输,请求报文和返回报文都是XML格式的,我们在测试的时候都用通过工具才能进行调用,测试。
3.4.HTTP API接口
HTTP API接口是走HTTP协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是JSON串。现在用得最广泛的是HTTP API接口,我们下一章节来重点学习HTTP协议。
4.接口文档
标准的接口文档可以看看聚合API中的接口文档。
接口文档中比较重点的内容都要记住了,对于调接口很重要,也是面试很常问的。
听说你做接口测试比较多,那接口文档里面都有啥内容?
- 接口地址。
- 请求方式。
- 接口备注。
- 请求格式。
- 参数说明(参数说明中都有哪些说明,比较复杂一点的接口有多少个参数)。
- 错误码参照。
- 请求示例等。
接口用例编写以及常见Bug在另外一个文档中再详细描述