定義:基本路徑測試法又稱獨立路徑測試,是在程序控制流圖的基礎(chǔ)上,通過分析控制結(jié)構(gòu)的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計出相應(yīng)的測試用例的方法。
所謂基本路徑是指程序中至少引進(jìn)一條新的語句或一個新的條件的任一路徑。
步驟:
1、根據(jù)程序設(shè)計結(jié)果導(dǎo)出程序流程圖的控制流圖;
流程圖用來描述程序控制結(jié)構(gòu)。可將流程圖映射到一個相應(yīng)的流圖(對于菱形框內(nèi)的復(fù)合條件,要拆分成單一條件)。在流圖中,每一個圓,稱為流圖的結(jié)點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結(jié)點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個結(jié)點,即使該結(jié)點并不代表任何語句(例如:if-else-then結(jié)構(gòu))。由邊和結(jié)點限定的范圍稱為區(qū)域。計算區(qū)域時應(yīng)包括圖外部的范圍
2、計算程序環(huán)路復(fù)雜度
環(huán)路復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測度的軟件度量,將該度量用于計算程序的基本的獨立路徑數(shù)目,為確保所有語句至少執(zhí)行一次的測試數(shù)量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。
3、導(dǎo)出基本路徑集,確定程序的獨立路徑
每個圈與圈之間的連線便是一個獨立路徑,對于單進(jìn)單出的節(jié)點可以使用連線代替。
4、根據(jù)獨立路徑,設(shè)計相應(yīng)的測試用例
根據(jù)上面的獨立路徑,去設(shè)計輸入數(shù)據(jù)。
舉例
示例代碼
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;
}
根據(jù)程序設(shè)計結(jié)果導(dǎo)出程序流程圖的控制流圖
計算環(huán)路復(fù)雜度
導(dǎo)出基本路徑集,確定程序的獨立路徑
基本測試路徑:1-2-6
1-2-3-6
1-2-3-4-2
1-2-3-5-2
設(shè)計相應(yīng)的測試用例
基本路徑 | 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 |