這篇文章為大家解釋一下黑盒測試、白盒測試和灰盒測試三者之間的區別,下面會以一個現實例子讓大家更容易理解。
黑盒測試
軟體的黑盒測試意思指的是在軟體的接口處進行測試,這種測試方法實際是把測試對象看成是一個拆不開的物件,測試人員不清楚物件裏程序內部邏輯結構和內部特性,只能依據程序的說明書,檢查程序的功能是否符合說明書所述的輸入條件和輸出結果。因此,黑盒測試我們又可以稱為功能測試或數據驅動測試。
例子說明:
家裏有一個全自動製麵包機,只需準備好材料和放入機器內,便可以等待製作,但等待期間不知道內部製作過程,只知道正確的結果應該是完成可以食用的麵包。
白盒測試
軟體的白盒測試意思指的是對軟體的過程細節做詳細細緻的檢查,這種測試方法實際是把測試對象看成是一個拆散了的物件,測試人員把整個物件完全拆開,可以看到裏面程序內部邏輯結構和所有信息,針對內部結構進行設計或選擇測試用例,對程序所有邏輯進行測試,通過在各種不同的測試用例檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此,白盒測試我們又可以稱為結構測試或邏輯驅動測試。
例子說明:
家裏有一個製麵包機,在製作的過程中,每一個步驟都要人手去監控與操作,製作員需要注意每一個步驟的細節,了解每一個步驟在機器內部是如何完成的,檢查步驟的正確性,到最後製作出一個完成可以食用的麵包。
灰盒測試
軟體的灰盒測試是介於白盒與黑盒測試之間的一種方式,灰盒測試除了關注輸出對於輸入的正確性外,同時也關注內部表現,但關注的程度不像白盒測試那樣詳細和完整,只是通過一些表征性的現象和事件來判斷內部的運行狀態,比如說測試的結果有時候是正確的,但內部處理邏輯其實已經出現錯誤。這種情況發生的情況非常多,但如果我們每次都使用白盒測試,其實很浪費時間和效率很低,所以很多時候我們都會選擇灰盒測試。
三種測試方式之比較
灰盒測試與黑盒測試的分別
如果測試對象軟體包含多個模塊,當使用黑盒測試時,只需要關注整個軟體系統的執行結果是否乎合預期,無需關心軟體內部各個模塊之間如何溝通。而當使用灰盒測試時,就需要關注各模塊之間的交互,各模塊的輸入和輸出是否達到預期,這就是灰盒與黑盒測試的分別。
灰盒測試與白盒測試的分別
上面講述了灰盒測試需要關注模塊的輸入條件和輸出結果,但還是不需要關心模塊內部的實現細節。對於軟體系統的內部模塊來說,灰盒測試對內部模塊當成一個黑盒來看待。而白盒測試不同的是,還需要深入了解模塊內部的細節,這就是灰盒與白盒測試的分別。
黑盒測試與白盒測試的分別
優點 | 缺點 | |
白盒測試 |
1.能仔細考慮軟體的實現 |
1.測試時間長 |
黑盒測試 | 1.對於子系統甚至系統,效率比較高 2.測試人員不需要了解實現細節,包括特定的程式語言 3.測試人員和編程人員彼此獨立 4.以用戶的角度測試,比較容易理解和接受 5.有助於暴露規格的不一致或有歧義的問題 6.測試用例可以在規格完成後馬上進行 |
1.只有一小部分輸入被測試到,要測試每個可能的輸入幾乎不可能 |
如何選擇測試方法呢?小篇建議要先想想測試需要達到甚麼目的,而再需要項目成員根據實際所需情況去制定。