场景描述需求分析实例
Revised by Petrel at 2021
场景描述
场景主要包括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顾客打电话告诉我们要预定一辆出租车:其中一个约束就是顾客用电话联系,如果移除这个约束,顾客将会通过什么样的方式来联系?一个很明显的方式就是通过网络,也有可能是通过旅行社代理订购,或者是出租车的代金券,如果改用信用卡支付会是怎样的等等。一旦移除了约束,你就可以进行头脑风暴了,思考各种可能的情况,这样就可以发现更多需求中遗漏的点。
总之,通过找出所有与业务流相关的过程,以及与这些过程相关的数据,观察文本之间的关联性,过程之间的依赖性,就能帮助你暴露更多需求方面的问题。大家赶紧去试试吧,相信能给你带来不一样的感受!
因篇幅问题不能全部显示,请点此查看更多更全内容