淺析黑盒測試和白盒測試的定義及區別


一、軟件測試方法:

  白盒測試、黑盒測試、灰盒測試、靜態測試、動態測試

1、白盒測試

  是一種測試用例設計方法,在這里盒子指的是被測試的軟件。白盒,顧名思義即盒子是可視的,你可以清楚盒子內部的東西以及里面是如何運作的,因此白盒測試需要你對系統內部的結構和工作原理有一個清楚的了解,並且基於這個知識來設計你的用例。

  白盒測試技術一般可被分為:靜態分析和動態分析兩類技術。

  靜態分析主要有:控制流分析技術、數據流分析技術、信息流分析技術。

  動態分析主要有:邏輯覆蓋率測試(分支測試、路徑測試等),程序插裝等。

  白盒測試優點:迫使測試人員去仔細的思考軟件的實現;可以檢測代碼中的每條分支和路徑;揭示隱藏在代碼中的錯誤;對代碼的測試比較徹底;最優化。

  白盒測試缺點:昂貴;無法檢測代碼中遺漏的路徑和數據敏感性錯誤;不驗證規格的正確性。

2、黑盒測試 - 又叫功能測試

  這是因為在黑盒測試中主要關注被測軟件的功能實現,而不是內部邏輯。

  在黑盒測試中,被測對象的內部結構,運作情況對測試人員是不可見的,測試人員對被測產品的驗證主要是根據其規格,驗證其與規格的一致性。

  在絕大多數沒有用戶參與的黑盒測試中,最常見的測試有:功能性測試、容量測試、安全性測試、負載測試、恢復性測試、標桿測試、穩定性測試、可靠性測試等。

3、灰盒測試

  白盒測試和黑盒測試往往不是決然分開的,一般在白盒測試中交叉使用黑盒測試的方法,在黑盒測試中交叉使用白盒測試的方法。

  灰盒測試就是這類界於白盒測試和黑盒測試之間的測試。

  最常見的灰盒測試是集成測試。

4、靜態測試:是一種不通過執行程序而進行測試的技術。它的關鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。

5、動態測試:包含了程序在受控的環境下使用特定的期望結果進行正式的運行。它顯示了一個系統在檢查狀態下是正確還是不正確。

  單元測試屬於白盒測試范疇;集成測試屬於灰盒測試范疇;系統測試屬於黑盒測試范疇。

二、黑盒測試及常用設計方法

  它是根據軟件需求和規范創建測試場景/案例,按照需求文檔里面定義的行為及規范進行輸入並且檢查輸出的測試。

  測試人員在不查看內部代碼結構的情況下,評估被測軟件的功能。它可以應用於軟件測試的各個層次,如單元、集成、系統和驗收測試。

  因為不查看源碼,所以測試人員只對應用程序的功能部分執行測試,以確保軟件的行為符合預期,所以是基於行為的測試

  黑盒測試的常用的一些技術:

1、等價划分:等價划分也稱為等價類划分法。在等價划分法中,軟件的輸入被划分為期望表現出相似行為的組,因此它們很可能以相同的方式被輸入。因此,從每個組中選擇一個輸入來設計測試用例。

2、邊界值分析:邊界值分析(BVA)是在測試有效和無效分區的邊界值的基礎上進行的。每個等價分區邊緣的行為比分區內的行為更加容易出現缺陷,因此邊界是測試可能產生缺陷的區域。

3、決策表:決策表又稱因果表。這種測試技術適用於輸入之間具有邏輯關系的功能。在決策表技術中,我們處理輸入的組合。為了識別決策表的測試用例,我們可以查看它的條件和輸出。

4、狀態轉換:使用狀態轉換測試,我們從需要測試的不同系統轉換的應用程序中選擇測試用例。當應用程序為相同的輸入提供不同的輸出時,我們可以應用這個方法,這取決於在以前的狀態中發生了什么。

三、白盒測試及常用設計方法

  白盒測試是基於應用程序內部的代碼結構。在白盒測試中,系統的內部視角以及編程技巧被用來設計測試用例,這種測試通常在單元級別進行。

  白盒測試的常用的一些技術:

1、語句覆蓋率:它是一種常用的測試覆蓋方式,它衡量被測代碼中每個語句是否被執行到了。當然前提條件是可執行代碼,類似的注釋,頭文件,空行,等是無法被覆蓋的。通常它考慮的是代碼覆蓋的行數,而不考慮其內部的邏輯處理,所以測試效果不太明顯。

int divide(int a, int b){ return a / b; } 假設我們的測試用例是:TeseCase: a = 10, b = 5 那么它的語句覆蓋率是100%,但是除零的問題卻沒有表現出來。所以我們引入了其他的測試覆蓋率

2、分支覆蓋率:又稱判定覆蓋率,它是指源碼中每個判斷的取真分支和取假分支至少經歷一次,即判斷的真假均曾被滿足。

3、路徑覆蓋率:它包含所有可能的控制路徑,在路徑覆蓋技術中取零、一次和多個(理想,最大)項的所有循環路徑,基於程序設計的邏輯復雜性度量來准備測試用例。所以可以認為是分支覆蓋和語句覆蓋的集合。

四、黑盒與百盒測試的區別

1、測試方式不同

(1)黑盒測試:功能測試,是通過測試來檢測每個功能是否能正常使用

(2)白盒測試:俗稱:結構測試\透明盒測試\邏輯驅動測試\基於代碼的測試

2、測試目的不同

(1)黑盒測試:把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構盒特性的情況下,在程序接口進行測試,只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息

(2)白盒測試:通過檢查軟件內部的邏輯結構,對軟件中的邏輯路徑進行覆蓋測試。在程序不同地方設立監測點,檢查程序的狀態,以確定實際運行狀態與預期狀態是否一致。

3、測試原則不同

(1)黑盒測試:以用戶角度,從輸入數據與輸出數據的對應關系出發進行測試的。很明顯,如果外部特性本身設計有問題或規格說明的規定有誤,用黑盒測試方法是發現不了的。

(2)白盒測試:一個模塊種的所有獨立路徑至少被測一次。所有邏輯值均需測試true和false兩種情況

4、總結:

  黑盒測試和白盒測試,這兩者之間的區別還是挺大的:

  首先,黑盒測試最主要就是測試軟件方面的功能,然后它並不能完全代替了白盒測試,只能說是互補的測試方式,而且在測試的過程中還有可能會發現白盒測試之后其他不是很容易發生類型的錯誤。

  另外,白盒測試最主要就是測試程序代碼邏輯,可是黑盒測試卻不同,它針對的就是程序展現出來之后提供用戶的功能。

  簡單來說,白盒測試最主要測試的就是后台程序,然后黑盒測試最主要測試的就是前台展示的功能,它們都有着屬於自身的作用,不能混為一談。

  概括來說,黑盒測試和白盒測試的側重點是不一樣的。黑盒更關注的是軟件實現的功能是否按照需求文檔來,而白盒測試更加關注程序內部的邏輯是不是正確。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM