一、什么是接口(API)?
1、百度词条解释:
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
2、白话解释:
咱们去餐厅吃饭,首先:和前台点餐员点餐“1、鱼香肉丝,2、宫保鸡丁”;然后:点餐员通过点餐系统把我们点的菜传递给后厨工作人员,后厨工作人员制作菜品;最终:餐厅服务人员给我们上菜。
在整个过程中,只需要关注输入(也就是我们要点什么菜,餐厅是否有我们要点的菜)、输出(最终上的菜确实是我们点的东西),不需要关注处理过程和内部逻辑(后厨是如何做菜的)。
二、接口分类——内部接口与外部接口:
1、内部接口:
供程序内部调用的接口,一般指一个方法、函数、模块等。
例如:百度贴吧发帖需要调取登录接口,登录成功后才能发帖。登录模块就是内部接口。
2、外部接口:
提供给程序外部调用的接口(第三方)。
例如:用滴滴打车在支付时需要调用微信/支付宝等方式进行支付。微信/支付宝支付此时对于滴滴来说就是外部接口。
三、什么是接口测试?
1、官方解释:
测试系统组件间接口:主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点:要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
2、白话解释:
(1)接口是否满足业务需求 (去饭店吃饭:能否成功点菜,并成功上菜)
(2)各字段是否正常(字段:菜名、单号、桌号是否正确)
(3)实际结果与预期是否一致(服务员上的菜和我们点单的菜是否一致,至于大厨如何做菜,我们不关注)
3、接口测试重点关注内容:
(1)接口要实现的业务功能
(2)不同的输入对应不同的输出
(3)错误处理情况
(4)不用关注接口的具体代码实现
四、为什么要进行接口测试?
1、可以更早的介入测试。
例如:开发完一个接口就测试一个接口,不用等整个模块完成才开始测试,减少延期风险。
2、节约成本,越早发现bug,修复成本越低。
例如:在功能测试时发现底层bug,可能会导致项目重构或延期。
3、接口测试好了,前端变化只需测试前端即可,节省时间。
4、可以发现很多前端发现不了的问题。
例如:抽奖活动,每天只允许抽三次,三次后前端界面的抽奖按钮灰显,可通过调用接口跳过页面的限制,进行第四次抽奖。如后端接口没做限制,可直接对服务器进行请求,再次抽奖;写个脚本不间断的调用接口进行抽奖,一定能抽到最大奖。
5、检查系统的安全性、稳定性。
例如:在搜索时,前端会过滤掉特殊的SQL语句,如后端接口未过滤,会导致SQL注入。
6、可以检查系统的异常处理能力。
例如:购买京东商品,通过前端下单时商品价格不可能为-1元,但调用接口可以传参数-1元,接口要做此特殊处理。
7、接口测试更容易进行自动化以及持续集成,减少回归测试的人力成本和时间。
例如:每次项目上线前,跑一遍接口自动化脚本,可以确保旧有接口以及新增接口各项正常。