测试用例设计方法-场景法详解

01 定义

场景法是通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。

场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。

场景主要包括4种主要的类型:

正常的用例场景

备选的用例场景

异常的用例场景

假定推测的场景

02 基本流备用流

图片

上图为:用例基本流和备选流(注意:备选流的起止点)

基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)

备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如1和3),也可以起源于另一个备选流(如2),或终止用例,不在加入到基本流中(如4);(各种错误情况)

上图生成的场景如下:

场景1:基本流

场景2:基本流 备选流1

场景3:基本流 备选流1 备选流2

场景4:基本流 备选流3

场景5:基本流 备选流3 备选流2

场景6:基本流 备选流3 备选流2 备选流1

场景7:基本流 备选流4

场景8:基本流 备选流3 备选流4

为什么场景法能如此清晰的描述整个事件?

因为,现在的系统基本上都是由事件来触发控制流程的。

如:我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,就直接退回。每个事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。这一系列的过程我们利用场景法可以清晰的描述清楚。

03 场景法设计步骤

根据说明,描述出程序的基本流及各项备选流

根据基本流和各项备选流生成不同的场景

对每一个场景生成相应的[url=]测试用例[/url]

对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

对于每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。

下面范例中显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。

本例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于[url=]数据库[/url]中)以及预期结果。

通过从确定执行用例场景所需的数据元素入手构建矩阵。然后,对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。例如,在下面的矩阵中,V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。

04 场景法设计实例

有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。

1、根据说明,描述出程序的基本流及各项备选流

基本流:登录网站,选购物品,账号登录,付钱交易,生成订单

备选流:无账号,账号或密码错误,账号没有钱,账号余额不足 用户退出系统

2、根据基本流和各项备选流生成不同的场景

场景1:登录网站,选购物品,账号登录,无账号

场景2:登录网站,选购物品,账号登录,账号或密码错误

场景3:登录网站,选购物品,账号登录,付钱交易,账号没有钱

场景4:登录网站,选购物品,账号登录,付钱交易,账号余额不足

场景5:登录网站,选购物品,账号登录,付钱交易,生成订单

场景6:登录网站,选购物品,账号登录,用户退出系统

3、根据场景生成相应的测试用例

测试用例ID场景/条件账号密码余额预期结果

场景1:无账号In/an/a提示无账号

场景2:账号或密码错误(账号错误,密码正确)IVn/a提示账号或密码错误重新输入

场景2:账号或密码错误(账号正确,密码错误)VIn/a提示账号或密码错误重新输入

场景3:账号余额不足VVI提示账号余额不足

场景4:账号没有钱VVI提示账号余额不足

场景5:购物成功VVV生成订单

场景6:操作中退出系统VV用户退出系统

4、根据上表,设计数据,填入数据

测试用例ID场景/条件账号密码余额预期结果

场景1:无账号hn/an/a提示无账号

场景2:账号或密码错误(账号错误,密码正确)f0n/a提示账号或密码错误重新输入

场景2:账号或密码错误(账号正确,密码错误)ffIn/a提示账号或密码错误重新输入

场景3:账号余额不足ff010提示账号余额不足

场景4:账号没有钱ff00提示账号余额不足

场景5:购物成功ff0500生成订单,余额减少

场景6:操作中退出系统ff0用户退出系统

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

北美区域性确定性预测系统平均温度数据

区域确定性预测系统(RDPS) 区域确定性预测系统 (RDPS) 进行物理计算,以 10.0 公里网格(1/11 度)空间分辨率对当天到未来 48 小时内的大气元素进行确定性预测。平均温度数据覆盖北美,由加拿大气象局 (MSC) …

【STM32】GPIO输入

1 GPIO输出 1.1 按键简介 按键:常见的输入设备,按下导通,松手断开 按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动 1.2 传感器模块简介 传感器模块&#xff…

LearnTheArchitecture-MemoryManagement

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 — 适合小白入门【目录】ARMv8/ARMv9架构高级进阶-[目录]👈👈👈 — 高级进阶、小白勿买【加群】ARM/TEE…

day02 hive 实操练习

