首页 > 技术文章 > 接口测试用例常见设计方法

lemitang 2021-11-23 15:58 原文

接口测试用例常见设计方法
一, 接口常遇见的bug和问题
(1) 传入不合规参数,导致程序crash
(2) 数据类型溢出,导致数据读出和写入不一致
(3) 因对象权限未进行校验,可以访问其他用户敏感信息
(4) 状态处理不当,导致逻辑出现错乱
(5) 逻辑校验不完善,可以利用漏洞获取非法利益

二, 测试用例设计
输入- 接口处理逻辑 – 输出-
一个接口通常有输入,输出,有时候输出也是没有的,
用例设计考虑,输入, 输出
(1) 针对输入,可以按照参数类型设计
(2) 针对处理,可以按照逻辑进行用例设计
(3) 针对输出,可根据结果进行分析设计

详情:
1.针对输入设计
数值型:
1.等价类:取值范围内,取值范围外
2.边界法:取值范围边界:边界最大,最小;边界最小-1,最大+1等
3.特殊值:0,负值等
4.遍历法:取值范围的所有数值遍历

举例:一个输入值的范围是int 1-12,需要考虑范围内的值;边界值0,1,12,13;类型的特殊值-1,0;还有int的最小,最大边界值也需要考虑; 如果1-12有指定含义代表,还需要遍历所有数值
风险:特殊值,边界值处理不当,程序退出,数据溢出,返回错误信息等
Int: 数据类型边界:-2147483648 ,2147483648。 (Integer.MAX_VALUE)

字符串型:
1.字符串长度:
等价法:取值范围内,取值范围外
边界法:规定范围边界,类型边界
特殊值:0,即空字符
字符串内容:
特定类型:英文,中文,大小写等
特殊字符:>,<*!@#$%等
敏感字符:“flg”“TMD""等
举例:接口的功能字符串长度为3位,测试长度:3位,比3多,比3少;
String的最大长度;特殊的空字符;字符串内容是数字,非数字等;特殊字符;是否需要过滤敏感字符;
风险:传入其他类型,超长字符,敏感字等,程序是否异常退出,是否显示,存储有问题,时候特殊处理敏感字

数组或链表类型:
1.成员个数:
等价法:取值范围内,取值范围外
边界法:规定范围边界,个数边界值
特殊值:0等
2.成员内容:
等价类:合法和非法成员
重复法:重复的成员
举例:接口接受的数组取值长度一般是5个,取值1-5个内,范围外6个
边界值,请求允许的最大,最小值;特殊值,0个;内容的合法,不合法;重复的内容是否可以
风险:0个是是否异常退出,重复的内容是否允许
2.针对逻辑设计
1.约束条件分析:
数值限制:分数限制,金币限制,等级限制等(满足条件才可以执行)
状态限制:需要先登录等(同步信息等)
关系限制:绑定的关系,好友关系等
权限限制:管理员等
风险:约束条件判断不足,用户可以特殊手段获利等
操作对象分析:
操作通常是针对对象的,针对合法和不合法对象进行操作,后台处理会如何
风险:用户可以非权限的操作
状态转换分析:
被测逻辑抽象成状态机,各个状态之间根据各功能逻辑切换,如果打乱这个顺序,跳转操作,就会有逻辑问题,验证正确性
风险:通过特殊手段达到原本不能的状态,从而获利等
时序分析:
在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,只有按照顺序依次执行完成,才能得到预期结果。正常的流程里,动作依次按序执行,不会打乱,但在接口测试时,需要考虑如果不按时序执行,是否会有问题。
例如:客户端数据同步是由客户端触发执行的,期间用户无法干预。功能测试的时候见到的就是,是否能正常同步,进一步拆解,同步流程就是一些列动作,例如:获取用户信息,发起请求,后台返回登录信息,本地在上传本地数据,后台校验数据,生成diff和对应新增号,返回增量数据及编号,本地在上报冲突,后台处理冲突,返回客户端同步完成的信息。
接口需要依次调用才可以同步完成,但是接口测试的时候就可以测试打乱这个顺序的执行情况,是否异常等。
风险:非顺序执行后,数据出现异常,可能还有其他程序问题

3.针对输出设计:
针对输出结果:正确结果可能只有一个,但是错误的情况很多。可以根据返回结果列表或者类型,进行用例设计。
风险:
(1)错误前端处理不足,导致前端异常;
(2)错误提示处理不当,用户看到晦涩的程序码;
(3)错误提示不当,用户不知道哪出现问题,如何解决
接口超时:
接口正常情况下是有返回的,如果接受不到返回呢?接口超时处理也是需要考虑的部分,如果处理不当,造成整个流程阻塞,超时后又接收到返回值,导致逻辑错乱。

4.其他测试合计:
1.已废弃接口测试:
废弃的接口,存在没有及时删除的情况,需要做好相关废弃接口的检查,以免出现问题。
接口设计合理性分析:
以下几个方面分析:
(1)接口字段是否冗余
(2)接口是否冗余
(3)接口是否返回了调用方期望得到的信息
(4)接口定义是否可满足所有的调用需求
(5)接口定义调用是否方便
5.安全性测试:
针对非专业的安全测试人员,更多的关注业务方面的安全,可以进行如下考虑:
(1)接口是否使用了https协议
(2)接口的请求数据是否加密处理
(3)保存到库的关键信息是否做过加密处理
(4)是否对一些常用的工具请求做了限制
(5)接口是否对同一IP的访问次数做了限制
三、测试项目
重复提交,并发测试,分布式测试(负载均衡测试),环境异常测试,大数据量测试
性能测试关注点:
响应时间,吞吐量,并发数,服务器性能:(CPU,内容,IO,网络)

推荐阅读