场景描述场景主要包括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顾客打电话告诉我们他想预定出租车,那么顾客是一个个人还是一个组织?顾客是否经常通过电话进行交流?顾客是想预约一辆出租车还是可能会预约多辆出...