导语
在日常业务接口测试过程中,可能会因为用例的设计不够完整和全面,导致测试覆盖不全,从而使得有问题的代码被发布上线,那如何能避免此类问题的产生呢,以下将通过一个接口的用例设计来聊聊我对设计方法的一些总结。一个接口通常是有输入输出的,调用相关接口,接口会执行相关处理逻辑。那在接口测试的用例设计时,就可从输入、接口处理、输出三个方面考虑:
- 针对输入,可按照参数类型进行设计;
- 针对接口处理,可按照逻辑进行用例设计;
- 针对输出,可根据结果进行分析设计。
一、接口示例
1、还款接口文档
Request:
字段 | 类型 | 字段属性 | 说明 |
channel | Integer | 必输 | 还款渠道:1-余额扣款,2-银行卡扣款 |
debtId | Long | 必输 | 债务ID |
actionType | Integer | 必输 | 还款类型:1-用户自行还款,2-系统还款 |
extendProperty | Dictionary<String, String> | 可选 | 扩展属性:优惠券还款:couponPaymentInfo |
Response:
字段 | 类型 | 说明 |
result | Integer | 结果:0:成功,100:处理中,1:失败 |
message | String | 信息: |
2、业务逻辑图
3、接口业务逻辑描述
- 步骤:生成还款记录表A
- 描述:记录还款相关信息和状态,不同步骤完成之后会更新该表状态,状态包括1,2,3,4
- 步骤:扣款
- 描述:
- 接口参数传值不同对应的扣款渠道不同,channel=1,将调用户余额接口扣款;channel=2,将调用银行卡接口扣款;extendProperty传值,将调用优惠券抵扣还款
- 扣款调用均为外部接口,返回接口包括扣款成功、扣款失败、扣款进行中3种结果
- 描述:
- 步骤:更新债务记录B,C,D表
- 描述:债务记录B,C,D 3张表在更新时,用同一事物处理,以保证数据更新的一致性
二、用例设计
1、 输入参数检查
(1) 入参字段属性验证此验证包括字段可输必输,字段格式检查(数值型,字符串型,数组或链表)两种类型,对应示例的部分用例设计如下:
- channel字段必输,不输该字段接口返回无效参数,发起失败
- extendProperty字段可输,不输该字段接口能正常返回
- extendProperty传入的参数不是Dictionary<String, String>类型,接口返回无效参数,发起失败
(2) 入参数据业务有效性验证
此验证包括两类:
1. 字段为枚举类型,传入的值不在枚举值中,接口如何处理
2. 无效业务属性值传入,接口如何处理
对应示例的部分用例设计如下:
- channel值传3,接口返回无效channl,发起失败
- actionType值传3,接口返回无效actionType,发起失败
- debtId值为已还债务,接口返回无效债务,发起失败
- debtId为不存在的债务id,接口返回无效债务,发起失败
2、 接口逻辑处理检查
(1) 业务分支覆盖验证根据示例的业务逻辑图,可以设计以下五个流来程覆盖整个业务环节:
- 生成还款记录失败—>还款失败
- 生成还款记录成功—>扣款失败—>扣款失败—>还款失败
- 生成还款记录成功—>扣款处理中—>还款处理中
- 生成还款记录成功—>扣款成功—>更新债务失败—>还款处理中
- 生成还款记录成功—>扣款成功(包括银行卡扣款、余额扣款、优惠券抵扣三种方式)—>更新债务成功—>还款成功
(2) 落库数据检查
示例接口逻辑最后需要完成是数据库写入,所以可以通过落库的每个字段的不同值进行覆盖和检查,以示例中生成还款记录表步骤为例部分用例设计如下:
还款记录表A部分字段
字段 | debtId | listingid | status | amount | actionType | channel | specifyType |
描述 | 债务id | 标的id | 还款状态 | 还款金额 | 还款类型 | 还款渠道 | 指定还款类型 |
- istingId、amount字段从债务相关表查出的并写入表中的值是否正确
- actionType,channel字段从接口传入参数并写入到表中值是否正确
- status字段(1-还款记录生成,2-扣款成功,3-债务更新成功,4-还款成功,5-还款失败)在各业务流转中的状态是否正确
- specifyType字段在此接口不使用,默认值设置成功0
(3) 调用外部接口验证
扣款调用外部接口用例设计,需要考虑程序内部如何判断外部接口各种不同的返回结果,及程序自身对各种结果处理的逻辑判断,用例设计结合以下几种情况设计用例:
- 返回扣款成功
- 返回扣款失败
- 返回处理中
- 返回系统异常
- 未返回
3、 输出参数检查
(1) 不同返回结果的遍历检查
此项案例设计主要是针对接口返回不同结果的检查,对应示例的用例设计如下:
- result=0,message返回还款成功
- result=1,message返回还款失败
- result=100,message返回还款处理中
(2) 查询接口兼容数据完整性检查
查询接口一般处理逻辑较为简单,大多数均为查询库表中记录并返回相关字段,而在输出参数设计用例时,则更多应该考虑库表中输出字段数据和格式的丰富性,如datetime,库表中可能会存在”2015-12-28 10:12:11”,”2015-12-28 10:12:11.0”两种格式,此时应检查接口是否能兼容。
三、实践总结通过示例接口测试用例的设计,方法可以概况为将设计思路从划分维度到功能检查点方向逐个发散考虑,并整体review用例设计的完整度,下图即为示例接口设计的脑图,当然此示例接口包括的维度和检查点不适用所有业务,大家也可根据各自业务的特性和遇到过的坑,总结出适用于自己业务的维度和检查点。
本文来自拍码场,经授权后发布,本文观点不代表信也智慧金融研究院立场,转载请联系原作者。