- 概念
因果图、决策表是一种充分考虑系统之间的输入组合、约束以及输出因果关系的用例设计方法。
- 适用范围
适合:决策表特别适合于针对不同逻辑条件的组合,测试对象需要执行不同操作的场景。
不适合:
- 输入和输出不明确,或输入与输出的因果关系不明确的情况
- 被分析的特点和功能点过于复杂,输入项目很多的情况下。输入项过多,会造成决策表非常庞大,没有工具辅助的情况下,难以操作。
- 系统输入之间相互约束少,不需要做大范围的组合测试时,不宜用本工程方法,不然会产生大量用例冗余。
- 系统输入之间存在顺序先后的可变性。
例如,两个输入之间可以交换顺序,且交换顺序后,他们的输出是不一样的。
判定表的输入是无法排序的。
- 决策表的组成
条件桩: 列出系统的所有输入,通常认为列出的输入次序无关紧要
动作桩: 列出系统所有可能执行的操作,这些执行操作没有顺序约束
条件项: 列出输入项的各种取值
动作项: 列出输入项的各种取值情况下应该采取的动作
- 决策表的步骤
- 列出所有的条件桩和动作桩
- 确定规则的数目
- 填入条件项和动作项得到初始的决策表
- 简化相似的规则,得到优化的决策表
- 每列规则,设计一个测试用例
【示例】
需求:
公司有如下规定:
- 中国去欧美的航线所有座位都有食物供应。每个座位都可以播放电影
- 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影
- 中国国内的航班的商务仓有食物供应,但是不可以播放电影
- 中国国内的航班的经济仓除非飞行时间大于2小时就有食物供应,但是不可以播放电影
1. 列出所有的条件桩和动作桩
等价类:
A1={航线为国外欧美航线}
A2={航线为国外非欧美航线}
A3={航线为国内航线}
P1={舱位为经济舱}
P2={舱位为商务舱}
T1={飞行时间大于2小时}
T2={飞行时间不大于2小时}
条件桩
C1:航线为{A1,A2,A3}之一
C2:舱位为{P1,P2}之一
C3:飞行时间为{T1,T2}之一
动作桩
A1:食物供应
A2:电影播放
2. 确定规则的数目
3x2x2=12
3. 填入条件项和动作项得到初始的决策表
规则 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
条件桩 | C1航线 | A1 | A1 | A1 | A1 | A2 | A2 | A2 | A2 | A3 | A3 | A3 | A3 |
C2类型 | P1 | P1 | P2 | P2 | P1 | P1 | P2 | P2 | P1 | P1 | P2 | P2 | |
C3时间 | T1 | T2 | T1 | T2 | T1 | T2 | T1 | T2 | T1 | T2 | T1 | T2 | |
动作桩 | A1食物 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | |
A2电影 | √ | √ | √ | √ | √ | √ |
4. 简化相似的规则,得到优化的决策表
1 | 2 | 3 | 4 | 5 | ||
条件桩 | C1航线 | A1 | A2 | A2 | A3 | A3 |
C2类型 | - | P1 | P2 | P1 | P2 | |
C3时间 | - | - | - | T1 | - | |
动作桩 | A1食物 | √ | √ | √ | √ | √ |
A2电影 | √ | √ |
5. 每列规则,设计一个测试用例
用例编号 | 输入 | 预期输出 |
1 | 中国-欧美航线/所有座位/全时 | 提供食物/播放电影 |
2 | 非中国-欧美国外航线/经济舱/全时 | 提供食物 |
3 | 非中国-欧美国外航线/商务舱/全时 | 提供食物/播放电影 |
4 | 国内航线/经济舱/大于2小时 | 提供食物 |
5 | 国内航线/商务舱/全时 |