白盒測試

1、白盒測試概念

白盒測試也稱結構測試或邏輯驅動測試,是一種測試用例設計方

法,它從程序內部邏輯結構及有關信息來設計和選擇測試用例,

對程序的邏輯路徑進行測試。 

2、白盒測試的主要目的 

保證一個模塊中的所有獨立路徑至少被執行一次; 

對所有的邏輯值均需要測試真、假兩個分支; 

在上下邊界及可操作範圍內運行所有循環; 

檢查內部數據結構以確保其有效性。 

3、測試覆蓋標準

爲了衡量測試的覆蓋程度,需建立一些標準。 

測試覆蓋率可以表示出測試的充分性,在測試分析報告中可以作爲量化指標的依據,測試覆蓋率越高效果越好。

用於確定測試所執行到的覆蓋項的百分比。測試覆蓋率包括功能點覆蓋率和邏輯覆蓋率: 

功能點覆蓋率大致用於表示軟件已經實現的功能與軟件需要實現的功能之間的比例關係。邏輯覆蓋率指程序邏輯的覆蓋率,可分爲語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。覆蓋標準從低到高分別是:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋、路徑覆蓋

wKiom1QZhl7QyH9bAAG5cDaSwfc290.jpg

4、白盒測試方法

(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,

wKiom1QZjdHQAzXoAACOIVRquys898.jpg

如設計兩個測試用例,使它們能通過路徑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語句)的情況。因此,判定覆蓋更爲廣泛的含義應該是使得每一個判定獲得每一種可能的結果至少一次。


wKiom1QZj2CASBHaAAGjXfitt5c245.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章