1.决策表
决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。
它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。
决策表通常由条件桩(Conditions)、条件项(Condition Alternatives)、动作桩(Actions)和动作项(Action Entries)4部分组成。
条件桩 | 条件项 |
动作桩 | 动作项 |
条件桩:列出所有可能的条件
条件项:针对条件桩给出的条件列出所有可能的取值范围
动作桩:列出要采取的动作
动作项:指出在条件项的各种取值情况下应采取的动作
2.决策表的构造及化简
<1>构造决策表可采用以下5个步骤:
(1)列出所有的条件桩和动作桩。
(2)确定动作规则(条件项)的个数。
(3)填入条件项。
(4)填入动作项,得到初始决策表。
(5)简化决策表,合并相似规则。
<2>决策表的化简
对于n个条件的决策表,相应有2n个规则(每个条件分别取真、假值),当n较大时,决策表很繁琐。实际使用决策表时,常常先将它简化。决策表的简化是以合并相似规则为目标。即若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。
3.用例分析
NextDate (int month, int day, int year)函数规定:输入三个整数:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日,year满足1920≤year≤2050。
步骤如下:
1)构造决策表
●M1={月份:30天/月},
M2={月份: 31天/月,12月除外}, M3={月份: 12月},M4={月份: 2月} ●D1={日期:1<=日<=27}, D2={日期:日=28}, D3={日期:日=29} , D4={日期:日=30}, D5={日期:日=31}
●Y1={年:闰年},Y2={年:平年} 注:二月:平年28天,闰年29天 条件桩:
●C1:月份在{M1,M2,M3,M4}中之一 ●C2:日期在{D1,D2,D3,D4 ,D5}中之一 ●C3:年在{Y1,Y2}中之一 动作桩:
●A1:不可能 ●A2:日期增1
●A3:日期复位(置1) ●A4:月份增1
●A5:月份复位(置1) ●A6:年增1
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | |
C1:月 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | M2 | M2 | M3 | M3 | M3 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4 | M4 |
C2:日 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D2 | D3 | D3 | D4 | D5 |
C3:年 | Y1 | Y2 | Y1 | Y2 | ||||||||||||||||||
A1:不可能 | √ | √ | √ | √ | ||||||||||||||||||
A2:日期+1 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | |||||||||
A3:日期复位(置位) | √ | √ | √ | √ | √ | |||||||||||||||||
A4:月份+1 | √ | √ | √ | √ | ||||||||||||||||||
A5:月份复位(置位) | √ | |||||||||||||||||||||
A6:年+1 | √ |
————————
2)由决策表设计测试用例,得测试用例表。(化简)
用例编号 | 月 | 日 | 年 | 预期输出 |
1-3 | 4 | 12/28/29 | 2001 | 2001年4月13/29/30日 |
4 | 4 | 30 | 2001 | 2001年4月5日 |
5 | 4 | 31 | 2001 | 不可能 |
6-9 | 1 | 15/28/29/30 | 2001 | 2001年1月16/29/30/31日 |
10 | 1 | 31 | 2001 | 2001年2月1日 |
11-14 | 12 | 15/28/29/30 | 2001 | 2001年2月16/29/30/31日 |
15 | 12 | 31 | 2001 | 2002年1月1日 |
16 | 2 | 15 | 2001 | 2001年2月16日 |
17 | 2 | 28 | 2004 | 2004年2月29日 |
18 | 2 | 28 | 2001 | 2001年3月1日 |
19 | 2 | 29 | 2005 | 2005年3月1日 |
20 | 2 | 29 | 2001 | 不可能 |
21,22 | 2 | 30/31 | 2001 | 不可能 |