基本路徑測試

基本路徑測試

定義:基本路徑測試法又稱獨立路徑測試,是在程式控制流圖的基礎上,通過分析控制結構的環路複雜性,導出基本可執行路徑集合,從而設計出相應的測試用例的方法。
所謂基本路徑是指程式中至少引進一條新的語句或一個新的條件的任一路徑。
步驟:

  1. 根據程式設計結果導出程式流程圖的控制流圖;

    流程圖用來描述程式控制結構。可將流程圖映射到一個相應的流圖(對於菱形框內的複合條件,要拆分成單一條件)。在流圖中,每一個圓,稱為流圖的結點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結點,流圖中的箭頭,稱為邊或連接,代表控制流,類似於流程圖中的箭頭。一條邊必須終止於一個結點,即使該結點並不代表任何語句(例如:if-else-then結構)。由邊和結點限定的範圍稱為區域。計算區域時應包括圖外部的範圍

  2. 計算程式環路複雜度

    環路複雜度是一種為程式邏輯複雜性提供定量測度的軟體度量,將該度量用於計算程式的基本的獨立路徑數目,為確保所有語句至少執行一次的測試數量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。

  3. 導出基本路徑集,確定程式的獨立路徑

    每個圈與圈之間的連線便是一個獨立路徑,對於單進單出的節點可以使用連線代替。

  4. 根據獨立路徑,設計相應的測試用例

    根據上面的獨立路徑,去設計輸入數據。

舉例

示例程式碼

public int binSearch(int arr[], int objectValue) {
    int left = 0;
    int right = arr.length - 1;
    int mid;
    while (left < right) {
        mid = (right - left) / 2 + left;
        if (arr[mid] == objectValue) {
            return mid;
        } else if (objectValue < arr[mid]) {
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    return -1;
}
  1. 根據程式設計結果導出程式流程圖的控制流圖

  2. 計算環路複雜度

  3. 導出基本路徑集,確定程式的獨立路徑
    基本測試路徑:

    • 1-2-6
    • 1-2-3-6
    • 1-2-3-4-2
    • 1-2-3-5-2
  4. 設計相應的測試用例

基本路徑 arr objectValue return
1-2-6 [ ] 1 -1
1-2-3-6 [1,2,3] 2 1
1-2-3-4-2 [1,2,3,4,5] 2 1
1-2-3-5-2 [1,2,3,4,5] 4 3
Tags: