软件测试之接口测试用例设计

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

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

2.接口测试思路

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

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

(1)基本功能流程测试

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

 (2)基于输入域的测试

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

  • 边界值测试

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

  • 特殊字符校验

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

  • 参数类型校验

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

  • 必选参数校验

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

  • 组合参数校验

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

  • 排重逻辑

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

  • 接口幂等性

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

(3)线性安全测试

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

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

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

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

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

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

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

(4)故障注入法

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

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

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

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

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

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

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看。

【2025最新版】字节大牛讲的最全最细的自动化测试全套教程!永久白嫖,拿走不谢,全程干货无废话!逼自己15天内学完,从软件测试基础到项目实战一套全通关!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(2)VTK C++开发示例 --- 绘制多面锥体

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 VTK C开发示例程序; 使用C 和VTK绘制一个多面锥体。 环境说明系统ubuntu22.04、windows11cmake3.22、3.2…

公司内部自建知识共享的方式分类、详细步骤及表格总结,分为开源(对外公开)和闭源(仅限内部),以及公共(全员可访问)和内部(特定团队/项目组)四个维度

以下是公司内部自建知识共享的方式分类、详细步骤及表格总结,分为开源(对外公开)和闭源(仅限内部),以及公共(全员可访问)和内部(特定团队/项目组)四个维度&am…

DeepSeek使用001:Word中配置DeepSeek AI的V3和R1模型

文章目录 Word中配置DeepSeek大模型1、勾选开发工具2、信任中心设置3、添加DeepSeek-V3模型4、获取API KEY5、添加DeepSeek-R1模型6、新建组7、测试使用 Word中配置DeepSeek大模型 1、勾选开发工具 打开【选项】 选择【自定义功能区】 2、信任中心设置 打开【信任中心】&…

Spark-SQL核心编程语言

利用IDEA开发spark-SQL 创建spark-SQL测试代码 自定义函数UDF 自定义聚合函数UDAF 强类型的 Dataset 和弱类型的 DataFrame 都提供了相关的聚合函数, 如 count(), countDistinct(),avg(),max(),min()。除此之外&…

从图像“看出动作”

📘 第一部分:运动估计(Motion Estimation) 🧠 什么是运动估计? 简单说: 👉 给你一段视频,计算机要“看懂”里面什么东西动了、往哪动了、有多快。 比如: 一…

Spring Boot 使用 SMB 协议

2025/4/14 向全栈工程师迈进! 一、详述SMB协议 SMB(Server Message Block)协议是一个网络文件共享协议,它使得计算机可以在网络中共享文件、打印机以及其他资源。SMB 主要用于 Windows 操作系统,但也有其他平台&#…

Spring编程式事务(本地事务)

