用场景法剖析需求问题
场景主要包括4种主要的类型:正常的用例场景,备选的用例场景,异常的用例场景,假定推测的场景。用场景法来测试需求是指模拟特定场景边界发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需求中存在的问题。我们通常以正常的用例场景分析开始,然后再着手其他的场景分析。
下面来看具体的例子:假设你现在需要完成的是一套出租车预定系统(顾客进行出租车的预定,系统完成扣款以及出租车司机的任务分配等相关的任务: 顾客中的大部分都是在出租车租赁公司立有相关存款账户的用户,他们一般通过电话的方式进行预约,有些是要求立马预定的,也有一些是预定几周后的,我们需要使用计算机系统来确保这些存款账户到目前为止是有效的,系统需要知道什么时候顾客需要出租车,以及接送地址和他们的目的地。接送地址一般来说是顾客账户信息上填写的地址,根据我们车辆调度员的经验,我们可以告诉顾客最佳的接送时间。系统会根据订阅情况产生一个司机工作编号并记录预定过程中的详细信息,并会根据接送时间的顺序对这些信息按照接送的时间进行排序,然后会给顾客一个订阅的确认信息,同时包括司机的工作编号)。与这个预定出租车用例相关的,就是给出租车司机分配具体工作的用例。用场景法来对这个需求进行测试,应该如何进行呢?
首先我们来看一下正常用例场景的构建过程
a.识别商业事件流:发现需求的过程包括研究和调查特定需求相关的业务规则和策略,调查包括一系列的业务事件以及商业规则的边界点。业务事件包括事件名,输入数据(由这个事件引起的输入数据),输出数据(为了响应这个事件产生的输出数据)
b.画一个非正式的商业场景草图
c.把这个场景草图形成场景的具体步骤
以顾客预定出租车为例,这个事件是在当顾客决定需要一个出租车时发生的,这个事件导致客户和出租车公司之间发生一个预定请求的交互动作,当出租车公司收到预定请求时,它触发了安排出租车登记事件用来响应这个需求,从分析得出其中有一个需求是出租车公司需要提供一个预定确认响应信息给顾客的过程,那么什么是预定确认,在什么情况下这个确认信息会产生,其他与之相关的需求是什么?下面我们就通过构建场景的方式来进行细节上的分析
a.事件源:顾客想预定出租车,发出出租车预定请求
事件结果:安排出租车预定行为(包括许多商业逻辑规则),发送一个出租车预定确认信息给顾客
事件名: 顾客想要预定出租车
输入数据: 出租车预定请求
输出数据:出租车预定确认响应
b.场景草图如下:
c.结构化场景:
1.第一步 顾客告诉我们他想预定出租车
2.调度员需要知道顾客的账户号码,那么他是否也需要知道顾客的账户姓名?调度员是否需要询问乘客的姓名?
3.调度员核实账户号及支付信息的有效性,那是否也需要核对账户姓名的有效性?(关注衍生信息有效性的检查)
4.调度员需要向顾客询问接送的日期,时间,地址和目的地
5.调度员需要告诉顾客最佳的接送时间
6.调度员分配一个工作接送号给司机,那这个工作号是从哪里产生的?(关注数据从哪里产生)
7.调度员记录所有预约工作的细节
8.调度员跟顾客确认订阅的详细信息
场景模型基本上就是这样,预约出租车正常的用例场景如下:
1.1 客户打电话到出租车公司预约出租车
1.2 出租车调度员询问账号号码以及账号的姓名
1.3 出租车调度员核实顾客的账号详情以及支付的方式
1.4 调度员询问接送的地址,预定的接送时间以及目的地
1.5 调度员告诉顾客最佳的接送时间
1.6 调度员分配预定的工作号给出租车司机
1.7 调度员记录详细的预定信息
1.8 调度员反馈预定成功的确认信息给顾客
备选的用例场景:从基本流开始,在某个特定条件下执行,然后重新加入基本流
发现备选流的方法:对正常用例场景中的每一步列出一份问题检查列表:
— 这一步是否如实按照规定的发生?
— 对于描述中每一个名词,动词我们是否都知道精确的含义?—是否有任何数据上的遗漏?
— 是否存在一些主观上的判断?
— 我是否已经做了所有的假设?
— 这么做是否真正有意义?
备选用例场景分析如下:
1.1 顾客打电话告诉我们他想预定出租车,那么顾客是一个个人还是一个组织?顾客是否经常通过电话进行交流?顾客是想预约一辆出租车还是可能会预约多辆出租车?
1.2 出租车调度员向顾客询问账号号码,姓名以及乘客的姓名,是否只有调度员询问顾客还是有其他人也一起来询问?顾客是否都在出租车租赁公司有一个账号?是否可能会出现多个乘客的姓名?通过问这一系列问题,将会发现顾客未必都会有一个账号的,乘客也可能是多个,这样你就能构建一个备选流的用例场景了
备选的用例场景一:
1.3 预约出租车,顾客没有存款帐号
出租车调度员询问顾客有关乘客的姓名和帐户信息
出租车调度员核对客户的帐户信息
出租车调度员增加“无账号”信息到预约详细信息中
异常用例场景:异常用例是指当错误发生或者一个不需要的处理条件发生了
发现异常用例场景的方法:
— 什么样的数据条件将会导致这一步不能继续处理?
— 什么样的历史数据将会导致这一步不能继续处理
— 什么样的人为行为将会导致这一步不能继续处理
异常用例场景分析如下:出租车调度员核实顾客的账户信息和支付方式,如果出租车调度员发现顾客提供了错误的账户信息将会发生什么?顾客的帐户支付方式过期了怎么办?如果顾客账号在预先约定好的时间内未进行及时支付将会怎么样?
假定推测场景:以正常的用例场景作为起点,对每一个步骤鉴别约束条件:如果约束条件不存在的话,将会发生什么?
假定推测场景分析如下:
1.1 顾客打电话告诉我们要预定一辆出租车:其中一个约束就是顾客用电话联系,如果移除这个约束,顾客将会通过什么样的方式来联系?一个很明显的方式就是通过网络,也有可能是通过旅行社代理订购,或者是出租车的代金券,如果改用信用卡支付会是怎样的等等。一旦移除了约束,你就可以进行头脑风暴了,思考各种可能的情况,这样就可以发现更多需求中遗漏的点。
总之,通过找出所有与业务流相关的过程,以及与这些过程相关的数据,观察文本之间的关联性,过程之间的依赖性,就能帮助你暴露更多需求方面的问题。大家赶紧去试试吧,相信能给你带来不一样的感受!
用场景法剖析需求问题相关推荐
- 场景法:基本流、备选流、构造场景
场景法 概念:模拟用户操作软件时的场景 运用场景:用于测试系统的业务流程 优点:涉及业务流程的业务需求适合用场景法 缺点:只验证业务流程,不验证单点功能 组成:基本流.备选流 例: 使用场景法测试QQ ...
- 场景法设计测试用例atm_测试用例设计经典面试题之电梯、杯子、笔、桌子、洗衣机、椅子、ATM等...
测试用例设计经典面试题之电梯.杯子.笔.桌子.洗衣机.椅子.ATM等 <转载> 1.测试项目:电梯 需求测试:查看电梯使用说明书.安全说明书等 界面测试:查看电梯外观 功能测试:测试电梯能 ...
- 软件测试用例_软件测试用例设计实战场景法
不点蓝字,我们哪来故事? 目录 场景法 扩展例子 场景法介绍 影子 场景法用例设计举例 场景法设计用例步骤和表示 场景法举例 总结 场景法的注意点 场景法 影子 本来想直接跳过场景法的,今天群友提出问 ...
- 测试基础-03-用例设计方法:等价类、边界值、场景法、错误推测法
1 目标和内容 1.1 等价类划分法 1.2 边界值分析法 1.3 场景法 1.4 错误推测法(反推法) 2 等价类划分法 2.1 等价类划分法的概念 等价类划分法是一种典型的.重要的黑盒测试方法,是 ...
- 软件测试—软件测试基础知识—测试用例设计的方法之场景法、正交试验法和错误推断法
场景法 尽可能真实全部的模拟用户操作–订单,发货,商品状态变化 场景法主要基于: 1.业务(需求)层面 :对所测软件的重要功能.业务逻辑(系统要干什么,怎么去实现,这个过程).行业背景深入理解. 2. ...
- 【测试方法】业务流测试法之场景法
一.场景法:通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法.用例场景来测试需求是指模拟特定场景边界发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需 ...
- 软件测试 | 测试开发 | 黑盒测试方法论—场景法
本文节选自霍格沃兹测试开发学社内部教材 场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程. 测试不能只关注某个控件的边界值.等价类是否满足要求,也要关注它的主要功能和业务流程是否正确实现 ...
- 技术分享 | 黑盒测试方法论—场景法
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程. 测试不能只关注某个控件的边界值.等价类是否满足要求,也要关注它的主要功能和业务流程是否正确实现,这时就需要使用场景法来完成. 场景法 ...
- 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择
文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...
最新文章
- Selenium启动不同浏览器
- 目标立体检测 红外图像_一种有效的红外小目标检测方法
- 千锋python全套视频教程400全集-千锋出品全套python视频教程,400大全集,你了解吗?...
- POJ - 2135 Farm Tour(最小费用最大流)
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- Python机器学习:逻辑回归003逻辑回归的损失函数的梯度
- jmeter 安装详解
- 如何开启/关闭Pages文稿上的字数统计功能?
- 批量修改文件夹及文件用户权限和用户组权限 centos
- Java EE 6 最终草案暗示了平台的未来发展方向
- hosts文件作用及如何修改hosts文件
- 动态ip如何做域名解析
- 【论文精读】Single-Perspective Warps in Natural Image Stitching-自然图像拼接中的单透视扭曲
- oracle数据库interval使用,Oracle Interval类型
- 全球及中国汽车自动驾驶用胶粘剂行业市场发展态势与需求前景预测报告2022-2028年
- C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
- Type safety: The expression of type List needs unchecked conversion to conform to ListXXX解决办法
- 【知识】快乐物质:多巴胺和内啡肽(内酚酞)的区别
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(二) controller
- (unix网络编程)即时通讯工具二:服务端与客户端融合