什么是接口测试

接口测试是测试系统组件间接口的一种测试

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

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

接口测试就是指测试接口的功能、性能、安全性

接口有内部接口和外部接口

内部接口就是开发人员自己开发的接口

外部接口就好网站调用微信支付和支付宝支付接口

为什么进行接口测试

1.越底层发现bug,它的修复成本是越低的。
2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
3.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

  1. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
  2. 现在很多系统前后端架构是分离的,从安全层面来说:
    (1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
    (2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

测试左移

测试左移就是在提测之前已经介入了测试。在需求评审时不只是了解需求,更是要评估需求的质量,分析需求的合理性以及完整性。

在开阶段时也要参与设计方案的设计,了解开发的实现方式。

因为很多开发可能只对他负责的模块熟悉,作为测试需要评估改动范围以及是否有遗漏的模块和系统。

测试还可以通过提供测试案例或自动化测试脚本的方式给开发,让开发在设计时考虑的更全面,提高产品质量,毕竟越早的发现问题,解决的成本越低

接口测试的适用范围

一般用于多个系统间的交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统。主要测试这些对外部提供的接口的正确性和稳定性。它也同样适用于上层系统中服务层接口,测试难度随层级而上升。即越往上难度越大。

接口测试原理

通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request(请求)→response(响应))

接口测试的价值

降低成本,提高效率。接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。它是一个完整的体系,还包括功能测试,性能测试等。

接口测试的分类

a) 系统与系统之间的调用(如分享时,微信会提供接口给“跑向珠峰”);
b) 上层服务对下层服务的调用 ;
c) 服务之间的调用(如添加一条数据时,会先调用数据查询的服务,查询改数据是否是重复数据);
不同类型的接口测试方法可能不一致,但总体来说,不管是哪种类型,被测接口即为服务方,测试手段为客户方,接口测试的目的就是:通过我们的测试手段,去验证满足其声明提供的功能。

接口测试11--接口测试介绍_持续集成

接口测试,按功能分类

接口测试11--接口测试介绍_数据_02

接口测试,按类型分类

接口测试11--接口测试介绍_持续集成_03

接口测试,按照数据方向分类

接口测试11--接口测试介绍_持续集成_04

接口测试,按数据读写方式分类

接口测试11--接口测试介绍_接口测试_05

接口测试,按接口层级分类

接口测试11--接口测试介绍_持续集成_06

接口测试的方法

由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。

测试工具 postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

接口测试11--接口测试介绍_接口测试_07

也可以用接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。

接口自动化测试python、requests库、unittest、pytest

①测试前,准备测试数据
②执行测试用例
③比对测试结果正确性
④检查数据库数据正确性
⑤记录日志
⑥生成测试报告

接口自动化测试的含义

通过编写脚本实现接口测试、可以通过python语言或java语言实现

接口自动化测试能做什么

自动准备初始化数据

自动执行测试用例

自动验证接口返回结果的正确性

自动验证数据库数据的正确性

自动生成测试报告

接口自动化适用场景

目前设计的自动化接口测试案例有两个运行场景:
(1)测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。(开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。)
(2)回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。

接口功能测试

主要用于验证接口是否正确实现和处理需要的各种业务

将不同的数据传递给同一个接口,判断各个返回值是否正确

接口测试的流程

类似于功能测试,需求讨论→评审需求→确定需求→产出接口定义→根据需求文档及接口定义设计测试用例(测试用例主要从业务场景,功能以及异常测试几个方面考虑)→评审用例→执行测试

开发接口测试案例的整体方案

第一步: 分析出测试需求,并拿到开发提供的接口说明文档;
第二步: 从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点;
第三步: 和开发一起对接口测试案例进行评审;
第四步: 结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件;
第五步: 结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。


作者:暄总-tester