判定表也稱為決策表,用於描述程序輸入條件組合與相應的程序處理動作之間的對應關系。等價類划分和邊界值分析都沒有考慮被測程序輸入條件的組合情況,只是孤立地考慮各個輸入條件的測試數據取值問題,對輸入組合情況下產生可能產生的錯誤沒有進行充分地測試。判定表驅動法從多個輸入條件組合的角度來滿足測試的覆蓋率要求,是黑盒測試方法中最嚴格、最有邏輯的測試方法。
1.判定表的構造與化簡
判定表一般由上圖4個部分構成
(1)條件樁:列出了問題所包含的所有條件。一般情況下,條件的排列書必須無關緊要。
(2)動作樁:列出了問題規定可能采取的操作。對這些操作的排列順序一般沒什么要求。
(3)條件項:條件樁中每個條件可以取真值或者假植,條件項給出了這些條件取值的多種組合情況。
(4)動作項:列出了在各種條件取值情況下應當采取的相應動作。
判定表的構造過程一般包括5個步驟:
①列出所有的條件樁和動作樁
②根據條件樁中的條件個數確定規則的個數
③根據條件組合,填入條件取值,形成每一個條件項
④填入相應的動作項,得到初始判定表
⑤化簡初始判定表,合並相似規則
2.判定表構造實例
(1)
假設程序的規格說明要求:“對於各科成績高於85分並且是優秀畢業生的人員,或總是成績大於450的人員,應當優先錄取,其他情況進行正常處理”。從規格說明可知,條件樁由“各科成績均高於85分”“優秀畢業生”和“總成績大於450分”三個條件構成,動作樁由“優先錄取”和“正常處理”兩種動作構成。因為由三個條件,所以有23=8個規則。根據8種條件取值組合情況,可以得到如下表所示判定表
序號 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
條件 | 各科成績高於85分 | Y | Y |
Y | Y | N | N | N | N |
優秀畢業生 | Y | Y | N | N | Y | Y | N | N | |
總成績大於450 | Y | N | Y | N | Y | N | Y | N | |
動作 | 優先錄取 | √ | √ | √ | √ | √ | |||
正常處理 | √ | √ | √ |
化簡之后的判定表如下
序號 | 1,2 | 3 | 4 | 5 | 6 | |
條件 | 各科成績高於85分 | Y | Y | Y | N | N |
優秀畢業生 | Y | N | N | - | - | |
總成績大於450 | - | Y | N | Y | N | |
動作 | 優先錄取 | √ | √ | √ | ||
正常處理 | √ | √ |
(2)
一個函數根據A、B、C三條邊的輸入值怕段是否能夠構成三角形,如果能夠構成三角形,進而判斷是等腰三角形還是等邊三角形。A、B、C均為正整數。根據問題先構造判定表
序號 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | |
條件 | A+B>C | N | Y | Y | Y | Y | Y | Y | Y |
A+C>B | - | N | Y | Y | Y | Y | Y | Y | |
B+C>A | - | - | N | Y | Y | Y | Y | Y | |
A=B | - | - | - | Y | Y | N | N | N | |
A=C | - | - | - | Y | N | Y | N | N | |
B=C | - | - | - | - | - | - | Y | N | |
動作 | 非三角形 | √ | √ | √ | |||||
不等邊三角形 | √ | ||||||||
等腰三角形 | √ | √ | √ | √ | |||||
等邊三角形 | √ |
3.在使用判定表驅動法設計測試用例時,還需要注意默許規則和默許操作的問題。
如果軟件規格說明如下:
(1)當條件1和條件2滿足,並且條件3和條件4不滿足,或者當條件1、條件3和條件4滿足時,要執行條件操作1
(2)當任意一個條件不滿足,而條件4滿足時,執行操作2
(3)當條件1不滿足,爾條件4滿足時,執行操作3
根據說明,構造如下判定表。規格說明中共有4個條件,判定表只列出了16個規則中與規格描述直接相關的4個規則。程序在實際執行時,當遇到除上述4條規則意外的其他規則時,需要執行默許操作,不需要時可以忽略這些規則。但是用判定表驅動法設計測試用例時,就必須列出這些默許規則,如下下表
規則1 | 規則2 | 規則3 | 規則4 | |
條件1 | Y | Y | N | N |
條件2 | Y | - | N | - |
條件3 | N | Y | N | - |
條件4 | N | Y | N | Y |
操作1 | √ | √ | ||
操作2 | √ | |||
操作3 | √ |
規則5 | 規則6 | 規則7 | 規則8 | |
條件1 | - | N | Y | Y |
條件2 | - | Y | Y | N |
條件3 | Y | N | N | N |
條件4 | N | N | Y | - |
默許操作 | √ | √ | √ | √ |
4.判定表法的優缺點:
優點:①能將規格說明中各種復雜邏輯組合情況一一列舉出來,只管並且易於理解,便於檢查並且能夠便面功能遺漏。
②每個測試用例可以覆蓋多種輸入情況,有利於提高測試效率。
③考慮了輸入條件間的約束關系,因此避免了無效測試用例,提高了測試有效性。
④能夠很方便地給出每個測試用例地預期輸出。
缺點:①不能表達重復執行地動作,例如循環語句的執行。
②當被測特性較多時,判定表的規模會很龐大。
③不能有效地確認某些輸入組合是否必須測試,會造成一定的用例冗余
判定表適合描述具有一下特征的應用程序:
①程序中if-then-else分支邏輯較多
②程序具有較高的環路復雜度
③輸入變量之間存在邏輯關系
④設計輸入變量子集的計算
⑤輸入和輸出之間存在因果關系