软件测试入门—用例设计中的场景图和状态迁移图

在软件测试领域,用例设计是一项至关重要的工作,它直接关系到软件质量的高低。而场景图和状态迁移图作为用例设计中的两种有效工具,能够帮助测试人员更全面、系统地设计测试用例。下面我们就来深入了解一下这两种图。
在这里插入图片描述

一、场景图

场景图主要用于描述软件系统在不同场景下的操作流程。它以用户的视角出发,模拟用户在使用软件过程中可能遇到的各种情况。通过场景图,我们可以清晰地看到软件系统的主要功能流程以及不同功能之间的交互关系。

场景图的绘制通常包含以下几个要素:

  1. 参与者:与软件系统进行交互的外部实体,比如用户、其他系统等。
  2. 场景步骤:按照时间顺序描述参与者在每个场景中所执行的操作。
  3. 分支和条件:考虑到不同的输入或条件可能导致不同的操作流程,场景图中会包含各种分支和条件判断。

案例:在线购物系统的场景图

以一个简单的在线购物系统为例,我们来绘制其场景图。

  1. 参与者:顾客、商家、系统管理员。
  2. 主要场景步骤
    • 顾客浏览商品:顾客登录系统,在商品列表中浏览感兴趣的商品。
    • 选择商品并加入购物车:顾客选择心仪的商品,点击“加入购物车”按钮,商品被添加到购物车中。
    • 结算购物车:顾客点击“结算”按钮,系统计算商品总价,显示配送地址和支付方式选择界面。
    • 选择配送地址和支付方式:顾客选择已有的配送地址,或者添加新的配送地址,并选择合适的支付方式(如支付宝、微信支付等)。
    • 确认订单并支付:顾客确认订单信息无误后,点击“确认支付”按钮,系统向支付平台发送支付请求,支付成功后,订单状态变为“已支付”。
    • 商家发货:商家收到订单后,进行商品发货操作,订单状态变为“已发货”。
    • 顾客收货:顾客收到商品后,在系统中确认收货,订单状态变为“已完成”。
  3. 分支和条件
    • 如果购物车为空,结算时提示“购物车中没有商品,请添加商品后再结算”。
    • 如果支付失败,订单状态保持“未支付”,并提示顾客支付失败的原因,可重新选择支付方式进行支付。
    • 如果顾客在一定时间内未确认收货,系统自动将订单状态设置为“已完成”。

通过这个场景图,测试人员可以根据不同的场景步骤和分支条件,设计出全面的测试用例,覆盖各种可能的操作流程。

二、状态迁移图

状态迁移图用于描述软件系统中对象的状态变化以及导致这些状态变化的事件。它可以帮助我们理解系统在不同状态下的行为,找出潜在的状态转换问题。

状态迁移图的构成要素包括:

  1. 状态:软件系统中对象可能处于的不同状态,比如“未登录”“已登录”“已支付”“未支付”等。
  2. 事件:导致对象状态发生变化的操作或外部刺激,例如“登录”“支付”“注销”等。
  3. 状态转换:从一个状态到另一个状态的变化过程。

案例:用户登录系统的状态迁移图

我们以一个常见的用户登录系统为例来绘制状态迁移图。

  1. 状态
    • 未登录:用户尚未进行登录操作时的初始状态。
    • 登录中:用户输入用户名和密码,点击“登录”按钮后,系统正在进行身份验证的状态。
    • 已登录:用户身份验证成功后,进入系统的状态。
    • 登录失败:用户输入的用户名或密码错误,系统提示登录失败的状态。
  2. 事件
    • 点击“登录”按钮:用户在未登录状态下点击“登录”按钮,触发登录操作。
    • 身份验证成功:系统验证用户输入的用户名和密码正确,触发状态转换到“已登录”。
    • 身份验证失败:系统验证用户输入的用户名和密码错误,触发状态转换到“登录失败”。
    • 点击“注销”按钮:用户在已登录状态下点击“注销”按钮,触发状态转换到“未登录”。
  3. 状态转换
    • 未登录 -> 登录中:当用户点击“登录”按钮时,状态从“未登录”转换为“登录中”。
    • 登录中 -> 已登录:若身份验证成功,状态从“登录中”转换为“已登录”。
    • 登录中 -> 登录失败:若身份验证失败,状态从“登录中”转换为“登录失败”。
    • 已登录 -> 未登录:当用户点击“注销”按钮时,状态从“已登录”转换为“未登录”。

