1、针对输入设计
1)数值型
2)字符串型
3)数组或链表类型
2、针对业务逻辑
1)约束条件分析
约束条件的测试在功能测试中经常遇到,在接口测试中更为重要。
它的意义在于:用户进行操作时,在该操作的前端可以已经进行了约束条件的限制,故用户无法直接触发请求该接口。
但是实际上,如果有其他手段:例如 UI 有 bug 或者通过技术手段直接调用接口,那么接口是否针对这些条件进行了限制就尤为重要。
常见的例子:要兑换 5Q 币需要 200 积分,但是我积分不足,所以兑换按钮是灰色无法点击的状态。
正常用户是无法操作的,但是兑换其实是调后台的一个接口,如果绕过页面按钮的限制,直接调用后台接口兑换呢?是否可以兑换?
预期当然是不能兑换的。
因此积分这个数值限制就需要针对接口进行测试,并且非常重要。
数值限制:分数限制、金币限制、等级限制等等。(例如:兑换 Q 币活动要求积分 > 50 才可参与。)
状态限制:登录状态等。(例如:同步用户信息需要先登录账号。 )
关系限制:绑定的关系,好友关系等。(例如:帮家人防骗功能只能查询绑定家人的来电信息。 )
权限限制:管理员等。
其他约束条件类似(根据业务丰富设计):
时间约束:22:00 之前等。
常见的问题和风险:约束条件判断不足,导致用户可通过特殊手段获取利益。
2)操作对象分析
操作通常是针对对象的,例如用户绑定电话号码,电话号码就是操作对象,而这个电话号码的话费、流量也是对象。
对象分析主要是针对合法和不合法对象进行操作。
例如下述用例子:
用户 A 查询电话 P1 话费:
用户 A 查询电话 P1 流量;
用户 A 查询电话 P2 话费;
用户 A 查询电话 P2 流量。
后台的逻辑处理,如果一个电话已经被绑定过,从后台的角度是可以查询到该电话的话费和流量的。但是在用户侧,应该是 A 绑定了的电话,才能让 A 查询到该电话的话费。故类似对象的测试也必不可少。
常见的问题和风险:
用户可访问非权限内的其他用户信息、敏感信息,从而利用这些信息谋取利益。
3)状态转换分析
被测逻辑可以抽象成状态机,各个状态之间根据功能逻辑从一个状态切换到另一个状态。如果我们打乱了这个次序,从一个状态切换到另一个不在它下一状态集中的状态,那么逻辑将会打乱,就会出现逻辑问题。
例如在做任务的时候,任务有三种状态:未领取,已领取未提交,已完成三种状态。
那么可以这样设计:
正常的状态切换:未领取状态,领取任务后变为已领取状态;已领取满足任务条件提交后,变成已完成状态;完成后可以再次领取任务。
非正常的状态切换:未领取任务满足任务条件直接提交任务;已领取时再次领取任务等等。
常见的问题和风险:
可通过特殊手段达到原本不能的状态,从而谋取利益。
4)时序分析
在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,这些动作形成一个动作流,只有按照这个顺序依次执行,才能得到预期结果。
在正常的流程里,这些动作是根据程序调用依次进行的,并不会打乱,在接口测试时,需要考虑如果不按照时序执行,是否会出现问题。
例如,客户端数据同步是由客户端触发进行的,期间的同步用户无法干预。
功能测试的时候可见的就是是否能正常进行同步,而进一步分析,同步流程实际涉及了一组动作:
假设后台有 3 个接口:登陆获取用户 ID,上报本地数据,上报本地冲突。三个接口需要依次调用执行,才能完成同步。
那么在接口测试就可以考虑打乱上述接口的执行顺序去执行,会有怎样的结果,是否会出现异常。例如:获取用户 ID 后不上报本地数据而直接上报本地冲突。
常见的问题和风险:
非顺序执行后,数据出现异常,可能还会出现程序其他异常。
通过打乱顺序获取利益。
3、针对输出设计
针对输出设计其实是针对接口返回的结果进行分析。
1)针对输出结果
2)接口超时
4、其他测试设计
1)已废弃接口测试
2)接口设计合理性分析
接口定义是否合理可以从以下几个方面分析:
5、一个完整的例子
下面举一个完整例子,通过上述方法来分析如何对接口进行用例设计。
某模块提供了一个接口给其他模块,用户请求任务。
1)针对输入设计
针对长度:
针对内容:
等价类:
边界法:
遍历法:
2)针对逻辑设计
约束条件分析:
操作对象分析:
调用请求接口后,会显根据任务数据,引导对应的任务。任务数据,任务操作方式,任务功能都可以是对象。
任务数据:
操作方式:
任务功能:
状态转换分析:(假设,功能是有 4 个状态的:完成,未完成,未知。)
针对该状态:
时序分析:
从时序的角度分析,调用请求接口前需要以下 2 步动作:
正常时序:按照正常时序请求 1 -> 2 -> 3;
缺失的时序:
3)针对输出分析
当测试时间紧任务重的情况下,用例设计需要具体情况具体分析。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
无论身处何种困境,都要坚信自己有能力克服一切困难。要勇敢地追求自己的梦想,坚持不懈地努力下去,最终就能够取得非凡的成功。
每个成功的背后都离不开艰苦的努力和坚持。要相信自己有能力实现自己的梦想,不管前方有多少艰难险阻,都不能阻挡你的步伐,直至抵达目的地。
成功的路上充满了挑战和坎坷,但是只要我们有足够的勇气和毅力,敢于迎难而上,不断追求卓越,最终就能实现自己的梦想。