白盒測試,有時候又稱為基于結構的測試,是基于測試對象的代碼、數據,或者系統架構而進行測試的一種技術,它關注的是測試對象的內部結構。白盒測試技術的共同特點有:
測試對象的內部結構信息是設計測試用例的依據,例如:程序代碼和設計架構。
測試對象的覆蓋率可以通過已有的測試用例來測量,并且可以系統的增加測試用例來提高覆蓋率。
滿足白盒測試的相關測試準則,并不意味整個測試已完成,而只能說明測試對象已不需要基于此技術再進行額外的測試,但是可以繼續應用其他測試技術。
在測試過程中,測試人員可以根據測試強度的不同,應用各種不同的白盒測試設計。常見的白盒測試技術包括:
語句測試(Statement testing),指的是設計若干測試用例來執行程序代碼中的語句。語句覆蓋指的是被執行的語句數與所有可能的語句數之間的比值,例如:有些項目要求程序代碼達到100%的語句覆蓋。
判定測試(Decision testing)是一種針對判定結果設計測試用例的技術。判定覆蓋指的是執行測試套件能夠覆蓋的判定結果的百分比,即被執行的判定和總的判定的比值。在低級別的測試中,判定覆蓋常??梢宰鳛槌隹跍蕜t之一,例如:測試出口準則可以要求測試對象達到100%的判定覆蓋。100%的判定覆蓋可以保證100%的語句覆蓋。
條件測試(Condition testing)指的是設計若干測試用例來執行不同的條件結果。條件覆蓋指的是執行測試套件能夠覆蓋到原子條件的百分比,即被執行的原子條件和總的原子條件的比值。100%的條件覆蓋要求測試覆蓋到每一個原子條件語句分別取值為真和假的情況。需要注意的是,條件覆蓋并不比判定覆蓋更強。
判定條件測試(Decision condition testing)指的是設計若干測試用例來執行條件結果和判定結果。判定條件覆蓋指的是執行測試用例套件能夠覆蓋的條件結果和判定結果的百分比。100% 的判定條件覆蓋意味著100%的判定覆蓋和100%的條件覆蓋。
條件決定測試(Condition determination testing)是對能夠獨立影響判定結果的單獨條件的測試(測試對象中的每個條件必須產生所有可能的輸出結果至少一次,并且每個判定中的每一個條件必須能夠獨立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,就可以使判定結果發生改變)。條件決定覆蓋指的是執行測試套件覆蓋到的能夠獨立影響判定結果的單個條件的百分比。100%的條件決定覆蓋意味著100%的判定條件覆蓋。
條件組合測試(Multiple condition testing,也稱為Condition combination testing)是指設計測試用例覆蓋每條語句中的原子條件所有可能的取值結果組合(即每個判定中的所有可能的原子條件取值組合至少執行一次)。條件組合覆蓋指的是測試套件覆蓋每條語句內的所有原子條件取值結果組合的百分比。100%條件組合覆蓋意味著100%條件決定覆蓋。
路徑測試(Path testing)是指設計測試用例用來執行不同的路徑。路徑覆蓋指的是測試套件執行的路徑占總的路徑的百分比。100%的路徑覆蓋可以確保100%的語句覆蓋和判定覆蓋。
根據測試對象的復雜程度和不同的覆蓋率的要求,可以選擇和應用不同的白盒測試設計技術。根據源代碼的特點和選擇的白盒測試設計技術,就可以定義測試的強度。圖1是不同白盒測試設計技術的測試覆蓋率強度關系。
原文轉自:http://www.anti-gravitydesign.com