3.1. 接口测试概述

首先我们先看一下经典金字塔

../_images/jinzita.jpg

这个金字塔从底层到上层依次是单元测试、服务测试、UI测试,越接近接近底层,收益成本比越高,我这要说的就是服务测试,也叫做接口测试、API测试

3.1.1. 什么是接口

通常我们接触到的接口分以下几种

  • 系统内部服务层级之间的接口调用,比如后端服务应用层调用service层的接口,service层掉用DAO层的接口,这个地方的接口测试属性白盒范畴,一般开发自己做就可以了
  • 服务之间的接口调用,比如你有两个服务,一个是用户中心,一个是订单中心,订单中心会去调用户中心的服务,查询用户信息,这些接口我们一般是要测试的
  • 系统之间的接口调用,比如你商户系统会去调公共服务系统的接口

说完的接口的种类,那么怎么理解接口呢,通俗一点就是输入数据,返回数据,不同种类的接口应用层协议可能不一样,传输的数据格式也可能不一样,在这里我们主要介绍HTTP接口,因为这种接口使用的最广泛,搞明白之后,其它接口大同小异,无非是client不一样而已

3.1.2. 怎么开展接口测试

一般来说,我们开展接口测试的流程如下:

  1. 需求确定后,开发出API文档
  2. 拿到API文档,编写接口测试用例
  3. 开发交付
  4. 实施接口测试

接口测试用例跟常规的功能测试用例基本一样,可以从接口功能测试、接口业务测试、接口性能测试、接口安全测试等角度考虑

接口功能的关注点是

  1. 接口每个参数输入正确与错误
  2. 接口参数缺失
  3. 接口参数边界值
  4. 接口参数类型
  5. 接口并发调用

接口业务测试主要是从业务的角度出发,把接口组合成一条业务链,比如登录之后下个订单,然后再取消,数据库中的数据是否正确等等

接口的性能测试是指接口是否满足业务的要求,比如业务要求系统可以满足50个人同时下单,那么下单这个接口就要可以承担50 TPS,目前业内一般使用JMETER去做性能测试

针对接口的功能和业务逻辑测试,如果采用手工的方式可以使用POSTMAN、HTTPCLIENT等工具,也可以使用JMETER、SOAPUI工具,同时也可以自己写脚本去测试,这种方式更为灵活,更容易实现一些复杂的场景和业务逻辑

3.1.3. 使用python做接口自动化

使用python做接口自动化测试是非常简单的,python入门非常简单,通过短时间的学习后,就可以开展自动化测试了,但需要掌握如下知识:

  • 理解HTTP
  • 熟悉python基础,python数据类型、函数、模块、类
  • 熟悉常用的python模块,如requests、json、configobj、pyyaml等
  • 熟悉python单元测试框架,如unittest、pytest、nose等
  • 熟悉python操作数据库的方法