軟件測試技術之: 白盒測試和黑盒測試
發表于:2016-06-02來源:C博客作者:好兒郎-志在四方點擊數:
標簽:
黑盒測試又叫功能測試、數據驅動測試或給予需求規格說明書的功能測試。這種測試注重于測試軟件的功能性需求。
白盒測試和黑盒
測試
目錄
1.
軟件測試基本分類...1
2.
測試方法...2
2.1 白盒測試...2
2.1.1 語句覆蓋...2
2.1.2 判定(分支)覆蓋...3
2.1.3 條件覆蓋...3
2.1.4 判定/條件覆蓋...4
2.1.5 多重條件覆蓋...5
2.1.6 路徑覆蓋...7
2.2 黑盒測試...7
2.2.1 等價劃分...7
2.2.2 邊界值分析...9
2.2.3 因果圖...10
2.2.4 錯誤猜測...10
1. 軟件測試基本分類
一般地,我們將軟件測試活動分為以下幾類:黑盒測試、白盒測試、靜態測試、動態測試、手動測試、自動測試等等。
黑盒測試
黑盒測試又叫
功能測試、數據驅動測試或給予
需求規格說明書的
功能測試。這種測試注重于測試軟件的功能性
需求。
采用這種測試方法,測試
工程師把測試對象看作一個黑盒子,不需要考慮程序內部的邏輯結構和特性,只需要依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。黑盒測試能更好更真實的從用戶角度來考察被測系統的功能性需求實現情況。在軟件測試的各個階段,如
單元測試、集成測試、
系統測試及確認測試等階段都發揮著重要作用。尤其在
系統測試和確認測試中,其作用是其他測試方法無法取代的。
白盒測試
白盒測試又稱結構測試、邏輯驅動測試或基于程序代碼內部結構的測試。此時,需要深入考察程序代碼的內部結構、邏輯設計等等。白盒測試需要
測試工程師具備很深的軟件
開發工地,精通相應的
開發語言,一般的軟件
測試工程師難以勝任該工作。
靜態測試
靜態測試,顧名思義,就是靜態的、不執行被測對象程序代碼而尋找
缺陷的過程。通俗地講,靜態測試就是用眼睛看,閱讀程序代碼,文檔
資料等,與需求規格說明書中的需求進行比較,找出程序代碼中設計的不合理,以及文檔
資料中的錯誤。
在進行代碼的靜態測試時,可以采用一些代碼走查的工具,如 QA
C++、
C++ Test等。
動態測試
動態測試即為實際的執行被測對象的程序代碼,輸入事先設計好的
測試用例,檢查程序代碼運行的結果與
測試用例中設計的預期結果之間是否差異,判定實際結果與預期結果是否一致,從而檢驗程序的正確性、可靠性和有效性,并分析系統運行效率和健壯性等
性能狀況。
動態測試由四部分組成:設計測試用例、執行測試用例、分析比較輸出結果、輸出測試報告。
動態測試結合使用白盒測試和黑盒測試。
2. 測試方法
對于白盒測試,常用的測試方法有:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、多重條件覆蓋等等。黑盒測試較為知名的測試方法有:等價類劃分、邊界值分析、因果圖分析、錯誤猜測等。本章將對這些測試方法進行一些簡單的介紹。
2.1 白盒測試
白盒測試關注的是測試用例執行的程度或覆蓋程序邏輯結構(源代碼) 的程度。如完全的白盒測試是將程序中每條路徑都執行到,然而對一個帶有循環的程序來說,完全的路徑測試并不切合實際。
圖 2?1被測試的小程序
2.1.1 語句覆蓋
如果完全從路徑測試中跳出來看,那么有價值的目標似乎就是將程序中的每條語句至少執行一次。遺憾的是,這恰是合理的白盒測試中較弱的準則。圖2?1描述了這種思想。假設圖2?1 代表了一個將要進行測試的小程序,其等價的代碼段如下:
Public void foo(int a, int b, int x)
{
if (a > 1 &&b == 0)
{
x = x/ a;
}
if (a == 2 || x > 1)
{
X = x +1;
}
}
通過編寫單個的測試用例遍歷程序路徑 ace,可以執行到每一條語句。也就是說,通過在點 a 處設置 A=2,B=0,X=3,每條語句將被執行一次(實際上,X 可被賦任何值)。
遺憾的是,這個準則相當不足。舉例來說,也許第一個判斷應是“或”,而不是 “與” 。 如果這樣, 這個錯誤就會發現不到。另外, 可能第二個判斷應該寫成 “X>0” ,這個錯誤也不會被發現。還有,程序中存在一條 X 未發生改變的路徑(路徑 abd),如果這是個錯誤,它也不會被發現。換句話說,語句覆蓋這條準則有很大的不足,以至于它通常沒有什么用處。
原文轉自:http://blog.csdn.net/rl529014/article/details/51556707#t1