一、接口测试发现的一些典型问题
1.传入参数处理不当,导致程序crash;
2.类型溢出,导致数据读出和写入不一致;
3.因对象权限未进行校验,可以访问其他用户敏感信息;
4.状态处理不当,导致逻辑出现错乱;
5.逻辑校验不完善,可利用漏洞获取非正当利益等。
二、接口设计合理性
1.接口字段是否冗余;
2.接口是否冗余;
3.接口是否返回了调用方期待得到的信息;
4.接口定义是否可满足所有调用需求;
5.接口定义调用是否方便。
三、接口测试用例设计
1.针对输入设计
1.1 入参类型:数值型(int,long,float,double等)、字符串类型、数组或链表、结构体(struct)。
1.2 数值型
等价类:取值范围内、取值范围外、取值范围边界
常见问题和风险:特殊值处理不当导致程序异常退出、类型边界溢出、取值范围外值未返回正确的错误信息等。
1.3 字符串型
字符串长度:等价类(取值范围内、取值范围外)、边界法(规定范围边界、类型边界)、特殊值(0,空字符串)
字符串内容:特定类型(英文、中文、大小写)、特殊字符(!@#¥%……&*()等)、敏感字符(“”等)
可能出现的问题和风险:传入非特定类型程序异常退出、超长字符未进行处理导致存储和显示灯异常、其他用户可见设置的敏感字。
1.4 数组或链表类型
成员个数:等价类(取值范围内、取值范围外)、边界法(规定范围边界、个数边界值)、特殊值(0等)
成员内容:等价类(合法和非合法成员)、重复法(重复的成员)
可能存在的问题和风险:0个item时程序异常退出、重复的item处理时未去重导致结果异常等
2.针对逻辑设计
2.1 约束条件分析
数值限制:分数限制、金币限制、等级限制等;
状态限制:登录状态等;
关系限制:绑定关系、好友关系等;
权限限制:管理员等。
常见的问题和风险:约束条件判断不足,导致用户可通过特殊手段获取利益。
2.2 操作对象分析
2.3 状态转换分析
常见的问题和风险:可通过特殊手段达到原本不能的状态,从而谋取利益
2.4 时序分析
3.针对输出结果
3.1 接口处理正确的结果可能只有一个,但是错误异常返回结果有很多情况很多值
常见问题和风险:错误前端处理不足导致前端异常、错误提示不当导致用户看到晦涩的错误码、错误提示不当导致用户不知道哪里出了问题,人如何解决。
4.接口超时
4.1 常见引起的问题:未进行超时处理,导致整个流程阻塞、超时后又收到接口返回,导致逻辑出现错乱。
5.已废弃接口测试
5.1 已废弃协议,是指之前有定义,但是因为需求变更或其他原因,目前版本不用。这些接口虽然不再使用,但有可能代码并没有及时删除。如果利用技术手段调用这些接口,可能获取额外利益。