接口测试用例设计

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

1.接口测试用例设计简介

我们对系统的需求分析完成之后,即可设计对应的接口测试用例,然后用接口测试用例进行接口测试。接口测试用例的设计也需要用到黑盒测试方法,其与功能测试用例设计的方法类似,接口测试用例设计中还需要增加与接口特性相关的测试用例。

2.接口测试思路

正式设计接口测试用例之前,需要梳理一下接口测试的思路,思维导图如图6-32所示。

接下来,介绍几个思维导图中需要关注的点。

(1)基本功能流程测试

基本功能流程测试首先需要执行冒烟测试,把系统最基本的功能"走通"。冒烟测试决定系统的"提测"是否成功,如果系统通过冒烟测试,才会进入到详细的测试阶段;如果冒烟测试不通过,需要把系统程序退回给开发人员,开发人员修改程序之后重新"提测"。冒烟测试通过之后,对系统进行正常流程的覆盖测试,测试的粒度会比冒烟测试更细一些,覆盖系统的一些业务逻辑分支。

(2)基于输入域的测试

因为发出接口请求需要带请求参数,所以测试人员会涉及关于请求参数的各种接口测试用例设计。关于请求参数的接口测试用例的设计需要考虑下面这些方面。

  • 边界值测试

对于有范围要求的参数,需要综合等价类和边界值的方法设计接口测试用例。边界值选择上点和离点即可,要覆盖到有效等价类和无效等价类。

  • 特殊字符校验

很多请求参数会要求不能包含特殊字符,对于有这类要求的参数字段,需要单独设计包含特殊字符的接口测试用例。

  • 参数类型校验

有一些参数还会对传参值的类型有要求,例如,只能包含英文、数字,或者只能包含整数类型等。对于这种类型有要求的参数字段,也要单独设计接口测试用例,或设计一些反向接口测试用例。

  • 必选参数校验

在接口中有必填的参数,也有选填的参数,对于每一个必填参数,都要设计一个参数为空的接口测试用例来验证参数的必填性。

  • 组合参数校验

对于有选填参数的接口来说,需要对各种参数的不同组合场景进行验证。例如,值传递选填参数,或者对于必填参数和不同数量的选填参数做组合,对于这些选项参数的情况可以使用判定表的方法进行接口测试用例的设计。

  • 排重逻辑

在接口测试中,如果接口中有的参数字段要求不能重复,那么需要对它进行排重测试,用重复请求相同的参数进行测试,验证服务端的处理逻辑是不是正确。

  • 接口幂等性

幂等是指任意多次执行接口测试所产生的影响均与一次执行接口测试产生的影响相同。保证接口的幂等性是非常重要的,尤其是涉及资金的系统,如银行、电商等,在这些系统中,对用户重复提交请求,或者网络重发,系统重试等场景,都需要设计接口测试用例来验证接口的幂等性。

(3)线性安全测试

线程安全测试包含了并发测试和分布式测试。

分布式是为了解决单个物理服务器容量和性能瓶颈问题而采用的一种优化手段。分布式的实现有两种形式。

  • 水平扩展:当一台服务器 "扛" 不住大的网络流量时,就通过添加服务器的方式,将流量平分到所有服务器上,所有机器都可以提供用户的请求服务。
  • 垂直拆分:前端用户有多重查询需求时,一台服务器 "扛" 不住用户大的请求,解决这个问题的方式是,可以将不同的需求分发到不同的服务器上。

相对于分布式测试,并发测试在解决的问题上会集中一些,它的测试重点是测试系统同时有多少用户量,比如在线直播服务时有上万人观看。

并发测试可以通过分布式技术来实现,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化并发的手段,比如使用缓存系统,还可以使用多线程技术将一台服务器的服务能力最大化。

并发场景的测试中,测试的是同一个接口,参数值全部一样。同时发送请求多次,结果只有一条请求成功,其他请求失败。

分布式场景的测试中,测试的是不同机器,针对的是同一个接口,参数值全部一样。同时发送请求多次,结果只有一条请求成功,其他请求失败。

(4)故障注入法

故障注入测试需要测试人员故意针对系统制造有故障的场景,用以测试系统的健壮性。

如果产品中用到了Redis,就需要对Redis做一些故障降级测试。Resis一般会放在数据库前面,用来做高速缓存。

我们进行Redis故障注入测试时需要开发人员配合先清空Redis数据,然后向系统发送请求,"击穿" Redis,从DB(数据库)中获取正常的数据(并能回写到Redis中)。然后开发人员配合启动制造Redis数据恢复功能,测试人员可以从Redis中获取正确的数据。其中还需要开发人员配合制造Redis崩溃场景,在Redis崩溃场景下测试人员向系统发送请求,看是否能从DB中获取到正常的数据。

除了对Redis测试之外,我们还需要进行系统服务故障转移测试,如数据库故障测试与接口故障测试。

在进行数据库故障时,开发人员配合制造数据库数据丢失场景,启动数据恢复策略,测试人员测试系统在规定时间内数据是否可以恢复;开发人员配合制造数据库崩溃场景,测试人员测试数据库多活策略是否启动,保证系统功能不收影响。

在进行接口故障测试时,开发人员配合接口服务重启,测试人员测试集群负载是否自动重启实例、所有请求无异常;开发人员配合制造集群崩溃场景,测试人员测试系统是否返回对应的错误信息,系统内部服务是否有重试机制。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关推荐
BK贝壳3 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
2601_966949654 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
在世修行9 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_962885729 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI9 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
信誓旦旦的程序猿10 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
严谨的麻辣烫10 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障
救救孩子把11 小时前
AI面试八股文-23_23-Agent可观测性与生产监控面试题
人工智能·面试·职场和发展·agent·langsmith·langfuase
KeepRobots12 小时前
11-01 温哥华不回拨:用 60 行 Python 查你的工单系统会不会差一小时(KeepRobots 工程笔记)
python
xiao77mwq12 小时前
你以为 OCR 慢?实测 81.3 s 里全是故障代价:如何把「定格态」消掉,让耗时从 6.5 s 到 13 倍差距显出原形
python