一、實驗名稱
????????白盒測試——基本路徑測試法
二、實驗目的
????????白盒測試是結構測試,是依據被測程序的內部邏輯結構設計測試用例,驅動被測程序運行完成的測試,通過本實驗希望:
????????1、掌握基本路徑測試法的基本概念,用具體的例子體驗基本路徑測試法設計測試用例;
????????2、通過基本路徑測試方法的學習實踐,提高具體問題具體分析的能力。
三、基礎知識
????????基本路徑覆蓋就是在程序控制流圖的基礎上,通過分析控制流圖的環路復雜性,然后導出程序獨立路徑集合, 再設計測試用例覆蓋所有獨立路徑的一種動態白盒測試方法。由于基本路徑覆蓋把程序中的所有節點都覆蓋到了,所以程序中的每一條可執行語句也至少會被執行一次,也就是說滿足基本路徑覆蓋就一定是滿足語句覆蓋的。
????????所謂獨立路徑是指,和其他的獨立路徑相比,至少有一個路徑節點是新的,未被其他獨立路徑所包含。從程序的環路復雜度可導出程序基本路徑集合中的獨立路徑條數:
????????程序獨立路徑條數 = 程序的環路復雜度
????????這是確保程序中每個可執行語句至少執行一次所必須的測試用例數目的下界。得出程序獨立路徑條數后,再根據控制流圖,得出各條獨立路徑。所有獨立路徑組成獨立路徑集合,也就是基本路徑集合。
基本路徑覆蓋測試法的基本步驟如下:
????????1) 畫出程序控制流圖;
????????2) 計算程序環路復雜性;
????????3) 確定獨立路徑集合;
????????4) 為每條獨立路徑設計測試用例。
????????基本路徑覆蓋應當確保基本路徑集中的每一條路徑都能被執行到。一般是為每條獨立路徑設計一個測試用例,執行這個測試用例時,就能確保該獨立路徑會被執行。
四、實驗內容
????????下面是一個采用Euclid方法計算兩個整數的最大公約數的程序代碼:
Function MCM(Int x, Int y): IntInt m = 0;While(x > 0 and y > 0)If(x > y)Then x = x - y;Else y = y - x;EndIf // if結束EndWhile // while循環結束m = x + y;Return m;
End MCM
要求:
????????1、畫出程序控制流圖,計算控制流圖的環路復雜度;
????????2、按基本路徑測試設計測試用例。 ?
五、實驗要求
1、畫出程序控制流圖,計算控制流圖的環路復雜度;
2、按基本路徑測試設計測試用例;
1、程序控制流圖
環路復雜度:V(G)=E?N+2P
- 節點數 N=8(包括開始和結束節點)。
- 邊數 E=9。
- 連通分量數 P=1。
代入公式:V(G)=9?8+2×1=3
因此,該程序的環路復雜度為 3。
2. 基本路徑測試設計測試用例
????????基本路徑測試是一種白盒測試方法,旨在確保每條獨立路徑至少被執行一次。根據環路復雜度,我們需要設計 3 個測試用例來覆蓋所有路徑。
路徑分析
- 路徑 1: 進入循環,x > y,執行 x = x - y,直到 x <= y。
- 路徑 2: 進入循環,x <= y,執行 y = y - x,直到 y <= x。
- 路徑 3: 不進入循環(x <= 0 或 y <= 0)。
測試用例
- 測試用例 1: x=10,y=5
????????預期結果:最大公約數為 5。
????????路徑:路徑 1。
- 測試用例 2: x=5,y=10
????????預期結果:最大公約數為 5。
????????路徑:路徑 2。
- 測試用例 3: x=?1,y=10 或 x=10,y=?1
????????預期結果:最大公約數為 1。
????????路徑:路徑 3。