当前位置:网站首页>测试用例设计方法-场景法详解
测试用例设计方法-场景法详解
2022-08-06 07:43:50【小码哥说测试】
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用户退出系统
绵薄之力
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
边栏推荐
猜你喜欢
随机推荐
- 我在yml里设置了全局映射表前缀,但数据库识别不到
- 【云原生--Kubernetes】配置管理
- 限制命令长度如何反弹shell
- C语言力扣第59题螺旋矩阵②。模拟矩阵
- 不会吧,不会吧都2022年了你不会还不知道Jmeter原理吧
- 模拟实现strcpy函数的实现(含多次优化思想)
- [科普文] 搞 Web3 要学习哪些基础知识?
- 如何跳得更高
- 中国电子学会青少年等级考试五级原题
- 40多条令人爆笑的注释
- CSDN官方插件
- 凹语言——名字的由来和寓意
- “数字化重构系统, CEO 是第一步”
- 如何提高文章质量,不被发文助手“推荐受影响”
- MySQL数据库的逆向生成实体类,查询等接口xml的脚本
- 百度编辑器的使用坑
- C language force buckle the 59th spiral matrix ②.analog matrix
- Ceph performance test plan collection list
- How to limit command length to bounce shell
- More than 40 a joke
- Datax3.0+DataX-Web builds distributed visual ETL system
- [Popular Science] What basic knowledge do I need to learn to engage in Web3?
- Original Questions for Level 5 of China Electronics Society Youth Grade Examination
- [Cloud Native--Kubernetes] Configuration Management
- Use Specification and Example to implement dynamic conditional query cases
- JMeter集合点
- JMeter关联执行
- JMeter代理录制手机app
- The origin of the name, concave language -, and moral
- [面试篇]Mysql 索引 BTree 与 B+Tree 的区别
- I set the global mapping table prefix in yml, but the database does not recognize it
- Simulate the realization of strcpy function (including multiple optimization ideas)
- Script for reverse generation of entity class, query and other interface xml of MySQL database
- 快速学会文件操作模块
- js simulates the function of dynamically deleting messages
- How to improve the quality of articles without being "recommended and affected" by the post assistant
- C语言 结构体
- 【leetcode】8. 字符串转换整数 (atoi)
- "Digital reconstruction system, CEO is the first step"
- how to jump higher