邏輯覆蓋測試包括的方法有:語句覆蓋、路徑覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。
接下來通過對下面子程序進行各個方法的測試用例設計:
- procedure example(y,z:real; var x:real)
- begin
- if(y > 1) and (z = 0) then x:= x / y;
- if(y = 2) or (x > 1) then x:= x + 1;
- end;
- 語句覆蓋:所有語句至少執行一次。即執行路徑sabcde即可,測試用例如表所示。
測試數據 |
預期結果 |
x = 4, y= 2, z = 0 |
x = 3 |
- 路徑覆蓋:所有可能被執行到的路徑至少執行一次。本題需執行路徑有:sabcde、sace、sabce、sacde,測試用例如表所示。
執行路徑 |
測試數據 |
預期結果 |
sabcde |
x = 4, y= 2, z = 0 |
x=3 |
sace |
x=1,y=1,z=1 |
x=1 |
sabce |
x=1,y=3,z=0 |
x=0 |
sacde |
x=1,y=2,z=1 |
x=2 |
- 判定覆蓋:每個判定結果至少執行一次。本題需滿足a=true且c=false,a=false且c=true兩種情況即可,即執行路徑sabce、sacde,測試用例如表所示。
判定 |
執行路徑 |
測試用例 |
預期結果 |
a=t,c=f |
sabce |
x=1,y=3,z=0 |
x=0 |
a=f,c=t |
sacde |
x=1,y=2,z=1 |
x=2 |
- 條件覆蓋:每個判定中的每個條件可能出現的結果至少出現一次。本題判定a可能出現的結果:y>1,y<=1,z=0,z≠0,判定c可能出現的結果:y=2,y≠2,x>1,x<=1,可執行的路徑爲sabcde,sace,測試用例如表所示。
覆蓋的條件 |
執行路徑 |
測試數據 |
預期結果 |
y>1,y=2,z=0,x>1 |
sabcde |
x=2,y=2,z=0 |
x=1 |
y<=1,y≠2,z≠0,x<=1 |
sace |
x=1,y=1,z=1 |
x=2 |
- 判定/條件覆蓋:每個判定結果至少出現一次,每個判定中的條件可能出現的結果至少出現一次。可執行路徑爲sabcde,sace,測試用例如表所示。
判定 |
覆蓋的條件 |
執行路徑 |
測試數據 |
預期結果 |
a=t,c=t |
y>1,y=2,z=0,x>1 |
sabcde |
x=2,y=2,z=0 |
x=1 |
a=f,c=f |
y<=1,y≠2,z≠0,x<=1 |
sace |
x=1,y=1,z=1 |
x=2 |
- 條件組合覆蓋:每個判定的每個條件的可能出現的結果的所有可能的組合至少出現一次。本題中判定a可能出現的條件組合爲:(1) y>1,z=0; (2) y<=1,z=0; (3)y>1,z≠0; (4) y<=1,z≠0 ; 判定纔可能出現的條件組合爲:(1) y=2,x >1; (2)y≠2,x >1; (3) y=2,x<=1; (4)y≠ 2,x<=1。測試用例如表所示。
條件組合 |
執行路徑 |
測試用例 |
預期結果 |
y>1,z=0,y=2,x>1 |
sabcde |
x=4,y=2,z=0 |
x=3 |
y<=1,z=0,y≠2,x<=1 |
sace |
x=1,y=1,z=1 |
x=1 |
y>1,z≠0,y=2,x<=1 |
sace |
x=1,y=2,z=1 |
x=1 |
y<=1,z≠0,y≠2,x>1 |
sacde |
x=2,y=1,z=1 |
x=3 |