接口测试在日常测试中也是比较重要的部分,但是由于测试的不可穷尽性,在很多互联网公司都是采用风险驱动的模式,有侧重性的去选择测试方法~~
日常接口遇到的常见问题:
1、接口逻辑校验性不完整
2、入参输入与接口所需参数不符,造成程序错误
3、对象校验出错,获取信息错误,校验不上
4、定时任务出错
5、类型溢出,导致读取和写入不一致
6、状态出错,导致逻辑处理出现问题
7、接口execute前未对前置条件信息进行校验
.........
接口用例设计层面:
一、接口输入层面(入参类型)
字符串:
1、空字符
2、特殊字符
3、主要考虑字符串长度和字符串的内容
json:
1、字段类型错误
2、fastjson、jackjson
3、字段错误
4、未包含及缺失字段
数值型:
1、边界值、边界外、边界内三方面
2、特殊值处理不当程序异常、类型边界溢出、错误信息返回不正确
数组链表:
1、重复值
2、空值
3、最大范围值
二、接口逻辑层面
1、数值类型限制:比如购买次数、登录次数、优惠券最大面额、订单取消次数等
2、状态限制:比如是否登录、是否有订单等
3、关系限制:比如好友关系、关注关系,只能查看好友或者关注人的朋友圈
4、权限限制:比如销售只能查看和自己绑定客户数据,而管理员可有查看所有客户数据
5、时间限制:比如未支付过20分钟订单自动取消
栗子:
针对状态转换分析
比如一个打车订单,从乘客下单、司机抢单、到达起点、接上乘客、到达目的地,发起支付,支付,评价这是一个完整的订单状态转换流程,必须按照这个次序,才能正确流转,一旦打乱其中任何一个状态,就会出现逻辑问题。
以上为实际工作遇到的业务场景,此处每一次流程往下流转的节点,都有一个Status也会根据不同的节点状态也会发生改变,接口之间相互依赖关联,因为是toc的系统所以对接口的坚韧性和可用性都会有较高的要求,对测试而言也需要模拟不同的异常场景,来覆盖接口逻辑
接口设计可以这样:
1、正常状态迁移:乘客下单,司机抢单
2、异常状态迁移:乘客刚下的那,司机发起支付,出现异常
三、输出结果层面
一般情况下,接口正常处理的结果可能只有一个,但是异常的处理结果,可能会返回多种错误,那就可以针对不同的错误进行设计
接口超时
1、旧版本接口
2、废弃接口
3、接口设计是否合理,比如字段冗余、接口冗余、返回错误信息是否清晰明了、调用是否方便
4、幂等性
下面来看一下请求结构图,理解一下HTTP的URL是怎么组成为一个接口的