測試員所需知識:黑盒測試、白盒測試、灰盒測試之間的區別

這篇文章為大家解釋一下黑盒測試、白盒測試和灰盒測試三者之間的區別,下面會以一個現實例子讓大家更容易理解。

黑盒測試

軟體的黑盒測試意思指的是在軟體的接口處進行測試,這種測試方法實際是把測試對象看成是一個拆不開的物件,測試人員不清楚物件裏程序內部邏輯結構和內部特性,只能依據程序的說明書,檢查程序的功能是否符合說明書所述的輸入條件和輸出結果。因此,黑盒測試我們又可以稱為功能測試或數據驅動測試

例子說明:

家裏有一個全自動製麵包機,只需準備好材料和放入機器內,便可以等待製作,但等待期間不知道內部製作過程,只知道正確的結果應該是完成可以食用的麵包。


白盒測試

軟體的白盒測試意思指的是對軟體的過程細節做詳細細緻的檢查,這種測試方法實際是把測試對象看成是一個拆散了的物件,測試人員把整個物件完全拆開,可以看到裏面程序內部邏輯結構和所有信息,針對內部結構進行設計或選擇測試用例,對程序所有邏輯進行測試,通過在各種不同的測試用例檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此,白盒測試我們又可以稱為結構測試或邏輯驅動測試

例子說明:

家裏有一個製麵包機,在製作的過程中,每一個步驟都要人手去監控與操作,製作員需要注意每一個步驟的細節,了解每一個步驟在機器內部是如何完成的,檢查步驟的正確性,到最後製作出一個完成可以食用的麵包。


灰盒測試

軟體的灰盒測試是介於白盒與黑盒測試之間的一種方式,灰盒測試除了關注輸出對於輸入的正確性外,同時也關注內部表現,但關注的程度不像白盒測試那樣詳細和完整,只是通過一些表征性的現象和事件來判斷內部的運行狀態,比如說測試的結果有時候是正確的,但內部處理邏輯其實已經出現錯誤。這種情況發生的情況非常多,但如果我們每次都使用白盒測試,其實很浪費時間和效率很低,所以很多時候我們都會選擇灰盒測試。


三種測試方式之比較

灰盒測試與黑盒測試的分別

如果測試對象軟體包含多個模塊,當使用黑盒測試時,只需要關注整個軟體系統的執行結果是否乎合預期,無需關心軟體內部各個模塊之間如何溝通。而當使用灰盒測試時,就需要關注各模塊之間的交互,各模塊的輸入和輸出是否達到預期,這就是灰盒與黑盒測試的分別。

灰盒測試與白盒測試的分別

上面講述了灰盒測試需要關注模塊的輸入條件和輸出結果,但還是不需要關心模塊內部的實現細節。對於軟體系統的內部模塊來說,灰盒測試對內部模塊當成一個黑盒來看待。而白盒測試不同的是,還需要深入了解模塊內部的細節,這就是灰盒與白盒測試的分別。

黑盒測試與白盒測試的分別

  優點 缺點
白盒測試

1.能仔細考慮軟體的實現
2.可檢測代碼中的每條分支和路徑
3.揭示隱藏在代碼中的錯誤
4.對代碼的測試比較徹底

1.測試時間長
2.無法檢測代碼中遺漏的路徑和敏感性錯誤
3.昂貴
4.不驗証規格的正確性

黑盒測試 1.對於子系統甚至系統,效率比較高
2.測試人員不需要了解實現細節,包括特定的程式語言
3.測試人員和編程人員彼此獨立
4.以用戶的角度測試,比較容易理解和接受
5.有助於暴露規格的不一致或有歧義的問題
6.測試用例可以在規格完成後馬上進行

1.只有一小部分輸入被測試到,要測試每個可能的輸入幾乎不可能
2.沒有清晰、簡明的規格,測試用例很難設計
3.如果測試人員不被告知開發人員已經執行過的用例,在測試數據上會存在不必要的重複
4.有很多程序路徑沒有被測試到
5.不能直接針對特定程序段測試,而這些程序段可能很複雜,有可能隱藏更多的問題
6.大部分和研究相關的測試都是直接針對白盒測試的

如何選擇測試方法呢?小篇建議要先想想測試需要達到甚麼目的,而再需要項目成員根據實際所需情況去制定。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

驗證碼 * Time limit is exhausted. Please reload CAPTCHA.

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料