**
接口测试
**
一、简介
接口测试主要先从功能方面进行,如请求参数和响应参数的校验,业务逻辑或业务规则的校验,数据库数据的比对。
功能正常后根据需要进行安全、性能及相关扩展测试(与历史版本的兼容性、接口响应异常、设计合理性)等进行验证。
下面的思维导图是一个概要的测试关注方向:
二、详细介绍如下:
1、 针对输入:
主要看接口的入参,包括正常的参数,异常参数;
异常情况:参数异常和数据异常,用例设计主要是等价类划分和边界值分析;
A、正常的入参
就是根据接口设计文档的入参标准,输入正常的参数,正常返回接口文档定义的数据为准则 ;
B、参数异常
参数异常包括:参数为空,多参或少参,错误的参数;
C、数据异常
数据类型错误、参数为null,长度不符合设计;
不在字典范围内的数据,不合法的成员,特殊字符或敏感字符,存在关联关系的参数异常,大小写敏感等;
2、针对处理逻辑
根据接口文档,设计图、流程图,针对业务流程的理清逻辑关系;
可以从入参的限制条件、事件的操作对象、业务的状态转换等设计用例 ;
A、 限制条件分析
数值的限制:
字典,等级,行业相关限制,金额限制,分数限制等 状态的限制:有效|无效,在线|离线,拉黑|洗白等 ;
关系的限制:
存在或不存在,绑定或解绑等 权限的限制:管理员,普通用户等;
B、 对象分析
主要对合法和不合法的对象进行操作,比如银行卡用户对卡进行充值的情况;
1、用户A使用非用户A的卡充值;
2、用户A使用自己的卡进行充值,卡已过有效期;
3、用户A使用自己的卡进行充值,卡为黑名单或挂失等;
C、 状态转换的分析
1、比如支付类业务,先支付成功,撤单后会退款,再次支付如果支付未成功,则是支付失败;
2、状态之间的切换是否正常,未按正常业务顺利进行操作时,状态怎么显示,是否可控;
3、出现异常状态,空状态业务怎么处理显示等;
D、 时序分析
一项活动是由一系列的动作按照指定顺序进行,这些动作形成一个动作流;
1、是否按照这个顺序依次执行,才能等到预期的结果;
2、在执行过程中发生的其他分支动作程序会作何处理 ;
3、比如斑马停车风控业务,如果在入站后车辆直接掉头不驶入高速业务如何处理?
3、 针对输出
1、在考虑异常时,通常我们都会想到正常情况,无效的情况;
2、不一定能覆盖所有错误码,而接口定义返回的错误码可以帮助我们补充这一部分的用例;
3、比如网络异常,无效的规则,无效的参数,无效的业务ID,无效的任务,服务器异常等;
4、把错误状态吗补充可以设计更多的用例以发现前后端是否正常输出结果
4、返回结果提示是否友好,提示是否出现敏感信息等
4.数据库操作
A、对数据库操作是否频繁,在写库过程中是否占用大量的CPU,写库完成后进程是否释放
B、业务数据入库是否正常,是否有重复数据入库,是否出现乱码;日志数据入库是否正常
C、数据更新是否正常,尤其是时间类字段,时间是否为24小时制的格式
D、数据删除、备份是否正常
5、安全性
敏感信息是否加密(如银行账号,密码,转账金额)
6、 性能相关
A、接口在什么情况下会出现并发,并发场景是什么,什么情况下的并发会导致问题
B、最大并发,响应时间,吞吐量,资源消耗情况
7、接口超时
1、接口是否设置超时时间,超过时间返回什么数据这方面异常逻辑处理也是测试需要考虑的部分;
2、如果超时处理不当,可能会引起进程阻塞,或者超时后又接收到接口返回导致逻辑错乱
8、与历史版本的兼容性分析
1、已废弃的协议或接口,代码并未注释,在特定的情况下用户使用可能会触发已废弃接口出现意想不到的问题和损失;
2、同一套系统,不同服务之间的接口相互调用时,新接口是否受历史接口的影响,
3、新旧接口都对某一个功能进行处理,是否存在业务不兼容的问题
9、接口设计合理
1、接口字段是否冗余,是否返回了期望的信息,定义是否满足所有调用者的需求,接口调用是否方便,是否可扩展,
2、参数使用是否方便,业务规则是否都正确,参数类型是否支持业务量暴增而不受影响
3、新接口对整个服务的使用会产生哪些影响?