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 | 不可能 |