想看更多内容请移步专栏
场景法
知识点
- 场景法的概念
- 场景法案例
简介
大家设想一下,以登录功能的测试为例,如下图所示,结合前面学过的等价类和边界值分析法,再加上自己对实际业务场景的发挥,能设计出什么样的测试用例呢?
- 输入正确的账号和密码以及验证码后点击“登录”按钮,程序能正常登录;
- 不输入账号、密码和验证码,直接点击“登录”按钮,程序给出错误提示;
- 输入正确的账号和验证码,错误的密码,点击“登录”按钮,程序给出错误提示;
- 输入正确的账号和验证码,不输入密码,点击“登录”按钮,程序给出错误提示;
- 不输入账号,输入正确的密码和验证码,点击“登录”按钮,程序给出错误提示;
- ……
如何对此类测试的场景进行全面的测试呢?当拿到一个测试任务的时候,我们通常不是先关注某个控件的边界值、等价类是否满足要求,而是先关注它的主要功能和业务流程是否正确实现,这就需要使用场景法来完成测试。当业务流程没有问题,也就是该软件的主要功能没有问题时,我们再重点从边界值、等价类等方面对输入域进行测试。
接下来我们来看看场景法的概念和应用。
场景法的概念
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。我们知道,现在的软件几乎都是由事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想已被引入到软件测试中,生动的描述出事件触发时的情景。提出这种思想的是 Rational 公司,在 RUP2000 中文版当中有其详尽的解释和应用。
场景法一般包含基本流和备选流,从一个流程开始,通过描述经过的路径来确定测试用例的过程,经过遍历所有的基本流和备选流来完成整个场景。我们通常以正常的用例尝尽刚开始分析,再着手分析其他的场景。
基本流也叫有效流或正确流,主要是模拟正确的业务操作过程的情景。
备选流也叫无效流或错误流,主要是模拟错误的业务操作过程的情景。
基本流一般采用直黑线表示,是经过用例的最简单路径,无任何差错,程序从开始直接执行到结束;备选流则采用不同颜色表示。一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不再加入到基本流中,备选流一般代表了各种错误情况。
下图展示了一个场景的示例图,在下图中,有一个基本流和 4 个备选流。每个经过的可能路径可以确定不同的用例场景。从“用例开始”到“用例结束”,遍历所有的路径,可以确定以下 8 个用例场景。(为了方便,场景 5、6、8 只考虑了备选流 3 循环执行一次的情况。)
场景 1:基本流
场景 2:基本流 备选流 1
场景 3:基本流 备选流 1 备选流 2
场景 4:基本流 备选流 3
场景 5:基本流 备选流 3 备选流 1
场景 6:基本流 备选流 3 备选流 1 备选流 2
场景 7:基本流 备选流 4
场景 8:基本流 备选流 3 备选流 4
场景法的典型应用偏重于大的业务流程,目的是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向。
使用场景法设计测试用例时,对测试人员的相关业务熟悉程度有要求,最好能成为该行业中业务方面的“专家”。要本着从用户的角度出发,模拟用户的实际操作场景,分析出基本流和备选流。如何识别出基本流和备选流,有以下几个识别原则:
- 一个业务只存在一个基本流;
- 基本流只有一个起点,一个终点;
- 基本流是主流,备选流是支流;
- 备选流可以起始于基本流,也可以起始于其它的备选流;
- 备选流的终点,可以是一个流程出口,也可以是回到基本流,还可以是汇入其它的备选流;
- 如果在流程图中出现了两个不相上下的基本流,一般需要把它们分开对待。
应用场景法的基本设计步骤如下:
- 根据需求说明,分析出程序的基本流以及各项备选流;
- 根据基本流和各项备选流生成不同的场景;
- 对每一个场景生成相应的测试矩阵;
- 生成测试用例,去掉多余的测试用例,并确定测试数据值。
场景法案例
【案例 1-图书管理系统】
下图给出了某公共图书管理系统中的一个用例图,下表是注册用户的用例规约,请使用场景法设计测试用例。
用例规约编号 | UC001 |
---|---|
用例规约名称 | 注册用户 |
参与者 | 借阅卡办理人员 |
用例规约说明 | 用例起始于卡办理人员接受读者的办卡请求 |
前置条件 | 卡办理人员经过身份验证 |
后置条件 | 保存读者信息,并分发一张对应的借阅卡 |
【解析】:
根据需求说明,分析出程序的基本流和各项备选流
通过分析,先画出基本流程表(如下表 所示)和分支流程。
参与者动作 | 系统动作 |
---|---|
1.卡办理人员在注册界面中录入读者的登记信息 | 2.系统对录入信息进行有效性检验 |
3.系统验证读者注册证件号具有唯一性 | |
4.卡办理人员录入借阅卡卡号,并收取押金,确认信息提交 | 5.系统验证卡号的有效性 |
6.系统向读者信息表中增加一条读者信息,并将借阅卡卡号与读者进行对应后显示成功界面 | |
7.卡办理人员将借阅卡和押金收据交于读者 |
分支流程有:
2a.系统检查录入信息存在问题,则提示用户相应信息,系统返回到注册界面
3a.系统发现读者有效证件号已经存在于已注册的读者信息中,则提示用户“该证件号已经被注册”,系统返回原有注册界面。
4a.卡办理人员取消办卡过程,则系统提示用户是否确实要取消操作
- 如果卡办理人员确认“取消”操作,则系统返回到初始注册界面
- 如果卡办理人员取消“取消”操作,则系统保持原有注册界面
5a.系统发现卡号无效,提示重新输入。
根据以上分析,确定基本流和备选流,如下表所示
基本流 | 录入信息有效性检查、证件号的唯一性检查、卡号的有效性检查、生成借阅关系 |
---|---|
备选流 1 | 录入信息存在问题 |
备选流 2 | 证件号已注册 |
备选流 3 | 取消办卡操作 |
备选流 4 | 卡号无效 |
生成注册用户的场景,如下表所示
场景描述 | 基本流 | 备选流 |
---|---|---|
场景 1:成功注册 | 基本流 | |
场景 2:信息存在问题 | 基本流 | 备选流 1 |
场景 3:证件号已注册 | 基本流 | 备选流 2 |
场景 4:取消办卡操作 | 基本流 | 备选流 3 |
场景 5:卡号无效 | 基本流 | 备选流 4 |
生成测试矩阵,如下表所示。
对于每一个场景都需要确定测试矩阵。本例中,对于每个测试用例存在一个测试用例 ID、条件(或说明)、测试用例中涉及的所有数据元素以及预期结果。
通过从确定执行用例场景所需的数据元素入手构建矩阵表格。对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。通常 V(有效)用于表明这个条件必须是 Valid(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。表中‘n/a’(不适用)表明这个条件不适用于测试用例。
生成测试用例,并选取测试数据值。注册用户的测试用例如下表所示。
【案例 2-登录系统界面】
某 登录系统界面的业务流程图如下图所示,请用场景法为登录系统设计测试用例。
【解析】:
分析题目,列出基本流和备选流。如下表所示。
生成“登录系统”的场景,如下表所示。
登录系统的用例矩阵,如下表所示。
V 表示这个条件必须是有效的才可执行基本流,I 表示条件无效,n/a 表示这个条件不适用于测试用例。
生成登录系统的测试用例,并选取测试数据值。如下表所示。
小结
当程序界面上没有太多填写项,主要通过鼠标的点击、双击、拖拽等完成操作的时候可以使用场景法。使用场景法时,可以把自己当作最终的用户,分析在使用该软件的时候可能遇到的场景,主要是验证业务流程、主要功能的正确性和异常处理能力。
场景法需要测试人员充分发挥对用户实际业务场景的想象。在用例设计过程中,通过描述事件触发时的情景,可以有效激发测试人员的设计思维,同时对测试用例的理解和执行也有很大的帮助。