使用 TransactionTemplate等类和 API 手动管理事务,控制事务的新建、提交、回滚等过程 方式一:使用 TransactionTemplate(推荐方式) Service public class OrderService {private final TransactionTemplate transactionTemplat…

itext7 html2pdf 将html文本转为pdf

1、将html转为pdf需求分析 经常会看到爬虫有这样的需求,将某一个网站上的数据,获取到了以后,进行分析,然后将需要的数据进行存储,也有将html转为pdf进行存储,作为原始存档,当然这里看具体的需求…

企业级低代码平台的架构范式转型研究

在快速迭代的数字时代,低代码平台如同一股清流,悄然成为开发者们的新宠。 它利用直观易用的拖拽式界面和丰富的预制组件,将应用程序的开发过程简化到了前所未有的程度。通过封装复杂的编程逻辑和提供强大的集成能力,低代码平台让…

C++ | STL之list详解:双向链表的灵活操作与高效实践

引言 std::list 是C STL中基于双向链表实现的顺序容器,擅长高效插入和删除操作,尤其适用于频繁修改中间元素的场景。与std::vector不同,std::list的内存非连续,但提供了稳定的迭代器和灵活的元素管理。本文将全面解析std::list的…

AI运算服务器工控机特点与应用

AI运算服务器工控机是专门针对工业环境设计的计算设备,结合了传统工控机(工业控制计算机)的可靠性与AI服务器的强大算力,广泛应用于智能制造、边缘计算、机器视觉、自动化控制等领域。以下是其核心特点、应用场景及选型建议&#…

25/4/9 算法笔记 DBGAN+强化学习+迁移学习实现青光眼图像去模糊1

整体实验介绍 实验主要是结合DBGAN对抗网络强化学习增强迁移学习增强实现青光眼图像去模糊。今天则是先完成了DBGAN板块模型的训练。 实验背景介绍 青光眼的主要特征有: 视盘形态与杯盘比CDR:青光眼患者主要表现为视杯扩大,盘沿变窄。 视…

智能复盘自动化系统搭建指南—基于DeepSeek API与Apple日历的整合实践

一、系统架构设计 本方案通过iOS快捷指令实现日历数据与AI分析的自动化交互,核心流程包含: 日历事件管理 创建每日循环的"AI复盘"日历事项实现当日备注信息的动态更新 数据处理模块时间日志标准化处理多维度数据特征提取 AI交互层对接DeepSeek…

01 位运算

12days 章节结构 00 算法前导课-编程基础(自学的视频) 01 位运算的奇巧淫技 02 查找与排序(上) 03 数组、查找与排序(下) 04 多维数组与矩阵 05 字符串专题 06 基本数学问题 06 递归、DFS、剪枝、回溯等问题 07 贪心策…

HDFS Full Block Report超限导致性能下降的原因分析

文章目录 前言发现问题失败的为什么是FBR块汇报频率的变化为什么FBR会反复失败HDFS性能下降导致Yarn负载变高的形式化分析理解线程理解IO Wait理解HDFS性能下降导致Yarn负载和使用率增高 引用 前言 我们的Yarn Cluster主要用来运行一批由Airflow定时调度的Spark Job&#xff0…

【Kubernetes基础--Pod深入理解】--查阅笔记2

深入理解Pod 为什么要有个Pod1. 容器协作与资源共享2. 简化调度和资源管理3. 设计模式支持 Pod 基本用法Pod 容器共享 VolumePod 的配置管理ConfigMap 概述创建 ConfigMap 资源对象在 Pod 中使用 ConfigMap使用 ConfigMap 的限制条件 为什么要有个Pod Pod 的引入并非技术冗余&…

Margin和Padding在WPF和CSS中的不同

CSS和WPF中 margin 与 padding 在方向上的规定基本一致,但在使用场景和一些细节上有所不同。 CSS - 方向规定: margin 和 padding 属性可以分别指定上、右、下、左四个方向的值。例如 margin:10px 20px 30px 40px; 表示上外边距为10px、右外边距为20…

gravity`(控制 View 内部内容的对齐方式)

文章目录 **1. 常用取值****示例** **2. layout_gravity(控制 View 在父容器中的对齐方式)****常用取值****示例** **3. gravity vs layout_gravity 对比****4. 注意事项****5. 总结** 作用对象:当前 View 的内部内容(如 TextView…

Go:使用共享变量实现并发

竞态 在串行程序中,步骤执行顺序由程序逻辑决定;而在有多个 goroutine 的并发程序中,不同 goroutine 的事件先后顺序不确定,若无法确定两个事件先后,它们就是并发的。若一个函数在并发调用时能正确工作,称…

Vue3 SSR Serverless架构革命:弹性计算与量子加速

一、全维度Serverless SSR架构 1.1 蜂巢式弹性调度系统 1.2 冷启动时间优化表 优化策略Node.js冷启(ms)Deno冷启(ms)Bun冷启(ms)裸启动1800960420预编译二进制650380210内存快照预热22016090WASM实例池15011075量子状态预载453832 二、边缘渲染协议升级 2.1 流式SSR响应协议…