基于这个状态迁移图,测试人员可以针对不同的状态和状态转换设计测试用例,检查系统在各种状态下的响应是否正确,以及状态转换是否符合预期。

三、总结

场景图和状态迁移图在软件测试用例设计中各有优势。场景图侧重于描述系统的整体操作流程,帮助我们从用户使用的角度出发,设计出全面覆盖各种功能和交互的测试用例;而状态迁移图则聚焦于系统中对象的状态变化,有助于发现状态转换过程中可能出现的问题。在实际的软件测试工作中,我们可以结合使用这两种图,以更高效地设计出高质量的测试用例,确保软件系统的稳定性和可靠性。

希望通过以上介绍,大家对软件测试用例设计中的场景图和状态迁移图有了更清晰的认识,能够在今后的工作中熟练运用它们来提升软件测试的效果。

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

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

相关文章

数据表中的数据查询

文章目录 一、概述二、简单查询1.列出表中所有字段2.“*”符号表示所有字段3.查询指定字段数据4.DISTINCT查询 三、IN查询四、BETWEEN ADN查询1.符合范围的数据记录查询2.不符合范围的数据记录查询 五、LIKE模糊查询六、对查询结果排序七、简单分组查询1.统计数量2.统计计算平均…

前端Vue2项目使用md编辑器

项目中有一个需求,要在前端给用户展示内容,内容有 AI 生成的,返回来的是 md 格式,所以需要给用户展示 md 格式,并且管理端也可以编辑这个 md 格式的文档。 使用组件库 v-md-editor。 https://code-farmer-i.github.i…

Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法

最近,Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…

光谱相机在智能冰箱的应用原理与优势

食品新鲜度检测 详细可点击查看汇能感知团队实验报告:高光谱成像技术检测食物新鲜度 检测原理:不同新鲜程度的食品,其化学成分和结构会有所不同,在光谱下的反射、吸收等特性也存在差异。例如新鲜肉类和蔬菜中的水分、蛋白质、叶…

手写SOCKET进行HTTP通信

网络基础 我们电脑主板上都内置了多种网卡,一般主要有以下几类: 虚拟网卡(loopback) 注意,它是虚拟的,并不是物理网卡,也被称为是本地环回地址(或接口),一般将127.0.0.1作为本地环回…

MFC程序设计(二)基于对话框编程

从现在开始,我们将以基于对话框的MFC应用程序来讲解MFC应用 向导生成基于对话框MFC应用程序 对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。在Visual C中,对话框既可以单独组成一个简单的应用程序&#xff0…

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

目录 设计思路 1.为什么不直接用FlinkCDC要重写Flink Gauss CDC 2.存量同步的逻辑是什么 2.1、单主键的切片策略是什么 2.2、​​​​​复合主键作切片,怎么保证扫描到所有的数据 3、增量同步的逻辑是什么 4、存量同步结束之后如何无缝衔接增量同步 5、下游…

idea新增java快捷键代码片段

最近在写一些算法题&#xff0c;有很多的List<List这种编写&#xff0c;想着能否自定义一下快捷键 直接在写代码输入&#xff1a;lli&#xff0c;即可看见提示

深度学习-91-大语言模型LLM之基于langchain的模型IO的提示模板

文章目录 1 Model的输入输出2 提示模板2.1 提示模板的特点2.2 提示模板的类型3 使用提示模板3.1 设置环境变量3.2 PromptTemplate提示模板3.2.1 通过from_template方法3.2.2 直接生成提示模板3.2.3 使用提示模板3.2.4 复用提示模板3.3 ChatPromptTemplate聊天提示模板3.3.1 通过…

