在一些数据处理问题中,某些操作是否实施依赖于多个逻辑条件的取值。在这些逻辑条件取值的组合所构成的多种情况下,分别执行不同的操作。处理这类问题的一个非常有力的分析和表达工具是判定表,或称决策表(Decision Table)。在所有功能性测试方法中,基于决策表的测试方法是最严格的,决策表在逻辑上是严密的。
一、决策表的组成
-
l 条件桩:列出了问题的所有条件。
-
l 动作桩:列出了问题规定可能采取的操作。
-
l 条件项:列出针对它所列条件的取值,在所有可能情况下的真假值。
-
l 动作项:列出在条件项的各种取值情况下应该采取的动作。
-
l 规则:任何一个条件组合的特定取值及其相应要执行的操作。 在决
二、决策表的建立步骤:
(1)确定规则个数;
(2)列出所有的条件桩和动作桩;
(3)填入条件项;
(4)填入动作桩和动作项,得到初始判定表;
(5)化简,合并相似规则;
(6)依据判定表,选择测试数据,设计测试用例。
三、
使用决策表测试的
Beizer
条件:
- 规格说明以决策表形式给出,或是很容易转换成判定表;
- 条件的排列顺序不会也不应影响执行哪些动作;
- 规则的排列顺序不会也不应影响执行哪些动作;
- 每当某一规则的条件已经满足,并确定要执行的动作后,不必检验别的规则;
- 如果某一规则得到满足要执行多个动作,这些动作的执行顺序无关紧要。
四、规则及规则合并:
- 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。
- 化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。
五、应用举例:
1.三角形问题的决策表测试。
条件桩 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
a+b > c? | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
a+c > b? | - | N | Y | Y | Y | Y | Y | Y | Y | Y | Y |
b+c > a? | - | - | N | Y | Y | Y | Y | Y | Y | Y | Y |
a=b? | - | - | - | Y | Y | Y | Y | N | N | N | N |
b=c? | - | - | - | Y | Y | N | N | Y | Y | N | N |
a=c? | - | - | - | Y | N | Y | N | Y | N | Y | N |
等腰三角形 | X | X | X | ||||||||
等边三角形 | X | ||||||||||
非等边三角形 | X | ||||||||||
非三角形 | X | X | X | ||||||||
不可能 | X | X | X |
导出测试用例:
2. NextDate的决策表测试。
M1={月份: 每月有30天}
M2={月份: 每月有31天, 12月除外}
M4={月份:12月}
M3={月份: 2月}
D1={日期:1<=日期<=27}
D2={日期:28}
D3={日期:29}
D4={日期:30}
D5={日期:31}
Y1 ={年:年是闰年}
Y2 ={年:年不是闰年}
输入变量间存在大量逻辑关系的NextData决策表
l