黑盒測試(又稱功能測試)把程序看作一個黑盒子,完全不考慮程序的內部結構和處理過程。黑盒測試是在程序接口進行的測試,只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能適當地接收輸入數據并產生正確的輸出信息,程序運行過程中能否保持外部信息(例如數據庫或文件)的完整性。
白盒測試(又稱結構測試)是把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結構和處理算法。這種方法按照程序內部的邏輯測試程序,檢測程序中的主要執行通路是否都能按預定要求正確工作。
任何工程產品(注意是任何工程產品)都可以使用以下兩種方法之一進行測試。
黑盒測試:已知產品的功能設計規格,可以進行測試證明每個實現了的功能是否符合要求。
白盒測試:已知產品的內部工作過程,可以通過測試證明每種內部操作是否符合設計規格要求,所有內部成分是否已經過檢查。
軟件的黑盒測試意味著測試要在軟件的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數據驅動測試。黑盒測試主要是為了發現以下幾類錯誤:
1、是否有不正確或遺漏的功能?
2、在接口上,輸入是否能正確的接受?能否輸出正確的結果?
3、是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?
4、性能上是否能夠滿足要求?
5、是否有初始化或終止性錯誤?
軟件的白盒測試是對軟件的過程性細節做細致的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試或邏輯驅動測試。白盒測試主要是想對程序模塊進行如下檢查:
1、對程序模塊的所有獨立的執行路徑至少測試一遍。
2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。
3、在循環的邊界和運行的界限內執行循環體。
4、測試內部數據結構的有效性,等等。
以上事實說明,軟件測試有一個致命的缺陷,即測試的不完全、不徹底性。由于任何程序只能進行少量(相對于窮舉的巨大數量而言)的有限的測試,在未發現錯誤時,不能說明程序中沒有錯誤。