1. 程式人生 > >基於邏輯覆蓋的測試用例設計

基於邏輯覆蓋的測試用例設計

基於邏輯覆蓋的方法

白盒測試中,測試用例可以用基於邏輯覆蓋的方法設計,即語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。花了不少時間弄清楚,mark,這裡還是以三角形判斷方法為例。

關於三角形判斷方法的程式流程圖

程式流程圖

約定:為方便起見,每個語句以編號代替(如圖)

編號 語句 說明
J1 a<0 || b<0 || c<0
J2 a>100 || b>100|| c>100
J3 a+b>c && b+c>a && a+c>b
J4 a==b && b==c
J5 a==b || b==c || c==a
S0 輸入三角形三邊abc 程式開始
S1 非法輸入 三角形型別值為-1
S2 非三角形 三角形型別值為0
S3 等邊三角形 三角形型別值為3
S4 等腰三角形 三角形型別值為2
S5 普通三角形 三角形型別值為1
S6 輸出三角行型別 程式結束

這裡只列出有意義的測試用例。

語句覆蓋

使每個語句都執行一次,即將三角形的型別值都輸出一遍。

編號 測試用例 期望輸出 覆蓋語句
T1 -1 5 5 -1 非法輸入 S1
T2 12 5 5 0 非三角形 S2
T3 5 5 5 3 等邊三角形 S3
T4 4 5 5 2 等腰三角形 S4
T5 3 4 5 1 普通三角形 S5

判定覆蓋

測試用例使每個判定的所有可能結果至少執行一次。

編號 測試用例 輸出 J1 J2 J3 J4 J5
T1 5 5 -5 -1 Y
T2 5 5 105 -1 N Y
T3 5 5 15 0 N N N
T4 5 5 5 3 N N Y Y
T5 5 4 5 2 N N Y N Y
T6 5 3 4 1 N N Y N N

條件覆蓋

測試用例使每個判定中的每個條件的所有可能結果都至少出現一次。
如J1有3個條件(a<0、b<0,c<0),對應有6種結果,這六種結果需要分別出現,這裡以TTT代替J1分支的3個條件成立,TTF說明J1分支中(a<0、b<0、c>=0)成立,其他亦然。

編號 測試用例 輸出 J1分支條件 J2分支條件 J3分支條件 J4分支條件 J5分支條件
T1 -5 -5 -5 -1 TTT
T2 125 125 125 -1 FFF TTT
T3 2 2 5 0 FFF FFF FTT
T4 2 5 2 0 FFF FFF TFT
T5 5 2 2 0 FFF FFF TTF
T6 5 5 5 3 FFF FFF TTT TT TTT
T7 3 4 5 1 FFF FFF TTT FF FFF

和前兩者相比,缺少了輸出等要三角形這一型別。

判定/條件覆蓋

測試用例使每個判定的所有可能結果至少執行一次,且每個判定中的每個條件的所有可能結果都至少出現一次。

編號 測試用例 輸出 J1分支條件 J2分支條件 J3分支條件 J4分支條件 J5分支條件 判定
T1 -5 -5 -5 -1 TTT Y****
T2 125 125 125 -1 FFF TTT NY***
T3 2 2 5 0 FFF FFF FTT NNN**
T4 2 5 2 0 FFF FFF TFT NNN**
T5 5 2 2 0 FFF FFF FTF NNN**
T4 5 5 5 3 FFF FFF TTT TT TTT NNYYY
T5 3 4 5 1 FFF FFF TTT FF FFF NNYNN

注:*表示取值無關。
等同判定/條件覆蓋。

條件組合覆蓋

測試用例使每個判定中的每個條件的所有可能結果組合都至少出現一次。

編號 測試用例 輸出 J1分支條件 J2分支條件 J3分支條件 J4分支條件 J5分支條件
T1 -5 -5 -5 -1 TTT
T2 30 -5 -5 -1 FTT
T3 -5 30 -5 -1 TFT
T4 -5 -5 30 -1 TTF
T5 30 30 -5 -1 FFT
T6 30 -5 30 -1 FTF
T7 30 30 -5 -1 TFF
T8 201 201 201 -1 FFF TTT
T9 5 201 201 -1 FFF FTT
T10 201 5 201 -1 FFF TFT
T11 201 201 5 -1 FFF TTF
T12 5 5 201 -1 FFF FFT
T13 5 201 5 -1 FFF FTF
T14 201 5 5 -1 FFF TFF
T15 7 7 20 -1 FFF FFF FTT
T16 7 20 7 -1 FFF FFF TFT
T17 20 7 7 -1 FFF FFF TTF
T18 5 5 5 3 FFF FFF TTT TT TTT
T19 5 5 2 2 FFF FFF TTT TF TFF
T20 2 5 5 2 FFF FFF TTT FT FTF
T21 5 2 5 2 FFF FFF TTT FF FFT
T22 3 4 5 1 FFF FFF TTT FF FFF

有些組合不可能出現,故舍去。如滿足J3(a+b>c&&a+c<=b&&b+c<=a)只能是c<=0的情況下才能成立,在J1判定時就已經決定不會經過J3了。

路徑覆蓋

上述覆蓋可以分為一類,而路徑覆蓋和前者不同。測試用例需要至少一次經過每條可能執行到的路徑。

程式可以細分為控制流程圖(如圖)

控制流程圖

編號 測試用例 期望輸出 覆蓋路徑
T1 -10 6 6 -1 非法輸入 S0 –> J1_Y –> S1
T2 6 -10 6 -1 非法輸入 S0 –> J1_NY –> S1
T3 6 6 -10 -1 非法輸入 S0 –> J1_NNY –> S1
T4 200 6 6 -1 非法輸入 S0 –> J1_NNN –> J2_Y –> S1
T5 6 200 6 -1 非法輸入 S0 –> J1_NNN –> J2_NY –> S1
T6 6 6 200 -1 非法輸入 S0 –> J1_NNN –> J2_NNY –> S1
T7 6 6 20 0 非三角形 S0 –> J1_NNN –> J2_NNN –> J3_Y –> S2
T8 6 20 6 0 非三角形 S0 –> J1_NNN –> J2_NNN –> J3_NY –> S2
T9 20 6 6 0 非三角形 S0 –> J1_NNN –> J2_NNN –> J3_NNY –> S2
T10 5 5 5 3 等邊三角形 S0 –> J1_NNN –> J2_NNN –> J3_NNN –> J4_YY –> S3
T11 4 5 5 2 等腰三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_YN –> S4
T12 5 4 4 2 等腰三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_NN –> J5_NNY –> S4
T13 4 5 4 2 等腰三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_NY –> J5_NY –> S4
T14 3 4 5 1 普通三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_NN –> J5_NNN –> S4