詳述白盒測試的邏輯覆蓋法的判定覆蓋及其優缺點

詳述白盒測試的邏輯覆蓋法的判定覆蓋及其優缺點:

判定覆蓋的定義:

判定覆蓋是設計足夠多的測試用例,使得程序中的每一個條件判斷至少獲得一次“真”和一次“假”,即使得程序流程圖中的每一個真假分支至少被執行一次。

相比語句覆蓋:

針對判斷語句,在設定案例的時候,要設定True和False的兩種案例,與語句覆蓋不同的是增加了False的情況。語句覆蓋是最基本的覆蓋,只要能夠滿足判定覆蓋,就一定能夠滿足語句覆蓋。

判定覆蓋率:

判定覆蓋率=每個判定的真假值至少出現一次/判定結果的總數
eg: 案例代碼中有判定2個,判定結果4個,設計測試用例執行了3個分支,分支覆蓋率爲3/4=75%。

測試實例:

以linux下shell編程爲例:
輸入以下代碼,進行測試:

#!/bin/bash
echo “請輸入第一個值:”
read a
echo “請輸入第三個值:”
read b
echo “請輸入第四個值:”
read c
echo “請輸入第五個值:”
read d

if [[ $a -gt 0 && $b-gt 0 && $c -gt 0 && $d-gt 0 ]]

then
        echo $(($a+$b+$c+$d))
else
        echo $(($a-$b-$c-$d))
fi

在這裏插入圖片描述
我們設置兩個簡單的測試用例:a=1 b=2 c=3 d=4和a=-1 b=-2 c=-3 d=-4,得到下圖的結果:
在這裏插入圖片描述
我們對用例進行執行,我們的判定覆蓋率爲: 100%

這裏我們要區別語句覆蓋:

語句覆蓋是讓echo $(($a+$b+$c+$d))和echo $(($a-$b-$c-$d))都執行一遍。而判定覆蓋就是讓程序的判定分別爲真和假一次,因此,只要能夠滿足判定覆蓋,就一定能夠滿足語句覆蓋。

優缺點:

優點:
判定覆蓋具有比語句覆蓋更強的測試能力,同樣也無須細分每條判定表達式。
缺點:
以上面的代碼爲例:如果我們將條件語句寫錯了,寫成:

#!/bin/bash
echo “請輸入第一個值:”
read a
echo “請輸入第三個值:”
read b
echo “請輸入第四個值:”
read c
echo “請輸入第五個值:”
read d

if [[ $a -gt 0 || $b-gt 0 || $c -gt 0 || $d-gt 0 ]]

then
        echo $(($a+$b+$c+$d))
else
        echo $(($a-$b-$c-$d))
fi

也就是將if中改爲,我們同樣可以輸出結果
在這裏插入圖片描述
由上圖可知,我們得到了和If中爲&&一樣的結果,因此,我們可以得到:與語句覆蓋一樣的結論:判定覆蓋能夠滿足條件的要求,但是不能對判斷條件進行檢查。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章