软件测试 | 如何做接口测试?为什么要做接口测试?

391 阅读5分钟

1、什么是接口测试?

 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

接口一般分为两种:

1.程序内部的接口:

方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录

那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用

2.系统对外的接口:

比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法

来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。

2、为什么要做接口测试

1.越底层发现bug,它的修复成本是越低的。

2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

3.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

  1. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

  2. 现在很多系统前后端架构是分离的,从安全层面来说:

   (1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

   (2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

3、接口测试的体系

接口测试相比UI测试,可以更早发现系统中的问题,更快地反馈质量改进建议;同理,单元测试相比接口测试,可以更早发现系统中的问题,更快地反馈质量改进建议,所以花费的成本更低。

4、客户端测试与服务端测试的关系

虽然接口测试覆盖面广,但是也不能使用接口测试替代客户端测试。UI测试涉及系统的用户体验,用户体验的测试无法用接口测试替代。

5、接口测试有哪些好处?

(1)实现测试左移

用户界面的GUI测试是模拟真实用户使用软件的行为,它位于测试的最顶层,发现问题后,定位和修复的代价都很较大。API测试可以实现测试的左移,即前后端分离的项目,当后端开发完毕后,即可进行接口测试,而无需等待前端。可以保证尽早发现问题,降低问题修复成本。

(2)降低维护成为

相比较用户界面,接口比较稳定,维护成本低

(3)提高测试效率

一方面,由于接口在执行中不依赖与任何界面上的操作,其执行稳定性远远过于GUI,因此可以实现自动化,提高测试效率;另一方面,可以将一些常在的接口用例做成小工具(或直接执行脚本),测试过程中的一些数据准备以及构造的场景,就可以直接拿来用了;还有,需要反复执行的回归场景,可以直接执行用例。

(4)有利于BUG定位

很明显,通过接口发现的问题,就是后端问题,可以直接找负责接口的开发人员;如果仅仅是用户界面发现的问题,可以直接找前端开发。这种测试策略可以明确bug的范围,降低bug定位成本

6、为什么要重视接口测试?

近几年软件的规模日益庞大,软件系统越来越复杂,仅仅从用户界面的测试无法保证系统的健壮性和容错性,且越早发现问题修复的成本越低。但是由于互联网产品追求的是快速实现功能并上线,基本不会给开发或测试人员有多余的时间去做足够的单元测试;及时预留了单元测试的时间,频繁的迭代也会让单元测试处于不断写的状态。因此,互联网产品的单元测试也有一定的针对策略,一般是对核心模块相对稳定的业务和服务覆盖单元测试。在此情况下,API测试变得尤为重要。主要原因如下:

API测试用例的开发、调试和执行效率比较高

API相对稳定

API测试用例的执行的稳定性远远高于GUI测试

现在很多互联网产品都采用了微服务架构,在此架构下,如果做好了每个服务的API测试,整体产品的质量就有了保障。

搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核