测试用例 - 判定表法
概述
使用场景
适合于有多个输入和多个输出,输入和输出之间有相互的组合关系,输入输出之间有相互的制约和依赖关系。
定义
判定表也称决策表,是分析和表达多逻辑条件下执行不同操作的工具.
它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表适合于处理这类问题。
组成
判定表是由条件桩、动作桩、条件项、动作项四部分组成,如下图.
条件桩 | 条件项 |
---|---|
动作桩 | 动作项 |
条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
规则及规则合并
规则
任何一个条件组合的特定取值及其相应要执行的操作称为规则。
在判定表中贯穿条件项和动作项的一列就是一条规则。显然判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。
化简
规则合并有两条或多条规则具有相同动作,并且其条件项之间存在着极为相似的关系。
测试案例设计
步骤:
- 明确规则个数
- 列出所有条件桩和动作桩
- 填入条件项
- 填入动作项,等到初始判定表
- 简化,合并相似规则
案例
案例1
问题要求:对于功率大于50马力的机器、维修记录不全或运行10年以上的机器,应优先维修.
测试案例设计思想
- 明确规则个数
这里有三个条件:大于50马力、维修记录不全、运行10年以上, 每个条件有2种取值,所以有八种规则.
- 列出条件桩和动作桩
条件桩 | 功率大于50马力? |
---|---|
维修记录不全? | |
运行超过10年? | |
动作桩 | 优先处理 |
填入条件项
填入动作项等到初始判定表
条件桩 | 条件项 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
功率大于50马力? | Y | Y | Y | Y | N | N | N | N | |
维修记录不全? | Y | Y | N | N | Y | Y | N | N | |
运行10年以上? | Y | N | Y | N | Y | N | Y | N | |
动作桩 | 优先处理? | X | X | X | X | X | |||
其他处理 | X | X | X |
- 简化判定表
通过初始的判定表我们发现:
在三个条件中有2个不满足时,剩下的一个完全没有参考价值,可以进行简化.
只有功率大于50马力、维修记录全的、运行十年以上的才优先处理;
其他处理的情况是:满足动力大于50马力、维修功能完全、没有运行10年以上中只要满足两项
简化后为
条件桩 | 条件项 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
功率大于50马力? | Y | Y | N | N | Y | |
维修记录不全? | Y | N | - | - | N | |
运行10年以上? | - | Y | Y | N | N | |
动作桩 | 优先处理? | X | X | X | ||
其他处理 | X | X |
注意: “-”表示取值与否不影响触发的动作.即,不影响规则
案例2
公交一卡通自动充值系统要求:
- 系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能为50元或100元。
- 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;
- 若输入50元纸币,并选择充值100元,提示错误,并退回50元;
- 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;
- 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
- 若输入纸币后在规定时间内不选择充值按钮,找零,并提示错误;
- 若选择充值按钮后不输入货币,提示错误
测试案例实现如下
- 明确规则个数
规则个数(条件桩) | 输入50元 |
---|---|
输入100元 | |
充值50元 | |
充值100元 |
- 列出条件桩和动作桩
动作桩 | 提示充值成功 |
---|---|
充值成功并退卡 | |
退卡 | |
找零 |
列入条件项
填入动作项,等待初始的判定表
输入条件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|
输入50元 | Y | Y | X | ||||||
输入100元 | Y | Y | X | ||||||
充值50元 | Y | Y | X | ||||||
充值100元 | Y | Y | X | ||||||
动作桩 | 充值成功并退卡 | X | X | X | |||||
提示充值成功 | X | X | X | ||||||
找零 | X | X | X | X | |||||
提示错误 | X | X | X | X | X |
- 简化
这个案例中每个条件都是独立的,没有可以简化的
- 测试用例设计
上面的表中每一条就是一个测试用例.
小结
优缺点
优点
- 能把复杂问题按照各种可能情况—列举出俩, 简明而易于理解,避免遗漏
缺点
- 不能表达重复执行的动作、例如循环结构