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

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

一、场景图

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

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

  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.统计计算平均…

第11章:Python TDD实现货币类加法运算初步

写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…

前端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…

【计算机视觉】人脸识别

一、简介 人脸识别是将图像或者视频帧中的人脸与数据库中的人脸进行对比,判断输入人脸是否与数据库中的某一张人脸匹配,即判断输入人脸是谁或者判断输入人脸是否是数据库中的某个人。 人脸识别属于1:N的比对,输入人脸身份是1&…

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

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

Dangerzone:免费的危险的文件转换安全程序

我们知道很多杀毒软件会将很多文件视作恶意程序,尤其是带宏病毒的DOC文件,直接删除难免会带来不必要的麻烦,那么推荐一款免费的危险的文件转换安全程序:Dangerzone 。它可以检查各种可能有危险的文件并将其转换为安全版本&#xf…

销售线索管理的价值以及主要方法

销售线索管理的价值体现在:提高销售效率、优化客户体验、提升转化率、支持数据驱动决策。其中,提高销售效率尤为关键。通过系统化的线索管理,销售团队能够更快地识别和跟进潜在客户,从而缩短销售周期。自动化的线索评分和分配减少…

手写SOCKET进行HTTP通信

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

在 C++ 中实现调试日志输出

在 C 编程中,调试日志对于定位问题和优化代码至关重要。有效的调试日志不仅能帮助我们快速定位错误,还能提供有关程序运行状态的有价值的信息。本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳。 1. 使用 #ifdef _DEBUG…

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;即可看见提示

修改docker共享内存shm-size

法1&#xff1a;在创建容器时增加共享内存大小 nvidia-docker run -it -p 10000:22 --name"zm" -v /home/zm:/data ufoym/deepo:all-cu101 /bin/bash --shm-size20G法2&#xff1a;修改正在运行的容器的共享内存设置 查看容器、共享内存 docker ps -a df -lh | gr…

深度学习-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 …

【ubuntu 连接显示器无法显示】可以通过 ssh 连接 ubuntu 服务器正常使用,但服务器连接显示器没有输出

背景 ubuntu 服务器通过显示器进行关机&#xff0c;断开电源重新接上电源再重启时&#xff0c;服务器连接显示器不再有输出。CPU 为 AMD Ryzen 7 5800X 8-Core Processor&#xff0c;并没有显示&#xff0c;只能通过 NVDIA GPU 来显示。但是通过 nvidia-smi, nvitop 的输出, 以…

FineReport案列分析(一)

父格sql的解析 SELECT XCPX,XCPDL ,XCPZL FROM (SELECT DISTINCT XCPX,XCPDL,XCPZL FROM XPCXP_YS WHERE BM IN(经销商业务部,兴客坊) UNION(SELECTDISTINCT A.CPX AS XCPX,A.CPDL AS XCPDL,A.CPZL AS XCPZLFROM SYS.ORDER_SALEZJK BJOIN KHFL_LS L1ON L1.KSBMB.CUSTCODELEFT…

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

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

Vue3 30天精进之旅:Day01 - 初识Vue.js的奇妙世界

引言 在前端开发领域&#xff0c;Vue.js是一款极具人气的JavaScript框架。它以其简单易用、灵活高效的特性&#xff0c;吸引了大量开发者。本文是“Vue 3之30天系列学习”的第一篇博客&#xff0c;旨在帮助大家快速了解Vue.js的基本概念和核心特性&#xff0c;为后续的深入学习…