基於邏輯覆蓋的測試用例設計
阿新 • • 發佈:2019-02-14
基於邏輯覆蓋的方法
白盒測試中,測試用例可以用基於邏輯覆蓋的方法設計,即語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。花了不少時間弄清楚,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 |