決策表
實際測試種,如果輸入條件較多,再加上各種輸入與輸出之間相互地作用關系,畫出地因果圖會比較復雜,容易使人混亂。為了避免這種情況,人們往往使用決策表法代替因果圖法。
決策表也稱為判定表,其實質就是一種邏輯表。在程序設計發展初期,判定表就已經被當作程序開發地輔助工具,幫助開發人員整理開發模式和流程,因為它可以把復雜地邏輯關系和多種條件組合地情況表達得既具體又明確。利用決策表可以設計出完整得測試用例集合。
為了讓讀者明白什么是決策表,下面通過一個【圖書閱讀指南】來制作一個決策表。圖書閱讀指南指明了圖書閱讀過程中可能出現得狀況,以及針對各種情況給讀者得建議。在圖書閱讀過程中可能會出現3種情況:是否疲倦、是否對內容感興趣、對書中得內容是否感到糊塗。
如果回答是肯定得,則使用【Y】標記;如果回答是否定的,則使用【N】標記。那么這3種情況可以有8種組合,針對這8種組合,閱讀指南給讀者提供了4條建議:回到本章開頭重讀、繼續讀下去、跳到下一章去讀、停止閱讀並休息,據此制作的閱讀指南決策表如圖所示。
上圖就是一個決策表,根據這個決策表閱讀圖書,對各種情況的處理一目了然,簡介高效。
決策表通常由4個部分組成,具體如下。
(1)條件樁:列出問題的所有條件,除了某些問題對條件的先后次序由要求外,通常決策表種所列條件的先后次序都無關緊要。
(2)條件項:條件項就是條件樁所有可能取值。
(3)動作樁:動作樁就是問題采取的操作,這些操作一般沒有先后次序之分。
(4)動作項:指出在條件項的各組取值情況下應采取的動作。
這4個組成部分對應到表2-11種,條件樁包括是否疲倦,是否對內容感興趣,對書中內容是否感到糊塗;條件項包括【Y】與【N】;動作樁包括回到本章開頭重讀,繼續讀下去、跳到下一章去讀、停止閱讀並休息;動作項是指問題綜合情況下所采取的具體動作,動作項與條件項緊密相關,它的值取決於條件項的各組取值情況。
再決策表中,任何一個條件組合的特定取值及其相應要執行的操作稱為一條規則,即決策表中的每一列就是一條規則,每一列都可以設計一個測試用例,根據決策表設計測試用例就不會有所遺漏。
在實際測試中,條件樁往往很多,而且每個條件樁都由真假兩個條件項,有n個條件樁的決策表就會有2的n次方條規則,如果每條規則都設計一個測試用例,不僅工作量大,而且有些工作量可能是重復且無意義的,例如,在表2-11中,第1、2條規則,第1條規則取值為:Y\Y\Y,執行結果為【停止閱讀並休息】。對於這兩條規則來說,前兩個問題的取值相同,執行結果一樣,因此第3個問題的取值對結果並無影響,這個問題就稱為無關條件項,使用【-】表示。忽略無關條件項,可以將這兩條規則進行合並,如圖2-4所示。
由圖2-4可知,規則1和規則2合並成了一條規則。由於合並之后的無關條件項(-)包含其它條件項取值,因此具有相同動作的規則還可進一步合並,如圖2-5所示。
由圖2-5可知,包含無關條件項【-】的規則還可以與其它規則合並
注意:
圖2-5中只是演示合並后的谷子額,還可以與其它規則進一步合並,但規則1與規則2合並之后就不再存在於決策表中了
將規則進行合並,可以減少重復的規則,相應地減少測試用例地設計,這樣可以大大降低軟件測試地工作量。圖書閱讀指南決策表最初有8條規則,進行合並之后,只剩下5條規則,簡化后地圖書閱讀指南決策表如下表所示。
上表是簡化后地圖書閱讀指南決策表,相比於表2-11,它簡潔了很多,在測試時只需設計5個測試用例即可覆蓋所有地情況。
相比於因果圖,決策表能夠把復雜地問題按各種可能地情況--列舉,簡明而易於理解,也避免遺漏,因此在多邏輯條件下執行不同操作地情況,決策表使用得更多。