接口测试简介
接口的概念
接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。
人类与电脑等信息机器或人类与程序之间的接口称为用户界面。电脑等信息机器硬件组件间的接口叫硬件接口。电脑等信息机器软件组件间的接口叫软件接口。
用户接口,由一套刻度盘、球形把手、操作系统命令、绘图显示形式和其它装置组成,这些设置允许用户使用计算机或者程序通信。一个图形用户界面(GUI)提供给他的用户或多或少的"画图导向"方法。对于计算机系统而言,GUI通常是一个较令人满意的或者用户友好的界面。
程序接口,由一套陈述、功能、选项、其它表达程序结构的形式、以及程序师使用的程序或者程序语言提供的数据组成。自然的、合理的、支持任何设置到连接器或者到其它设备的附加装置。简单来说即同一软件系统不同功能层之间的通信规则称为接口。
接口测试概念
接口测试是项目测试的一部分,它测试的主要对象是接口,是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。
接口测试目的
测试与系统相关联的外部接口,测试的重点是检查数据的交互,传递和控制管理过程,提供测试质量和测试覆盖,更好地重现软件缺陷和定位错误。
接口测试主要考虑的问题是模块接口和系统接口。(内部接口、外部接口)
接口测试优势
- 接口测试非常快速
UI自动化执行一个测试用例10s
接口测试用例执行的话,需要的时候是毫秒级的 - 接口测试是属于集成测试
测试介入越早越好
越在项目早期发现问题,其修复问题的成本越低
接口测试内容
1、系统内部模块接口的测试
模块接口测试主要包括以下内容:
- 各个模块连接集成起来的时候,穿越模块接口的数据会不会丢失。
- 各个子功能组合起来,能否达到预期要求。
- 一个模块的功能是否对另外一个模块的功能产生不利的影响。
- 全局数据结构是否有问题。
- 模块的积累误差是否达到了不可接受的程度。
- 系统环境的测试。
2、外部系统与系统的交互
比如 app——支付宝,app——微信等不同系统之间的交互测试
3、硬件接口的测试
- 服务器接口的测试。包括服务器与交换机接口,以及服务器与磁盘阵列的接口。重点测试在线的状态,测试当服务器发送故障时,交换机或者磁盘阵列能否与备用服务器连接上。
- 交换机接口的测试,包括交换机与防火墙接口、交换机与磁盘阵列的接口,以及交换机与路由器接口的测试。
- 路由器与调制解调器的接口测试,包括路由器与单个调制解调器的接口,以及交换机与多个调制解调器的接口。
- 调制解调器与通信平台接口的测试,包括调制解调器与通信平台的DDN接口,调制解调器与通信平台的ISDN接口,调制解调器与通信平台的X.25接口,以及调制解调器与通信平台的FR(帧中继)接口。
接口测试策略
1、接口逻辑测试
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。
2、模块接口测试
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。
模块接口测试的主要包括以下四个方面:
(1)空值(Null)输入,检查模块接口对空值(Null)的反应能力。
(2)参数属性的测试,输入一个未赋值的参数会出现的情况。
(3)异常的测试,制造一些异常的测试场景,测试异常描述是否清晰。
(4)参数的个数设计与模块接口参数的个数不一致时,检查模块接口的反应能力。包括以下两种情况:
1.模块接口参数的个数不一致(或多于原设计的参数个数,或少于原设计的参数个数)
2.模块接口参数的类型不一致(字符型和数值型混用)
- 数据类型问题,包括:
a.变量的数据类型是否错误。
b.是否存在不同数据类型的赋值。
c.是否存在不同数据类型的比较。 - 变量值问题,包括:
a.变量的初始化或缺省值收到有错误。
b.变量是否发生上溢或下溢。
c.变量的精度是否足够。 - 逻辑判断问题,包括:
a.是否由于精度原因导致比较无效。
b.表达式中的优先级是否有误。
c.逻辑判断结果是否颠倒。 - 文件I/O问题,包括:
a.对不存在的或者错误的文件是否进行操作。
b.文件是否不以正确的方式 打开。
c.文件结束判断是否正确。
d.是否正确地关闭了文件。
接口测试用例设计
用例设计的内容应该包括:主要测试功能点、测试环境、测试数据、执行操作以及预期结果。
1、接口测试环境分为两种:一种是程序内部的环境;一种是程序的所调 用外部接口的环境。
2、接口测试测试数据分为接口参数数据和用例执行所需系统数据。数据的设计、准备测试用例的数据上需要花费更多的心思。要通过好的测试数据使用例查找问题。接口参数数据需对每个参数根据测试接口的实际的功能进行分析,在符合业务逻辑的情况下进行逻辑组合排列,不要遗漏了某些边界值和错误点的数据。每个用例执行所需系统数据和接口参数数据尽可能的采用不一样的数据,使用例更容易发现问题。
3、测试功能点,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性。接口划分原则为以接口提供的功能点的不同进行合适粒度的划分。同一功能点的用例又可根据测试环境的不同、数据的不同进行用例的填充。
4、接口测试用例执行操作非常简单,就是所测接口的调用。
5、预期结果验证,这也是接口用例设计的很关键的一步,应该细而不冗余。每个用例均需验证,避免一个用例中重复做相同的验证,提高测试用例的效率。
接口测试步骤
- 开发接口文档内容:接口请求地址、接口参数个数与类型、接口的用途
- 开发写好这个接口文档之后,并不意味着已经开发了
- 接口测试熟悉:业务需求,接口的参数类型、个数
- 编写接口测试计划、设计接口测试方案以及用例
- 使用工具执行接口测试
- 编写接口测试报告
备注:
常用的接口测试工具:postman、soapui、fiddler、jmeter、LR等
接口测试主要关注点
- 接口有翻页时,页码与页数的异常值测试
- 数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
- 每个接口入参的默认值、异常类型、非空校验
- 接口返回的图片地址能否打开,图片尺寸是否符合需求
- 当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求
- 所有列表页接口必须考虑排序值
- 所有功能都要考虑兼容旧版本
- 入参支持传多个值时,要考虑传的值的个数多的情况下,接口会不会报错
- 输出参数类型