一. 方法簡介
1.定義:判定表是分析和表達多邏輯條件下執行不同操作的情況的工具。
2.判定表的優點
能夠將復雜的問題按照各種可能的情況全部列舉出來,簡明並避免遺漏。因此,利用判定表能夠設計出完整的測試用例集合。
在一些數據處理問題當中,某些操作的實施依賴於多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執行不同的操作。判定表很適合於處理這類問題。
3、判定表有幾個要素:
1)條件樁(Condition Stub):列出了問題得所有條件。通常認為列出的條件的次序無關緊要。
2)動作樁(Action Stub):列出了問題規定可能采取的操作。這些操作的排列順序沒有約束。
3)條件項(Condition Entry):列出針對它左列條件的取值。在所有可能情況下的真假值。
4)動作項(Action Entry):列出在條件項的各種取值情況下應該采取的動作。
4、規則及規則合並
1)規則:任何一個條件組合的特定取值及其相應要執行的操作稱為規則。在判定表中貫穿條件項和動作項的一列就是一條規則。顯然,判定表中列出多少組條件取值,也就有多少條規則,既條件項和動作項有多少列。
2)化簡:就是規則合並有兩條或多條規則具有相同的動作,並且其條件項之間存在着極為相似的關系。
5、判定表設計法舉例:
書籍閱讀指南中有以下建議:
如果覺得疲倦並且對書的內容感興趣,不糊塗的話,回到本章重讀
如果覺得疲倦並且對書的內容感興趣,但糊塗的話,繼續讀下去
如果不覺得疲倦並且對書的內容感興趣,但糊塗的話,回到本章重讀
如果覺得疲倦並且對書的內容不感興趣,但不糊塗,跳到下一章去閱讀
如果覺得疲倦並且對書的內容不感興趣,但糊塗的話,請停止閱讀,休息
不疲倦,對書的內容感興趣,書中的內容不糊塗,繼續讀下去
不疲倦,不感興趣,書中內容糊塗,跳到下一章去讀
不疲倦,不感興趣,書中內容不糊塗,跳到下一章去讀
s1:根據需求將條件樁、條件項、動作樁、動作項分別列出來
s2:根據化簡規則對判定表進行化簡:
只要覺得疲憊,那么其他兩項就不再考慮,直接休息,所以上圖1~4可以簡化合並成一條
不疲憊且感興趣時,無論是否糊塗,都直接休息,簡化以后的測試用例如下:
|
1 |
2 |
3 |
4 |
|
問 題 |
你覺得疲倦嗎? |
- |
- |
Y |
N |
你對內容感興趣嗎? |
Y |
Y |
N |
N |
|
書中內容使你胡塗嗎? |
Y |
N |
- |
- |
|
建 議 |
請回到本章開頭重讀 |
x |
|
|
|
繼續讀下去 |
|
X |
|
|
|
跳到下一章去讀 |
|
|
|
x |
|
停止閱讀,請休息 |
|
|
x |
|
6、判定表的優點和缺點
I. 優點:它能把復雜的問題按各種可能的情況一一列舉出來,簡明而易於理解,也可避免遺漏。
II. 缺點:不能表達重復執行的動作,例如循環結構。
合並存在漏測的風險。一個顯然易見的原因是,雖然某個輸入條件在輸出接口上是無關的,但是在軟件設計上,內部針對這個條件走了不同的程序分支(因分析內部業務流程而定);輸入和輸出的邏輯關系,明確用判定表,不是很明了用因果圖然后使用判定表。
7、適合使用判定表設計測試用例的條件:
①規格說明以判定表形式給出,或很容易轉換成判定表。
②條件的排列順序不會也不影響執行哪些操作。
③規則的排列順序不會也不影響執行哪些操作。
④每當某一規則的條件已經滿足,並確定要執行的操作后,不必檢驗別的規則。
⑤如果某一規則得到滿足要執行多個操作,這些操作的執行順序無關緊要。
這5個必要條件的目的是為了使操作的執行完全依賴於條件的組合。其實對於某些不滿足這幾條的判定表,同樣可以借以設計測試用例,只不過尚需增加其它的測試用例罷了。