1. 程式人生 > >白盒測試之邏輯覆蓋---軟考

白盒測試之邏輯覆蓋---軟考

   白盒測試也稱為結構測試,根據程式的內部結構和邏輯來設計測試用例,對程式的路徑和過程進行測試,檢查是否滿足設計的需要。

   白盒測試常用的技術是邏輯覆蓋、迴圈覆蓋和基本路徑測試。

   本次,小編為大家介紹邏輯覆蓋。邏輯覆蓋考察用測試資料執行被策程式時對程式邏輯的覆蓋程度。包括六種,覆蓋從弱到強的順序依次是語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋。

程式碼:

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

   路徑覆蓋實際上考慮了程式中各種判定結果的所有可能組合,因此是一種較強的覆蓋標準。但路徑覆蓋並未考慮判定中的條件結果的組合,並不能代替條件覆蓋和條件組合覆蓋。所以,六種邏輯覆蓋的關係並不是包含關係。