1. 程式人生 > >語句覆蓋,判定覆蓋,條件覆蓋,條件/判定覆蓋,條件組合覆蓋,路徑覆蓋

語句覆蓋,判定覆蓋,條件覆蓋,條件/判定覆蓋,條件組合覆蓋,路徑覆蓋

最近在複習軟體測試的考試,每次到白盒測試這裡都要為這幾種邏輯覆蓋方法感到頭疼,這次終於決定好好整理出來。

邏輯覆蓋是通過對程式邏輯結構的遍歷實現程式的覆蓋。它是一系列測試過程的總稱,這組測試過程逐漸進行越來越完整的通路測試。
根據覆蓋目標的不同和覆蓋源程式語句的詳盡程度,邏輯覆蓋又可分為:語句覆蓋,判定覆蓋,條件覆蓋,條件/判定覆蓋,條件組合覆蓋,路徑覆蓋

這裡以一個題目引入:

if (a>1) and (b = 0)
then x = x / a
if (a = 2) or (x > 1)
then x = x+ 1
  1. 根據以上程式段畫出程式流程圖
  2. 按照要求給出六種邏輯覆蓋的測試用例

程式流程圖如下:
在這裡插入圖片描述

注:[可執行語句:流程圖中的矩形;判定:流程圖中的菱形]

(一) 語句覆蓋:選擇足夠多的測試用例,使程式中每一可執行語句至少執行一次

分析:需要覆蓋的可執行語句為x = x / ax = x + 1

測試用例如下:

a = 2, b = 0, x = 3   覆蓋路徑:a-c-e

(二) 判定(分支)覆蓋:選擇足夠多的測試用例,使程式中每個判定的"真"和"假"至少執行一次

分析:需要覆蓋的路徑為:a-c-e和a-b-da-b-e和a-c-d

測試用例如下:

答案1
a = 2, b = 0, x = 3 覆蓋路徑:a-c-e
a = 1, b = 0, x = 1 覆蓋路徑:a-b-d

答案2
a = 2, b = 1, x = 1 覆蓋路徑:a-b-e
a = 3, b = 0, x = 3 覆蓋路徑:a-c-d

(三) 條件覆蓋:選擇足夠多的測試用例,使程式中每個判定的每個條件取得各種可能的結果

分析:需要滿足的判定為:判定一(a > 1, a <= 1, b = 0, b != 0) ; 判定二(a = 2, a != 2, x > 1, x <= 2)

測試用例如下:

答案1
a = 2, b = 0, x = 3 取到a>1(同時滿足a=2), b = 0, x>1
a = 1, b = 1, x = 1 取到a <= 1(同時滿足a!=2), b != 0, x <= 2

答案2
a = 1, b = 0, x = 3 取到a <= 1(同時滿足a!=2), b = 0, x >1
a = 2, b = 1, x = 1 取到a>1(同時滿足a=2), b != 0, x<=2

(四) 判定/條件覆蓋:選擇足夠多的測試用例,使程式中每個判定的"真"和"假"至少執行一次,並且每個判定的每個條件取得各種可能的結果。

分析:

  1. 需要覆蓋的路徑為:a-c-e和a-b-da-b-e和a-c-d

  2. 需要滿足的判定為:判定一(a > 1, a <= 1, b = 0, b != 0) ; 判定二(a = 2, a != 2, x > 1, x <= 2)

測試用例如下:

a = 2, b = 0, x = 3 覆蓋路徑a-c-e 取到a>1(同時滿足a=2), b = 0, x>1
a = 1, b = 1, x = 1 覆蓋路徑a-b-d 取到a <= 1(同時滿足a!=2), b != 0, x <= 2

(五) 條件組合覆蓋:選擇足夠多的測試用例,使程式中所有判定的條件組合至少執行一次

分析:需要覆蓋的條件組合為:

a > 1, b = 0
a>1, b != 0
a <= 1, b = 0
a <= 1, b != 0
a = 2, x > 1
a = 2, x< = 1
a != 2, x > 1
a != 2, x <= 1

測試用例如下

a = 2, b = 0, x = 3 覆蓋組合1,5
a = 2, b = 1, x = 1 覆蓋組合2,6
a = 1, b = 0, x = 3 覆蓋組合3,7
a = 1, b = 1, x = 1 覆蓋組合4,8

(六) 路徑覆蓋:選擇足夠多的測試用例,使程式中每條路徑至少執行一次

分析:需要覆蓋的路徑為:a-c-e、 a-b-d、 a-b-e、 a-c-d

a = 2, b = 0, x = 3 覆蓋路徑:a-c-e
a = 1, b = 0, x = 1 覆蓋路徑:a-b-d
a = 2, b = 1, x = 1 覆蓋路徑:a-b-e
a = 3, b = 0, x = 3 覆蓋路徑:a-c-d