通常把測試數據和預期的輸出結果稱為測試用例。
(一)邏輯覆蓋
是對一系列測試過程的總稱,這組測試過程逐漸進行越來越完整的通路測試。
1.語句覆蓋
語句覆蓋的含義是,選擇足夠多的測試數據,使被測程序中每個語句至少執行一次。語句覆蓋是很弱的邏輯覆蓋標準
2.判定覆蓋
又叫分支覆蓋,它的含義是,不僅每個語句必須至少執行一次,而且每個判定的每種可能的結果都應該至少執行一次,也就是每個判定的每個分支都至少執行一次。判定覆蓋比語句覆蓋強,但是對程序邏輯的覆蓋程度仍然不高
3.條件覆蓋
含義是,不僅每個語句至少執行一次,而且使判定表達式中的每個條件都取到各種可能的結果。條件覆蓋通常比判定覆蓋強,但滿足條件覆蓋的測試數據不一定滿足判定覆蓋。
4.判定/條件覆蓋
是一種能同時滿足判定覆蓋和條件覆蓋的邏輯覆蓋,它的含義是,選取足夠多的測試數據,使得判定表達式中的每個條件都取到各種可能的值,而且每個判定表達式也都取到各種可能的結果。
5.條件組合覆蓋
是更強的邏輯覆蓋標準,它要求選取足夠多的測試數據,使得每個判定表達式中條件的各種可能組合都至少出現一次。滿足條件組合覆蓋標準的測試數據,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標準。因此,條件組合覆蓋是前述幾種覆蓋標準中最強的。但是,滿足條件組合覆蓋標準的測試數據并不一定能使程序中的每條路徑都執行到。
4.點覆蓋
圖論中點覆蓋的定義如下:如果連通圖G的子圖G′是連通的,而且包含G的所有結點,則稱G′是G的點覆蓋。點覆蓋標準和語句覆蓋標準是相同的。
5.邊覆蓋和路徑覆蓋
圖論中邊覆蓋的定義是:如果連通圖G的子圖G″是連通的,而且包含G的所有邊,則稱G″是G的邊覆蓋。為了滿足邊覆蓋的測試標準,要求選取足夠多測試數據,使得程序執行路徑至少經過流圖中每條邊一次。通常邊覆蓋和判定覆蓋是一致的。
?路徑覆蓋的含義是,選取足夠多測試數據,使程序的每條可能路徑都至少執行一次(如果程序圖中有環,則要求每個環至少經過一次)。
(二)控制結構測試
1.基本路徑測試
是Tom McCabe提出的一種白盒測試技術。使用基本路徑測試設計測試用例時,首先計算程序的環形復雜度,并用該復雜度為指南定義執行路徑的基本集合,從該基本集合導出的測試用例可以保證程序中的每條語句至少執行一次,而且每個條件在執行時都將分別取真、假兩種值。
2.條件測試
條件測試方法著重測試程序中的每個條件。條件測試策略有兩個優點: ①容易度量條件的測試覆蓋率; ②程序內條件的測試覆蓋率可指導附加測試的設計。
條件測試的目的不僅是檢測程序條件中的錯誤,而且是檢測程序中的其他錯誤。如果程序P的測試集能有效地檢測P中條件的錯誤,則它很可能也可以有效地檢測P中的其他錯誤。
3.循環測試
循環測試是一種白盒測試技術,它專注于測試循環結構的有效性。在結構化的程序中通常只有3種循環,即簡單循環、串接循環和嵌套循環。