接口测试用例设计_接口测试用例怎么设计,2024年最新大厂首发

参数类型为数组或链表时,用例可以考虑:

例如批量提交任务的接口submitTask(int[] taskID),参数用例设计考虑:

正常取值:1-5个权限,范围外:6个权限;

边界值:1-35的边界值,请求允许最大最小值;

特殊值:0个;

合法ID和不合法的;

重复的ID等。

可能存在的问题和风险:

0个item时程序异常退出;

重复的item处理时未去重导致结果异常等。

2.2针对逻辑设计

接口需要进行一些逻辑处理的,那么按逻辑设计用例可以从以下几个角度分析。

2.2.1约束条件分析

(1)数值限制:分数限制、金币限制、等级限制等等。

例如:兑换Q币活动要求积分>50才可参与。

(2)状态限制:登录状态等。

例如:同步用户信息需要先登录账号。

(3)关系限制:绑定的关系,好友关系等。

例如:帮家人防骗功能只能查询绑定家人的来电信息。

(4)权限限制:管理员等。

约束条件的测试在功能测试中经常遇到,在接口测试中更为重要。它的意义在于:用户进行操作时,在该操作的前端可以已经进行了约束条件的限制,故用户无法直接触发请求该接口。但是实际上,如果有其他手段:例如UI有bug或者通过技术手段直接调用接口,那么接口是否针对这些条件进行了限制就尤为重要。

例如常见的例子: 要兑换5Q币需要200积分,但是我积分不足,所以兑换按钮是灰色无法点击的状态:

正常用户是无法操作的,但是兑换其实是调后台的一个接口,如果绕过页面按钮的限制,直接调用后台接口兑换呢?是否可以兑换?预期当然是不能兑换的。因此积分这个数值限制就需要针对接口进行测试,并且非常重要。

其他约束条件类似:

时间约束:22:00之前;

数值约束:积分200;限量5个;

状态约束:登录手机管家;

等等约束条件类似。

常见的问题和风险:

约束条件判断不足,导致用户可通过特殊手段获取利益

2.2.2操作对象分析

操作通常是针对对象的,例如用户绑定电话号码,电话号码就是操作对象,而这个电话号码的话费、流量也是对象。

对象分析主要是针对合法和不合法对象进行操作。例如下述用例子:

用户A查询电话P1话费:

用户A查询电话P1流量;

用户A查询电话P2话费;

用户A查询电话P2流量。

后台的逻辑处理,如果一个电话已经被绑定过,从后台的角度是可以查询到该电话的话费和流量的。但是在用户侧,应该是A绑定了的电话,才能让A查询到该电话的话费。故类似对象的测试也必不可少。

常见的问题和风险:

用户可访问非权限内的其他用户信息、敏感信息,从而利用这些信息谋取利益。

2.2.3状态转换分析

被测逻辑可以抽象成状态机,各个状态之间根据功能逻辑从一个状态切换到另一个状态。如果我们打乱了这个次序,从一个状态切换到另一个不在它下一状态集中的状态,那么逻辑将会打乱,就会出现逻辑问题。

如上图所示,从某状态改变到新的状态,依赖于转换接口。而对于某转换接口,其输入状态是确定的,比如Fun23, 这个函数只能把状态2转换为状态3,而不能把状态1转换为状态3。那么测试点就可以是:

(1)状态为状态2,调用接口Fun23(),状态切换到状态23;

(2) 状态为1,3等,调用接口Fun23(),状态不能切换。

例如在做任务的时候,任务有三种状态:未领取,已领取未提交,已完成三种状态。

那么可以这样设计:

(1)正常的状态切换:未领取状态,领取任务后变为已领取状态;已领取满足任务条件提交后,变成已完成状态;完成后可以再次领取任务。

(2) 非正常的状态切换:未领取任务满足任务条件直接提交任务;已领取时再次领取任务等等。

常见的问题和风险:

可通过特殊手段达到原本不能的状态,从而谋取利益。

2.2.4时序分析

在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,这些动作形成一个动作流,只有按照这个顺序依次执行,才能得到预期结果。

在正常的流程里,这些动作是根据程序调用依次进行的,并不会打乱,在接口测试时,需要考虑如果不安装时序执行,是否会出现问题。

例如,客户端数据同步是由客户端触发进行的,期间的同步用户无法干预。功能测试的时候可见的就是是否能正常进行同步,而进一步分析,同步流程实际涉及了一组动作:

