首頁技術(shù)文章正文

決策表設(shè)計測試用例如何設(shè)計?

更新時間:2021-11-08 來源:黑馬程序員 瀏覽量:

實際測試中,如果輸入條件較多,再加上各種輸人與輸出之間相互的作用關(guān)系,畫出的因果圖會比較復(fù)雜,容易使人混亂。為了避免這種情況,人們往往使用決策表法代替因果圖法

決策表也稱為判定表,其實質(zhì)就是一嚴(yán)邏輯農(nóng)。在在序攻計發(fā)股初期,判定表就已經(jīng)被當(dāng)作程序開發(fā)的輔助工具,幫助開發(fā)人員整埋開反模式和沉程,因為它可以把復(fù)雜的邏輯關(guān)系和多種條件組合的情況表達(dá)得既具體又明確。利用決策表可以設(shè)計出完整的測試用例集合。

為了讓大家明白什么是決策表,下面通過一個“圖書閱讀指南”來制作一個決策表。圖一無書閱讀指南指明了圖書閱讀過程中可能出現(xiàn)的狀況,以及針對各種情況給讀者的建議。在圖書閱讀過程中可能會出現(xiàn)3種情況:是否疲倦、是否對內(nèi)容感興趣、對書中的內(nèi)容是否感到糊涂。如果回答是肯定N,針對這8種組合,閱讀指南給讀看促制作的閱讀指南決策表這3種情況可以有23=8種組合、針對這8種組合,閱讀指南給讀者提供了4條建議:回到本章開頭重讀、繼續(xù)讀下去、跳到下一章去讀、停止閱讀并休息,據(jù)此制作的閱讀指南決策表下表所示。

圖書約等于指南決策表

表1


上表就是一個決策表,根據(jù)這個決策表閱讀圖書,對各種情況的處理一目了然,簡潔高效。

決策表通常由4個部分組成,具體如下。

(1)條件樁:列出問題的所有條件,除了某些問題對條件的先后次序有要求之外,通常決策表中所列條件的先后次序都無關(guān)緊要。

(2)條件項:條件項就是條件樁的所有可能取值。

(3)動作樁:動作樁就是問題可能采取的操作,這些操作一般沒有先后次序之分。

(4)動作項:指出在條件項的各組取值情況下應(yīng)采取的動作。

這4個組成部分對應(yīng)到表1中,條件樁包括是否疲倦、是否對內(nèi)容感興趣、對書中內(nèi)容是否感到糊涂;條件項包括“Y”與“N”;動作樁包括回到本章開頭重讀、繼續(xù)讀下去、跳到下一章去讀、停止閱讀并休息;動作項是指在問題綜合情況下所采取的具體動作,動作項與條件項緊密相關(guān),它的值取決于條件項的各組取值情況。

在決策表中,任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為一條規(guī)則,即決策表中的每一列就是一條規(guī)則,每一列都可以設(shè)計一個測試用例,根據(jù)決策表設(shè)計測試用例就不會有所遺漏。

在實際測試中,條件樁往往很多,而且每個條件樁都有真假兩個條件項,有n個條件樁的決策表就會有2條規(guī)則,如果每條規(guī)則都設(shè)計一個測試用例,不僅工作量大,而且有些工作量可能是重復(fù)且無意義的,例如,在上面表中,第1、2條規(guī)則,第1條規(guī)則取值為:Y、Y、Y,執(zhí)行結(jié)果為“停止閱讀并休息”;第2條規(guī)則取值為:Y、Y、N,執(zhí)行結(jié)果也為“停止閱讀并休息”。對于這兩條規(guī)則來說,前兩個問題的取值相同,執(zhí)行結(jié)果一樣,因此第3個問題的取值對結(jié)果并無影響,這個問題就稱為無關(guān)條件項,使用“-”表示。忽略無關(guān)條件項,可以將這兩條規(guī)則進(jìn)行合并,如下圖所示。

合并規(guī)則1與規(guī)則2
圖1 合并規(guī)則1與規(guī)則2

由圖1可知,規(guī)則1與規(guī)則2合并成了一條規(guī)則。由于合并之后的無關(guān)條件項(-)包含其他條件項取值,因此具有相同動作的規(guī)則還可進(jìn)一步合并,如圖2所示。

進(jìn)一步合并規(guī)則
圖2 進(jìn)一步合并規(guī)則

將規(guī)則進(jìn)行合并,可以減少重復(fù)的規(guī)則,相應(yīng)地減少測試用例的設(shè)計,這樣可以大大降低軟件測試的工作量。圖書閱讀指南決策表最初有8條規(guī)則,進(jìn)行合并之后,只剩下5條規(guī)則,簡化后的圖書閱讀指南決策表如表2所示。

簡化后的圖書于都指南決策表

表2是簡化后的圖書閱讀指南決策表,相比于表1,它簡潔了很多,在測試時只需要設(shè)計5個測試用例即可覆蓋所有的情況。

相比于因果圖,決策表能夠把復(fù)雜的問題按各種可能的情況一一列舉,簡明而易于理解,也避免遺漏,因此在多邏輯條件下執(zhí)行不同操作的情況,決策表使用的更多。



猜你喜歡

如何快速編寫完整測試用例?

測試用例是什么?有什么作用?

接口測試:如何才能設(shè)計出更好的測試用例?

黑馬程序員軟件測試課程

分享到:
在線咨詢 我要報名
和我們在線交談!