一、白盒測試概念數據結構
白盒測試也稱結構測試或邏輯驅動測試,是一種測試用例設計方ide
法,它從程序內部邏輯結構及有關信息來設計和選擇測試用例,測試
對程序的邏輯路徑進行測試。 spa
二、白盒測試的主要目的 設計
保證一個模塊中的全部獨立路徑至少被執行一次; 3d
對全部的邏輯值均須要測試真、假兩個分支; blog
在上下邊界及可操做範圍內運行全部循環; 圖片
檢查內部數據結構以確保其有效性。 get
三、測試覆蓋標準it
爲了衡量測試的覆蓋程度,需創建一些標準。
測試覆蓋率能夠表示出測試的充分性,在測試分析報告中能夠做爲量化指標的依據,測試覆蓋率越高效果越好。
用於肯定測試所執行到的覆蓋項的百分比。測試覆蓋率包括功能點覆蓋率和邏輯覆蓋率:
功能點覆蓋率大體用於表示軟件已經實現的功能與軟件須要實現的功能之間的比例關係。邏輯覆蓋率指程序邏輯的覆蓋率,可分爲語句覆蓋、斷定覆蓋、條件覆蓋、斷定/條件覆蓋、組合覆蓋和路徑覆蓋。覆蓋標準從低到高分別是:語句覆蓋、斷定覆蓋、條件覆蓋、斷定/條件覆蓋、組合覆蓋、路徑覆蓋
四、白盒測試方法
(1)邏輯驅動測試
設計足夠多的測試用例,運行所測程序,知足某種測試覆蓋率要求。基本的有:
語句覆蓋
斷定覆蓋(也稱爲分支覆蓋)
條件覆蓋
斷定/條件覆蓋
條件組合覆蓋
(2)基本路徑測試
設計足夠多的測試用例,運行所測程序,要覆蓋程序中全部可能的路徑。這是最強的覆蓋準則。但在路徑數目很大時,真正作到徹底覆蓋是很困難的,必須把覆蓋路徑數目壓縮到必定限度。
語句覆蓋
優勢:可很直觀地從源代碼獲得測試用例,無須細分每條斷定表達式。
缺點:從上例可看出,語句覆蓋是很弱的,發現不了斷定中邏輯運算的錯誤,即它並非一種充分的檢驗方法。如:
PROCEDURE M(VAR A,B,X:REAL);
BEGIN
IF (A>1) AND (B=0) THEN X:=X/A;
IF (A=2) OR (X>1) THEN X:=X+1;
END.
A=2,B=0,X=3
1)若是第一個條件語句中的AND錯誤地寫成OR,這個測試用例不能發現這個錯誤;
2)如第三個條件語句中X>1誤寫成X>0,這個測試用例也不能暴露它;
3)沿着路徑abd執行時,X的值應該保持不變,若是這一方面有錯誤,測試數據也不能發現。
分支覆蓋(斷定覆蓋)
比「語句覆蓋」稍強的覆蓋標準,含義是:執行足夠的測試用例,使得程序中的每個分支至少都經過一次。
例1,
如設計兩個測試用例,使它們能經過路徑ace和abd,或者經過路徑acd和abe,就可達到「判定覆蓋」標準,爲此,能夠選擇輸入數據爲:
① A=3,B=0,X=1 (沿路徑acd執行);
② A=2,B=1,X=3(沿路徑abe執行)
針對語句覆蓋中不能檢測的錯,在分支覆蓋中:
① A=3,B=0,X=1 (沿路徑acd執行);
② A=2,B=1,X=3 (沿路徑abe執行)
1)如第一個條件語句中的AND錯寫成OR,則第二個測試用例能發現;
2)如第三個條件語句中X>1誤寫成X>0,第一個測試用例能暴露它;
3)沿着路徑abd執行時,X的值應保持不變,如這方面有錯,不能發現。 因此,「分支覆蓋」還很不夠。
以上僅考慮了兩出口的判斷,咱們還應把斷定覆蓋準則擴充到多出口判斷(如Case語句)的狀況。所以,斷定覆蓋更爲廣泛的含義應該是使得每個斷定得到每一種可能的結果至少一次。