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

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

一、场景图

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

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

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

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

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

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

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

二、状态迁移图

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

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

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

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

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

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

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

三、总结

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

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

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

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

相关文章

Java面试专题——面向对象

面向过程和面向对象的区别 面向过程:当事件比较简单的时候,利用面向过程,注重的是事件的具体的步骤/过程,注重的是过程中的具体的行为,以函数为最小单位,考虑怎么做。 面向对象:注重找“参与者…

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试(HTTP和HTTPS) HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头(Request Headers)示例请求标头 响应标头(Response Header…

顺序表和链表(详解)

线性表 线性表( linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。…

初阶5 排序

本章重点 排序的概念常见排序的算法思想和实现排序算法的复杂度以及稳定性分析 1.排序的概念 排序: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性: 假定在待排序的记录序列中&#xff0…

Flink底层架构与运行流程

这张图展示了Flink程序的架构和运行流程。 主要组件及功能: Flink Program(Flink程序): 包含Program code(程序代码),这是用户编写的业务逻辑代码。经过Optimizer / Graph Builder&#xff08…

MyBatis和JPA区别详解

文章目录 MyBatis和JPA区别详解一、引言二、设计理念与使用方式1、MyBatis:半自动化的ORM框架1.1、代码示例 2、JPA:全自动的ORM框架2.1、代码示例 三、性能优化与适用场景1、MyBatis:灵活的SQL控制1.1、适用场景 2、JPA:开发效率…

计算机视觉——Intel RealSense D435的使用及python环境下的实现

什么是深度相机,以及深度相机的分类和工作原理 ​ 深度相机是一种能够捕捉场景中物体的深度信息(即物体与相机之间的距离)的设备。与传统的二维相机不同,深度相机除了拍摄图像的颜色和亮度外,还能生成一个关于场景中每…

Servlet快速入门

Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪,这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知,有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…

windows平台intel-vpl编译

需要先在本机编译好opencl库 git clone --recursive https://github.com/KhronosGroup/OpenCL-SDK.git cmake -A x64 -T v143 -D OPENCL_SDK_BUILD_OPENGL_SAMPLESOFF -B OpenCL-SDK\build -S OpenCL-SDKcmake --build OpenCL-SDK\build --config Releasecmake --install O…

MTK MT6890:LCD ST7789P3驱动移植调试

一、功能简述 LK阶段:开机logo、关机充电动画 Kernel阶段:开机logo、GUI用户交互界面 二、硬件连接及器件选型 ST7789P3 240RGB * 320 dot 262K Color TFT屏 SPI-II型panel ST7789P3接主控MT6890平台的DBI-C接口 SPI-II型读时序: 写时序: GPIO206: DISP_PWM (Func1) …

Vscode配置continue运行ollama部署的Qwen2.5

Vscode配置continue运行ollama部署的Qwen2.5 1.安装Continue插件 离线安装Continue访问下面网址下载插件:continue插件下载地址 将continue窗口迁右边(根据个人习惯,可选) 点击Continue图标会出CONTINUE窗口,鼠标选…

62,【2】 BUUCTF WEB [强网杯 2019]Upload1

进入靶场 此处考点不是SQL,就正常注册并登录进去 先随便传一个 进行目录扫描,我先用爆破代替 先随便后面写个文件名 为了提供payload位置 www.tar.gz真的存在 返回浏览器修改url就自动下载了 看到tp5,应该是ThinkPHP5框架 参考此博客的思路方法c[强网杯…

SpringCloud微服务Gateway网关简单集成Sentinel

Sentinel是阿里巴巴开源的一款面向分布式服务架构的轻量级流量控制、熔断降级组件。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助保护服务的稳定性。 官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html …

高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 随着远程办公和数据共享成为新常态,如何高效且安全地管理和传输文件成为了许多人的痛点。如果你正在寻找一个解决方案…

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…

2024年博客之星主题创作|2024年度感想与新技术Redis学习

Redis工具深入了解 1.引言与感想2.Redis工具了解2.分布式系统了解2.1单机架构2.2分布式是什么2.3应用服务和数据库服务分离2.4引入更多的应用服务器2.5理解负载均衡器2.6数据库读写分离2.7引入缓存2.8数据库分库分表2.9引入微服务2.10分布式系统小结 1.引言与感想 2024学习了很…

IDEA中Maven使用的踩坑与最佳实践

文章目录 IDEA中Maven使用的踩坑与最佳实践一、环境配置类问题1. Maven环境配置2. IDEA中Maven配置建议 二、常见问题与解决方案1. 依赖下载失败2. 依赖冲突解决3. 编译问题修复 三、效率提升技巧1. IDEA Maven Helper插件使用2. 常用Maven命令配置3. 多模块项目配置4. 资源文件…

qml Timer详解

1、概述 Timer是QML中用于创建定时器的元素。它允许你设置一个延迟时间,在延迟时间结束后触发一个信号或执行一段代码。Timer非常适用于需要在特定时间间隔后执行操作的场景,如动画延迟、定时任务等。 2、重要属性 interval: 定时器触发的时间间隔&…

为什么redis会开小差?Redis 频繁异常的深度剖析与解决方案

文章目录 导读为什么redis会开小差?1.连接数过多2.bigkey3.慢命令操作4.内存策略不合理5.外部数据双写一致性6.保护机制未开启7. 数据集中过期8. CPU饱和9. 持久化阻塞10. 网络问题结论 导读 提起分布式缓存,想必大多数同学脑海中都会浮出redis这个名字…

国产编辑器EverEdit - 快捷目录

1 面板-快捷目录 1.1 应用场景 快捷目录提供了一个用户常用文件或文件夹的收集器,方便用户快速找到并打开需要频繁编辑的文件。 1.2 使用方法 1.2.1 打开快捷目录面板 步骤1:选择菜单“查看 -> 停靠窗格 -> 快捷目录”,即可打开快捷…