知友好,對於黑盒測試和白盒測試,其實它們都是按照測試技術劃分出來的分類。

一、黑白盒測試的分類

我們先來看黑盒測試,通過軟體的外部表現來發現其缺陷和錯誤。

黑盒測試法把測試對象看成一個黑盒子,完全不考慮程序內部結構和處理過程。

黑盒測試是在程序界面處進行測試,它只是檢查程序是否按照需求規格說明書的規定正常實現。

黑盒測試:

把測試對象當作看不見內部的黑盒,在完全不考慮程序內部結構和處理過程的情況下,測試者僅依據程序功能的需求規範考慮,確定測試用例和推斷測試結果的正確性。

白盒測試:

通過對程序內部結構的分析、檢測來尋找問題。白盒測試可以把程序看成裝在一個透明的盒子裏,檢查是否所有的結構及路徑都是正確的,檢查軟體內部動作是否按照設計說明的規定正常進行。白盒測試又稱結構測試。

二、白盒測試方法劃分

1.靜態白盒測試:

  • 代碼評審:通過閱讀代碼來檢查源代碼與編碼標準的符合性以及代碼質量的活動。
  • 代碼檢查:通過閱讀代碼的方式,檢查軟體設計的正確性

2.動態白盒測試

  • 邏輯覆蓋:通過對程序邏輯結構的遍歷實現程序的覆蓋
  • 基本路徑覆蓋(從入口到出口中可能走的所有路徑)

三、工作中對於黑盒測試和白盒測試的選擇

  1. 黑盒測試方法選擇的綜合策略
  • 首先進行等價類劃分
  • 在任何情況下都必須使用邊界值分析方法
  • 可以用錯誤推測法追加一些測試用例
  • 對照程序邏輯,檢查已設計出的測試用例的邏輯覆蓋程度。如果沒有達到要求的覆蓋標準,應當再補充足夠的測試用例
  • 如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法和判定表驅動法
  • 對於參數配置類的軟體,要用正交試驗法選擇較少的組合方式達到最佳效果
  • 功能圖法也是很好的測試用例設計方法,我們可以通過不同時期條件的有效性設計不同的測試數據
  • 對於業務流清晰的系統,可以利用場景法貫穿整個測試案例過程,在案例中綜合使用各種測試方法

2. 白盒測試方法選擇的綜合策略

  • 在測試中,應盡量先用工具進行靜態結構分析。
  • 測試中可採取先靜態後動態的組合方式
  • 先進行靜態結構分析、代碼檢查和靜態質量度量
  • 再進行覆蓋率測試

如果知友對這部分內容感興趣,可以持續關注小編的賬號,除此之外,小編還錄製了不少這方面的技術視頻,知友如果有需要,可以私聊本小編獲取哦!


一看就懂,一學就會。直接上圖!

這個圖呢,我們就可以把整個程序,當做一個黑盒子,那麼它的特點是什麼呢?就是看不到程序裡面實現的代碼跟邏輯。其實這個就跟用戶去使用這個軟體是一樣的道理。

那麼白盒就是我就直接可以看到裡面的代碼邏輯,然後根據裡面的代碼邏輯然後去選取對應的數據,來對它進行一個測試,去檢查它的結果是不是正確。因為像這種白盒測試的話呢,我們又把它叫做什麼呢?又把它叫做代碼測試,或者叫做單元測試。


其實黑盒測試和白盒測試只是概念,用來區分不同的測試階段所作的工作的。亦或者是測試工作的分類,他們是一系列測試的總稱。

打個比方說吧,一個收音機,電路板、天線、外殼、喇叭等等組成,在你組裝過程中總要試試各個元件正不正常,正常了才能組裝,這就屬於白盒測試。組裝完成後總要檢查下質量行不行,就需要裝上電池,打開收音機看看能不能用,音量鍵行不行,調頻鍵行不行等等,這就是黑盒測試。


黑盒測試:

黑盒測試是指不基於內部設計和代碼的任何知識,而基於需求和功能性的測試,黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序介面進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息,並且保持外部信息(如資料庫或文件)的完整性。

「黑盒」法著眼於程序外部結構、不考慮內部邏輯結構、針對軟體界面和軟體功能進行測試。「黑盒」法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。

