一、什麼是白盒測試
二、白盒測試vs黑盒測試
一般軟體開發人員和測試人員對白盒測試和黑盒測試的感念都有一定的認識,但認為是編**所做的測試是白盒測試,黑盒測試不用編寫**,這其實是一種誤解。
任何工程產品(注意是任何工程產品)都可以使用以下兩種方法之一進行測試。
黑盒測試:已知產品的功能設計規格,可以進行測試證明每個實現了的功能是否符合要求。
白盒測試:已知產品的內部工作過程,可以通過測試證明每種內部操作是否符合設計規格要求,所有內部成分是否以經過檢查。
軟體的黑盒測試意味著測試要在軟體的介面處進行。這種方法是把測試物件看做乙個黑盒子,
測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的
功能是否符合它的功能說明。因此黑盒測試又叫功能測試或資料驅動測試。
軟體的白盒測試是對軟體的過程性細節做細緻的檢查。這種方法是把測試物件看做乙個開啟的盒子,
它允許測試人員利用程式內部的邏輯結構及有關資訊,設計或選擇測試用例,對程式所有邏輯路徑進行測試。
通過在不同點檢查程式狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試或邏輯驅動測試。
三、白盒測試的方法:總體上分為靜態方法和動態方法兩大類。
所謂語句覆蓋:就是設計若干個測試用例,執行被測程式,使得每一可執行語句至少執行一次。這裡的「若干個」,意味著使用測試用例越少越好。語句覆蓋率的公式可以表示如下:語句覆蓋率=被評價到的語句數量/可執行的語句總數x 100%
判定覆蓋:使設計的測試用例保證程式中每個判斷的每個取值分支(t or f)至少經歷一次
[優點]:判定覆蓋具有比語句覆蓋更強的測試能力,而且具有和語句覆蓋一樣的簡單性,無需細分每個判定就可以得到測試用例。
[缺點]:往往大部分的判定語句是由多個邏輯條件組合而成(如,判定語句中包含and、or、case),若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。
例如:int a,b;
if(a || b)
執行語句1
else
執行語句2
要達到這段程式的判斷覆蓋,我們採用測試用例:1)a = true , b = true ;2)a = flase, b = flase
3. 條件覆蓋:條件覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,判定中每個條件的所有可能結果至少出現一次,但未必能覆蓋全部分支條件覆蓋要檢查每個符合謂詞的子表示式值為真和假兩種情況,要獨立衡量每個子表示式的結果,以確保每個子表示式的值為真和假兩種情況都被測試到。
4. 判定條件覆蓋:判定-條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷的所有可能判斷結果至少執行,即要求各個判斷的所有可能的條件取值組合至少執行一次。
5. 條件組合覆蓋:在白盒測試法中,選擇足夠的測試用例,使所有判定中各條件判斷結果的所有組合至少出現一次,滿足這種覆蓋標準成為條件組合覆蓋。
6. 路徑覆蓋:是每條可能執行到的路徑至少執行一次;
舉例:
if a and b then action1
if c or d then action2
語句覆蓋最弱,只需要讓程式中的語句都執行一遍即可。上例中只需設計測試用例使得a=true b=true c=true 即可。
分支覆蓋又稱判定覆蓋:使得程式中每個判斷的取真分支和取假分支至少經歷一次,即判斷的真假均曾被滿足。上例需要設計測試用例使其分別滿足下列條件即可(1)a=true,b=true,c=true,d=false(2)a=true,b=false,c=false,d=false。
條件覆蓋:要使得每個判斷中的每個條件的可能取值至少滿足一次。上例中第乙個判斷應考慮到a=true,a=false,b=true,b=false第二個判斷應考慮到c=true,c=false,d=true,d=false,所以上例中可以設計測試用例滿足下列條件(1)a=true,b=true,c=true,d=true(2)a=false,b=false,c=false,d=false。
路徑覆蓋:要求覆蓋程式中所有可能的路徑。所以可以設計測試用例滿足下列條件(1)a=true,b=true,c=true,d=true(2)a=false,b=false,c=false,d=false(3)a=true,b=true,c=false,d=false(4)a=false,b=false,c=true,d=true。
軟體測試 白盒測試
1 白盒測試的概述 由於邏輯錯誤和不正確假設與一條程式路徑被執行的可能性成反比。由於我們經常相信某邏輯路徑不可能被執行,而事實上,它可能在正常的情況下被執行。由於 中的筆誤是隨機且無法杜絕的,因此我們要進行白盒測試。白盒測試又稱結構測試,透明盒測試 邏輯驅動測試或基於 的測試。白盒測試是一種測試用例...
軟體測試 白盒測試
白盒測試分為 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋 以下程式為例 語句覆蓋 顧名思義 把所有語句都都走一遍 按上圖 測試路徑 p1 a c e 判定覆蓋把所有判定都走一遍 按上圖 測試路徑 答案不唯一 p1 a c e p2 a b d 條件覆蓋把所有條件都走一遍 按上...
軟體測試學習6 動態白盒測試
動態白盒測試 動態白盒測試是指利用檢視 功能和實現方式得到的資訊來確定哪些需要測試 哪些不需要測試 如何開展測試。動態白盒測試的另乙個常用名詞是結構化測試。因為軟體測試員可以檢視並使用 的內部結構。從而設計和執行測試。動態白盒測試包括以下4個部分 1.直接測試底層函式 過程 子程式和庫。2.以完整程...