stm8s单片机(二)外部中断实验

中断优先级 stm8的中断优先级不是固定不变的&#xff0c;stm8的中断分为硬件优先级与软件优先级&#xff1b;当多个中断发生时&#xff0c;cpu会先响应软件优先级高的中断&#xff0c;若软件优先级相同会先响应硬件优先级高的&#xff1b; 其中软件优先级有四个 /*** brief …

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频&#xff1f;LLMComfyUI混元视频 实现流程图&#xff08;重点&#xff09;1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…

helm推送到harbor私有库--http: server gave HTTP response to HTTPS client

harbor私有库访问的是http模式 harbor 2.8版本以上可以存储helm镜像 docker镜像推送的时候需要docker端配置insecure-registries 发现helm推送只能在harbor部署的本机使用localhost才能推送成功&#xff0c;即 helm push xxx.tgz oci://localhost:80/library 使用helm pus…

transformers使用过程问题

transfomers新旧版本冲突&#xff0c;和accelerate、datasets、evaluate这些库直接也经常会发生冲突 我使用了下面的版本&#xff0c;暂时没有冲突&#xff0c;如果有冲突再更新 transformers4.41.2 datasets2.20.0 accelerate0.31.0 evaluate0.4.2pip install transformers安…

svn tag

一般发布版本前&#xff0c;需要在svn上打个tag。步骤如下&#xff1a; 1、空白处右击&#xff0c;选择TortoiseSVN->Branch/tag; 2、填写To path&#xff0c;即tag的路基以及tag命名&#xff08;一般用版本号来命名&#xff09;&#xff1b;填写tag信息&#xff1b;勾选cr…

【JavaSE】(8) String 类

一、String 类常用方法 1、构造方法 常用的这4种构造方法&#xff1a;直接法&#xff0c;或者传参字符串字面量、字符数组、字节数组。 在 JDK1.8 中&#xff0c;String 类的字符串实际存储在 char 数组中&#xff1a; String 类也重写了 toString 方法&#xff0c;所以可以直…

【理解工具调用的流程,本质体现了大模型智能性】

1、工具调用 调用完结果看里面tool_calls 是否为空&#xff0c;不为空就调用工具函数处理&#xff0c; 如果为空就中断循环。大模型返回的message结果智能判断是否继续调用 输入输出如下&#xff1a; 请输入&#xff1a;深圳西安天气 ------------------------------------…

excel实用工具

持续更新… 文章目录 1. 快捷键1.1 求和 2. 命令2.1 查找 vloopup 1. 快捷键 1.1 求和 windows: alt mac : command shift T 2. 命令 2.1 查找 vloopup vlookup 四个入参数 要查找的内容 &#xff08;A2 6xx1&#xff09;查找的备选集 &#xff08;C2:C19&#xff09;…

【C++】模板(进阶)

本篇我们来介绍更多关于C模板的知识。模板初阶移步至&#xff1a;【C】模板&#xff08;初阶&#xff09; 1.非类型模板参数 1.1 非类型模板参数介绍 模板参数可以是类型形参&#xff0c;也可以是非类型形参。类型形参就是我们目前接触到的一些模板参数。 //类型模板参数 …

一文学会YOLO系列算法(从V3到11)实现遥感图像目标检测

目录 前言 数据集介绍 数据集转换 YOLO代码的下载 YOLO的配置 1.数据集的配置 2.模型的配置 YOLO11模型的训练 其它版本YOLO的训练 前言 遥感技术的快速发展&#xff0c;特别是在高分辨率遥感图像的获取能力上的显著提升&#xff0c;已经大大拓宽了遥感数据在环境监测…

图解Git——分布式Git《Pro Git》

分布式工作流程 Centralized Workflow&#xff08;集中式工作流&#xff09; 所有开发者都与同一个中央仓库同步代码&#xff0c;每个人通过拉取、提交来合作。如果两个开发者同时修改了相同的文件&#xff0c;后一个开发者必须在推送之前合并其他人的更改。 Integration-Mana…