黑盒測試的檢查點一般包括:

  • 根據需求規格說明書,檢查是否有不正確或遺漏了的功能?是否忽略了用戶的隱含需求?
  • 在軟體外部介面上,輸入能否正確地被接受?能否輸出正確的結果?
  • 是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?
  • 性能上是否能夠滿足要求?
  • 易用性和其他功能特性是否能夠得到滿足?
  • 是否有初始化或終止性缺陷?是否會出現用戶不能接受的缺陷?、

白盒測試:

白盒測試也稱結構測試或邏輯驅動測試,是指基於一個應用代碼的內部邏輯知識,即基於覆蓋全部代碼、分支、路徑、條件的測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能,白盒測試的主要方法有邏輯驅動、基路測試等,主要用於軟體驗證。

「白盒」法全面瞭解程序內部邏輯結構、對所有邏輯路徑進行測試。「白盒」法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字。但即使每條路徑都測試了仍然可能有錯誤。

第一:窮舉路徑測試決不能查出程序違反了設計規範,即程序本身是個錯誤的程序。

第二:窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。

第三:窮舉路徑測試可能發現不了一些與數據相關的錯誤。

執行白盒測試時,一般要:

  • 對程序模塊的所有獨立的執行路徑至少測試一次;
  • 對所有的邏輯判定,取「真」與取「假」的兩種情況都能至少測試一次;
  • 在循環的邊界和運行界限內執行循環體;
  • 測試內部數據結構的有效性,等等。


白盒測試:

是指實際運行被測程序,通過程序的源代碼進行測試而不使用用戶界面。這種類型的測試需要從代碼句法發現內部代碼在演算法、溢出、路徑和條件等方面的缺點或者錯誤,進而加以修正。

黑盒測試:

又稱功能測試、數據驅動測試或基於規格說明的測試,是通過使用整個軟體或某種軟體功能來嚴格地測試,,而並沒有通過檢查程序的源代碼,或者很清楚地瞭解該軟體的源代碼程序具體是怎樣設計的。測試人員通過輸入他們的數據看輸出的結果,從而瞭解軟體怎樣工作。應該更適合測試網頁遊戲。

區別一:從定義上

白盒測試需要從代碼句法發現內部代碼在演算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。而黑盒測試著重測試軟體功能,它並不涉及程序的內部結構和內容特性。黑盒測試並不能取代白盒測試,它與白盒是互補的測試方法,它很可能發現白盒測試不易發現的其他類型錯誤。

區別二:從測試目的上

黑盒測試的目的是檢測是否有不正確或遺漏的功能;數據或者參數上,輸入能否正確接收;是否有數據結構錯誤或外部信息訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。而白盒測試的目的是通過在不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致,而不顧它的功能。

區別三:檢測方式上

白盒測試是窮舉路徑測試,黑盒測試是窮舉輸入測試,這兩種方法是基於完全不同的觀點,反應了事物的兩個極端,它們各有側重和優勢,但不能彼此替代。在現代的測試理念中,這兩種測試方法不是截然分開的,而是交叉使用。

擴展資料

白盒測試的優點:

1.能仔細考慮軟體的實現

2.可檢測代碼中的每條分支和路徑

3.揭示隱藏在代碼中的錯誤

4.對代碼的測試比較徹底

白盒測試的缺點:

1.昂貴

2.無法檢測代碼中遺漏的路徑和數據敏感性錯誤

3.不驗證規格的正確性

黑盒測試的優點:

1.對於子系統甚至系統效率要比白盒測試高

2.測試人員不需要了解實現的細節(特定編程語言)

3.測試人員和編程人員彼此獨立

4.從用戶的角度進行測試很容易理解和接受

5.有助於暴露規格的不一致或有歧義的問題

6.測試用例可以在規格完成後馬上進行

黑盒測試的缺點:

1.只有一小部分輸入被測試到,要測試每個可能的輸入幾乎不可能。

2.沒有清晰、簡明的規格,測試用例很難設計。

3.如果測試人員不被告知開發人員已經執行過的用例,在測試數據上會存在不必要的重複。

4.有很多程序路徑沒有被測試到。

5.不能直接針對特定程序段測試,而這些程序段可能很複雜,有可能隱藏更多的問題。

6.大部分和研究相關的測試都是直接針對白盒測試的。


推薦閱讀:
相關文章