现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设用例场景用来描述流经用例的路径。
1.场景法的实施策略
基本步骤:
场景法最终生成的测试用例来源于测试目标的用例。也就是说场景法是从测试用例生成测试用例。
场景法通过用例场景描述业务操作流程。它为每个用例场景编制测试用例。用例场景通过描述流经用例的路径来确定,这个流经过程从用例开始到结束遍历其中所有基本流(基本事件)和备选流(分支事件)。
如图:
基本流:直黑线表示,是经过用例的最简单路径。
备选流:自基本流开始,每个备选流在特定的条件下执行,备选流可能回重新加入到基本流中,或者终止用例。
确定用例场景
场景1 | 基本流 | |||
场景2 | 基本流 | 备选流1 | ||
场景3 | 基本流 | 备选流1 | 备选流2 | |
场景4 | 基本流 | 备选流3 | ||
场景5 | 基本流 | 备选流3 | 备选流1 | |
场景6 | 基本流 | 备选流3 | 备选流1 | 备选流2 |
场景7 | 基本流 | 备选流4 | ||
场景8 | 基本流 | 备选流3 | 备选流4 |
注意:此设计中未描述备选流3只是的循环执行多次的情况,生成每个场景测试用例是通过某个特定的条件来完成的。
设计测试用例
对于场景中的每一个场景都需要确定测试用例,针对每个场景至少设计一个可以让该场景发生的测试用例。
可以采用矩阵或者判定表来确定和管理测试用例。每个测试用例包含:ID、条件(或说明)、数据元素、预期结果。
通过从确定执行用例场景所需的数据元素入手构建矩阵,矩阵中可用V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。使用的“n/a”(不适用)表明这个条件不适用于测试用例。
一旦确定了所有的测试用例,则应对这些测试用例进行复审和验证以确保其准确且适度,并取消多余或者等效的测试用例。
测试用例已经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定数据。
2.实例
测试某IC卡加油机应用系统的插卡加油功能。
用例图:
事件流
基本流 |
A1 准备加油:客户讲IC加油卡插入加油机 A2 验证加油卡:加油机从加油开的磁条中读取账户代码,并检查它是否属于可以接受加油的卡 A3 验证黑名单:加油机验证账户是否存在黑名单中,如果属于黑名单,加油机吞卡 A4 输入购油量:客户需要输入购买的汽油数量 A5 加油:加油机完成加油操作 A6 返回加油卡:退还加油卡 |
备选流B:加油卡无效 | 在基本流A2过程中,该卡不能够识别或者非本机可以使用的IC卡,加油机退卡,并退出基本流 |
备选流C:卡账户属于黑名单 | 在基本流A3过程中,判断该卡账户属于黑名单。例如已挂失,加油机吞卡并退出基本流 |
备选流D:加油卡账目现金不足 | 系统判断加油卡内现金不足,重新加入基本流A4,或者选择退卡 |
备选流E:加油机油量不足 | 系统判断加油机内油量不足,重新加入基本流A4,或者选择退卡 |
设计测试用例
测试用例ID | 场景 | 账号 | 是否黑名单卡 | 输入油量 | 账目金额 | 加油机量 | 预期结果 |
C01 | 场景1:成功加油 | V | I | V | V | V | 成功加油 |
C02 | 场景2:加油卡无效 | I | n/a | n/a | n/a | V | 加油机退卡 |
C03 | 场景3:吞卡 | V | V | n/a | V | V | 黑名单吞卡 |
C04 | 场景4:现金不足 | V | I | V | I | V | 提示重新输入或者选择退卡 |
C05 | 场景5:加油机油量不足 | V | I | V | V | I | 提示重新输入或者选择退卡 |
确定实际数据
假设每升油9RMB,黑名单:UC0002
测试用例ID | 场景 | 账号 | 是否黑名单卡 | 输入油量 | 账目金额 | 加油机量 | 预期结果 |
C01 | 场景1:成功加油 | UC0001 | 否 | 10 | 100 | 100 | 成功加油 |
C02 | 场景2:加油卡无效 | UC0000 | n/a | n/a | n/a |
100 | 加油机退卡 |
C03 | 场景3:吞卡 | UC0002 | 是 | n/a | 100 | 100 | 黑名单吞卡 |
C04 | 场景4:现金不足 | UC0003 | 否 | 10 | 50 | 100 | 提示重新输入或者选择退卡 |
C05 | 场景5:加油机油量不足 | UC0001 | 否 | 10 | 100 | 5 | 提示重新输入或者选择退卡 |