从时序图可以看出,后台有3个接口:登陆获取用户ID,上报本地数据,上报本地冲突。三个接口需要依次调用执行,才能完成同步。那么在接口测试就可以考虑打乱上述接口的执行顺序去执行,会有怎样的结果,是否会出现异常。例如:获取用户ID后不上报本地数据而直接上报本地冲突。

常见的问题和风险:

非顺序执行后,数据出现异常,可能还会出现程序其他异常

通过打乱顺序获取利益

2.3针对输出设计

针对输出设计其实是针对接口返回的结果进行分析。

2.3.1针对输出结果

接口处理正确的结果可能只有一个,但是错误异常返回结果有很多情况很多值。如果知道返回结果有很多种,就可以针对不同结果设计用例。例如提交积分任务的时候我们通常能想到的是返回正确和错误,错误可能想到:无效任务,无效登录态,但是不一定能否完全覆盖所有错误码,而接口返回定义的返回码可以设计更多用例:

覆盖返回码也是用例设计的一种思路。

常见问题和风险:

(1)错误前端处理不足,导致前端异常;

(2)错误提示处理不当,导致用户看到晦涩的错误码;

(3)错误提示不当,导致用户不知道哪里出了问题,如何解决。

2.3.2接口超时

接口正常情况下是有返回的,那么如果接口不返回呢?也就是说接口超时后的处理也是测试需要考虑的部分。如果超时处理不当,可能会引起以下问题:

(1)未进行超时处理,导致整个流程阻塞

(2)超时后又收到接口返回,导致逻辑出现错乱

2.4其他测试设计

2.4.1已废弃接口测试

已废弃协议,是指之前有定义,但是因为需求变更或其他原因,目前版本不用。这些接口虽然不再使用,但有可能代码并没有及时删除。如果利用技术手段调用这些接口,可能获取额外利益。

例如,任务之前有个清理任务,在一个版本需求里将清理任务替换为下载任务。在新版本客户端已不再调用完成清理任务的接口;但是如果该接口未关闭,用户就可以继续请求submitTask(int taskID)接口完成清理任务获得积分。

因此新版本在考虑兼容旧版本的同时,还应做好相关废弃接口的检查,避免用户获得额外利益。

2.4.2接口设计合理性分析

接口定义是否合理可以从以下几个方面分析:

(1)接口字段是否冗余;

(2)接口是否冗余;

(3)接口是否返回了调用方期望得到的信息;

(4)接口定义是否可满足所有调用需求;

5)接口定义调用是否方便。

2.5一个完整的例子

下面举一个完整例子,通过上述方法来分析如何对接口进行用例设计。

某模块提供了一个接口给其他模块,用户请求任务,接口定义如下:

2.5.1针对输入设计

dialogDetailText(dialogButtonText类似)

长度

1)正常:请安装提示进行操作;

2)边界:一个字:请;长度非常长:无悬浮窗权限,可能影响XX功能无法使用,请开始悬浮窗权限,以便获得更好的用户体验;甚至更长;

3)特殊:空字符串。

内容

1)特定类型:中文,英文,数字等;

2)特殊字符:/n/r/t ,.><?*$&^%~"??℡?€?等;

3)敏感字符:非用户设置,不涉及。

taskID(requestType类似)

等价类

取值范围内:1,5,10等;

取值范围外:0,99。

边界法

取值范围边界:0,1,38,39,40

数据类型边界:-2147483648 ,2147483648

特殊值 :0,-1等。

遍历法 :1,2,3,4,5…38,39对应每种不同ID。

2.5.2针对逻辑设计

(1)约束条件分析

去引导某功能需要:未完成过任务,任务有任务数据。

那么用例可以是:以下情况下调requestTask:

1)未使用过有任务数据时;

2)未使用无任务数据时;

3)使用过有任务数据时;

4)使用过无任务数据时。

如果有其他约束条件类似设计。

(2)操作对象分析

调用请求接口后,会显根据任务数据,引导对应的任务。任务数据,任务操作方式,任务功能都可以是对象。

1)任务数据

数据类型:本地,云端 等

数据有效性:正确数据,错误数据

2)操作方式

方式:安装,下载,打开等等 。

3)任务功能

功能:用户操作了该功能,未正常操作该功能;什么都不操作;完成一个任务功能;完成多个任务功能;任务功能使用顺序等等。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

]
[外链图片转存中…(img-0eYVn1KC-1713034200132)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-OnFFQnah-1713034200133)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值