白盒測試之邏輯覆蓋---軟考
白盒測試也稱為結構測試,根據程式的內部結構和邏輯來設計測試用例,對程式的路徑和過程進行測試,檢查是否滿足設計的需要。
白盒測試常用的技術是邏輯覆蓋、迴圈覆蓋和基本路徑測試。
本次,小編為大家介紹邏輯覆蓋。邏輯覆蓋考察用測試資料執行被策程式時對程式邏輯的覆蓋程度。包括六種,覆蓋從弱到強的順序依次是語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋。
程式碼:
int result(int x, int y, int z)
{
int k=0,j=0;
if((x<y)&&(z<5))
k=x+y;
if((y>3)||(x==10)
j=x*y;
return k+j;
}
流程圖:
條件1:M={(x<y)&&(z<5)}
條件2:N={(y>3)||(x==10)}
1. 語句覆蓋:每條語句(包括判定語句和賦值語句)至少執行一次。
測試用例 |
判定M的值 |
判定N 的值 |
覆蓋路徑 |
輸入:x=2,y=4,z=3 |
T |
T |
ace |
2. 判定覆蓋:又稱分支覆蓋,每個判定的每個分支至少執行一次,即一個判定的“真”、“假”各執行一次。
測試用例 |
判定M的值 |
判定N 的值 |
覆蓋路徑 |
輸入:x=2,y=4,z=3 |
T |
T |
ace |
輸入:x=6,y=2,z=8 |
F |
F |
abd |
3. 條件覆蓋:每個判定的每個條件應取到各種可能的值。對於此示例來說,每個判定包括兩個條件。
測試用例 |
具體取值條件 |
覆蓋路徑 |
輸入:x=10,y=11,z=3 |
x<y,z<5,x==10,y>3 |
ace |
輸入:x=6,y=2,z=7 |
x>y,z>5,x!=10,y<3 |
abd |
4. 判定/條件覆蓋:同時滿足判定覆蓋條件覆蓋。它的含義是,選取足夠的測試用例,使得表示式中每個條件的所有可能結果至少出現一次,而且每個判定本身的所有可能結果也至少出現一次。
測試用例 |
判定M的值 |
判定N的值 |
具體取值條件 |
覆蓋路徑 |
輸入:x=10,y=11,z=3 |
T |
T |
x<y,z<5,y>3,x==10 |
ace |
輸入:x=6,y=2,z=7 |
F |
F |
x>y,z>5,y<3,x!=10 |
abd |
5. 條件組合覆蓋:每個判定中各條件的每一種組合至少出現一次。
條件組合表:
編號 |
覆蓋條件取值 |
判定條件取值 |
判定-條件組合 |
1 |
T1,T2 |
M |
x<y,z<5 |
2 |
T1,F2 |
/M |
x<y,z>5 |
3 |
F1,T2 |
/M |
x>y,z<5 |
4 |
F1,F2 |
/M |
x>y,z>5 |
5 |
T3,T4 |
N |
y>3,x==10 |
6 |
T3,F4 |
N |
y>3, x!=10 |
7 |
F3,T4 |
N |
Y<3, x==10 |
8 |
F3,F4 |
/N |
y<3, x!=10 |
測試用例表:
測試用例 |
覆蓋條件 |
覆蓋路徑 |
覆蓋組合 |
輸入:x=10,y=11,z=3 |
T1,T2, T3,T4 |
ace |
1,5 |
輸入:x=2,y=4,z=8 |
T1,F2, T3,F4 |
abe |
2,6 |
輸入:x=10,y=2,z=3 |
F1,T2, F3,T4 |
abe |
3,7 |
輸入:x=6,y=2,z=7 |
F1,F2, F3,F4 |
abd |
4,8 |
顯然,滿足條件組合覆蓋的測試用例,也一定滿足判定/條件覆蓋。
6.路徑覆蓋:使程式中每一條可能的路徑至少執行一次。
測試用例 |
覆蓋條件 |
覆蓋路徑 |
輸入:x=10,y=11,z=3 |
T1,T2, T3,T4 |
ace |
輸入:x=1,y=2,z=3 |
T1,T2, F3,F4 |
acd |
輸入: x=10,y=2,z=3 |
F1,T2, F3,T4 |
abe |
輸入: x=6,y=2,z=7 |
F1,F2, F3,F4 |
abd |
路徑覆蓋實際上考慮了程式中各種判定結果的所有可能組合,因此是一種較強的覆蓋標準。但路徑覆蓋並未考慮判定中的條件結果的組合,並不能代替條件覆蓋和條件組合覆蓋。所以,六種邏輯覆蓋的關係並不是包含關係。