一、某高校图书管理系统中有如下三个数据模型: create table book( book_id string, sort string, book_name string, writer string, output string, price decimal(10,2));INSERT INTO TABLE book VALUES (001,TP391,information_processing,author1,machinery_i…

redis优化秒杀和消息队列

redis优化秒杀 1. 异步秒杀思路1.1 在redis存入库存和订单信息1.2 具体流程图 2. 实现2.1 总结 3. Redis的消息队列3.1 基于list实现消息队列3.2 基于PubSub实现消息队列3.3 基于stream实现消息队列3.3.1 stream的单消费模式3.3.2 stream的消费者组模式 3.4 基于stream消息队列…

XmlElement注解用在Java的列表属性上产生的效果

例如,下面的代码,XmlElement注解用在了Conditions类的conditionList属性的getter方法上,其中conditionList是一个列表类型: package com.thb;import java.util.List;import jakarta.xml.bind.annotation.XmlAttribute; import ja…

Python面经【4】

Python面经【4】 一、什么是闭包二、[列表]和(元组)的区别三、__Init__和__new__的区别四、Python里match与search的区别五、创建百万级实例如何节省内存六、18. 4G内存如何读取一个5G的数据 一、什么是闭包 闭包指的是在函数内部定义了另一个函数,并返回了这个作为…

香港服务器显示美国 IP 地址是怎么回事

香港服务器显示美国 IP,在我们选择免备案服务器时会考虑很多影响因素,其中香港服务器有着省时省力,方便速度快等优 势受到大多用户喜爱,可有的时候在选择香港服务器时发现,有的香港服务器在 IP 地址一栏会显示其它国家…

leetcode每日一题34

89.格雷编码 观察一下n不同时的格雷编码有什么特点 n1 [0,1] n2 [0,1,3,2] n3 [0,1,3,2,6,7,5,4] …… 可以看到nk时,编码数量是nk-1的数量的一倍 同时nk编码的前半部分和nk-1一模一样 nk编码的最后一位是2k-1 后半部分的编码是其对应的前半部分的对称的位置的数字…

如何使用OpenCV转换图像并创建视频,实现Ken Burns特效

一、Ken Burns特效 当使用OpenCV时,最常使用的是图像,但是我们也可以多个图像创建动画,通过引入时间轴更容易可视化。 Ken Burns特效这是一种以电影制片人肯伯恩斯 (Ken Burns) 命名的平移和缩放技术,Ken Burns 效果不是在屏幕上显示大型静态照片,而是裁剪细节,然后平移图…

vue3(四)-基础入门之 fetch 与 axios

一、fetch 1、axios和fetch的区别 Axios 和 Fetch 都是 JavaScript 中用于发送 HTTP 请求的 API,它们的主要区别在以下方面: 1.Axios 支持更广泛的浏览器和 Node.js 版本,而 Fetch 只能在较新的浏览器中使用,或需要使用 polyfi…

[动态规划] 回文子串

回文子串 题目描述 给定一个字符串,输出所有回文子串。 回文子串即从左往右输出和从右往左输出结果是一样的字符串 比如: abba cccdeedccc都是回文字符串 我们要查找的子串长度应该大于等于2 关于输入 输入是一行,即可一个字符串。长度…

vr红色教育虚拟展馆全景制作提升单位品牌形象

720全景展馆编辑平台以其独特的优势,为展览行业带来了革命性的变革。这种创新的技术应用为参展商提供了更高效、更便捷、更全面的展示解决方案,进一步提升了展览行业的水平和影响力。 一、提升展示效果,增强品牌形象 720全景展馆编辑平台通过…

使用conan包 - 工作流程

使用conan包 - 工作流程 主目录 conan Using packages1 Single configuration2 Multi configuration 本文是基于对conan官方文档Workflows的翻译而来, 更详细的信息可以去查阅conan官方文档。 This section shows how to setup your project and manage dependenci…

32 - MySQL调优之事务:高并发场景下的数据库事务调优

数据库事务是数据库系统执行过程中的一个逻辑处理单元,保证一个数据库操作要么成功,要么失败。谈到他,就不得不提 ACID 属性了。数据库事务具有以下四个基本属性:原子性(Atomicity)、一致性(Con…

Windows全系列 本地密码暴力破解

首先 咱们要准备两个工具: 第一个是 pwdump-master 第二个是 saminside_softradar-com.exe这两个工具 我会一并上传 需要的同学 可以自取本文章操作思路是: 第一步 首先把我刚刚提到的两个软件 以某种手段放置于机器中 如果是真实机 就用U盘 拷贝到真实机…

基于Java SSM框架+Vue实现药品保健品购物网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现药品保健品购物网站演示 摘要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 ssm药源购物网站,主要的模块包括两个用户,管理员权限:用…

OJ练习第186题——统计子串中的唯一字符

统计子串中的唯一字符 力扣链接:828. 统计子串中的唯一字符 题目描述 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s “LEETCODE” ,则其中 “L”, “T”,“C”,“O”…

【Github】git安装

我们经常需要对github上的项目进行复现或者使用,git指令可以方便我们更好地实现他们。 Part 0. 准备 配置代理IP 面对问题:关于登陆github网站网速慢、下载git项目网速慢。 解决:无论是windows还是linux系统,都可以找到/etc/ho…

RK3568平台开发系列讲解(Linux系统篇)pinctrl api介绍及实验

🚀返回专栏总目录 文章目录 一、pinctrl函数介绍二、设备树案例三、驱动案例 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍pinctrl api及其使用案例 。 一、pinctrl函数介绍 ①获取设备对应的 pinctrl…