白盒測試--基本路徑測試法詳細說明和舉例


有一個函數如下:

 1      public static  void SortNum(int numA, int numB)
 2         {
 3             int x = 0;
 4             int y = 0;
 5             while (numA--> 0)
 6             {
 7                 if (numB == 0)
 8                     x = y +2;
 9                 else
10                     if (numB == 1)
11                         x = y + 10;
12                     else
13                         x = y +20;
14             }
15         }

下面先畫出程序控制流圖

 

根據以上的控制流圖,可以計算出以下路徑:

路徑1:5-7-8-14-5-15

路徑2:5-10-11-14-5-15

路徑3:5-13-14-5-15

路徑4:5-15

 

導出測試用例:

下面使用語句覆蓋測試

  通過路徑 輸入數據 預期結果 測試結果
case1 5-7-8-14-5-15 numA=2,numB=0 X=2 X=2
case2 5-10-11-14-5-15 numA=2,numB=1 X=10 X=10
case3 5-13-14-5-15 numA=2,numB=3 X=20 X=20
case4 5-15 numA=0,numB=1 X=0 X=0

 

 

 

 

 

 

 

二、下面來做一道面試題目

使用基本路徑測試方法,為以下程序段設計測試用例。

1    public  static void DoSomething(int X, int A, int B) 2  { 3          if ((A > 1) && (B == 0)) 4              X = X / A; 5          if ((A == 1) && (X > 1)) 6              X = X + 1; 7      }

(1)   畫出程序的控制流圖

(2)   導出基本路徑集,確定程序的獨立路徑,並設計測試用例,寫出的輸入數據和預期輸出

(1)答:

 

(2)答:使用白盒測試的路徑測試方法:
A.語句覆蓋進行測試用例的設計:
  通過路徑 輸入數據 預期結果 測試結果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 5-6-7 X=10, A=1, B=0 X=11 X=11
 
 
 
 
 
 
 
B.判定覆蓋進行測試用例的設計:特點:條件中只要有一個真一個假,就完成了判定覆蓋;

比如需要設計:

  • case1的時候需要讓條件1:if ((A > 1) && (B == 0))條件真的
  • case2的時候需要讓條件2:if ((A == 1) && (X > 1))條件真的
  • case3的時候需要讓條件1:if ((A > 1) && (B == 0))條件假的,並且需要讓條件2:if ((A == 1) && (X > 1))條件假的
  通過路徑 輸入數據 預期結果 測試結果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 5-6-7 X=10, A=1, B=0 X=11 X=11
case3 T-7 X=10, A=2, B=3 X=10 X=10

C.條件覆蓋進行測試用例的設計:特點是必須考慮到IF分支里面的各個條件的真/假

比如需要設計:

  • case1的時候需要讓條件1:if ((A > 1) && (B == 0))條件里面的值全真的
  • case2的時候需要讓條件2:if ((A == 1) && (X > 1))條件里面的值全真的,並且需要讓條件1:if ((A > 1) && (B == 0))條件里面的值全假的
  • case3的時候需要讓條件1:if ((A > 1) && (B == 0))條件里面的值全假的,並且需要讓條件2:if ((A == 1) && (X > 1))條件里面的值全假的
  通過路徑 輸入數據 預期結果 測試結果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 5-6-7 X=10, A=1, B=2 X=11 X=11
case3 T-7 X=-1, A=-1, B=2 X=-1 X=-1

 

D.判定/條件覆蓋進行測試用例的設計:特點是必須考慮到IF分支里面的各個條件的真/假,並且每個分支的真和假都要出現一次

比如需要設計:

  • case1的時候需要讓條件1:if ((A > 1) && (B == 0))條件為真;需要讓條件2:if ((A == 1) && (X > 1))條件為假
  • case2的時候需要讓條件1:if ((A > 1) && (B == 0))條件為假;需要讓條件2:if ((A == 1) && (X > 1))條件為假
  • case3的時候需要讓條件2:if ((A == 1) && (X > 1))條件為真;需要讓條件1:if ((A > 1) && (B == 0))條件為假
  • case4的時候需要讓條件2:if ((A == 1) && (X > 1))條件為假;需要讓條件1:if ((A > 1) && (B == 0))條件為假
  通過路徑 輸入數據 預期結果 測試結果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 3-4-5 X=10, A=-2, B=2 X=10 X=10
case3 5-6-7 X=10, A=1, B=2 X=11 X=11
case4 5-6-7 X=10, A=-2, B=2 X=10 X=10

由表格可以看出case2和case4相同,所以合並為一個case

 

 

E.組合覆蓋進行測試用例的設計:特點是必須考慮到IF分支里面的各個條件的各個值的真/假,並且每個分支的值的真和假都要出現一次

比如需要設計:

  • case1的時候需要讓條件1:if ((A > 1) && (B == 0))條件為真;需要讓條件2:if ((A == 1) && (X > 1))條件為假
  • case2的時候需要讓條件1:(A > 1) 為真,(B == 0)為假;需要讓條件2:if ((A == 1) && (X > 1))條件為假
  • case3的時候需要讓條件1:(A > 1) 為假,(B == 0)為真;需要讓條件2:if ((A == 1) && (X > 1))條件為假
  • case4的時候需要讓條件2:if ((A == 1) && (X > 1))條件為真;需要讓條件1:if ((A > 1) && (B == 0))條件為假
  • case5的時候需要讓條件2:(A == 1)為真,(X > 1)條件為假;需要讓條件1:if ((A > 1) && (B == 0))條件為假
  • case6的時候需要讓條件2:(A == 1)為假,(X > 1)條件為真;需要讓條件1:if ((A > 1) && (B == 0))條件為假
  • case7的時候需要讓條件2:(A == 1)為假,(X > 1)條件為假並且讓條件1:if ((A > 1) && (B == 0))條件為假
  通過路徑 輸入數據 預期結果 測試結果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 3-4-5 X=10, A=2, B=2 X=10 X=10
case3 3-4-5 X=10, A=-1, B=0 X=10 X=10
case4 5-6-7 X=10, A=1, B=2 X=11 X=11

case5 5-6-7 X=1, A=1, B=2 X=1 X=1
case6 5-6-7 X=10, A=0, B=2 X=10 X=10
case7 T-7 X=1, A=0, B=2 X=1 X=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM