張瑋
摘 要:白盒測試和黑盒測試都是軟件測試設計的方法。黑盒測試把系統理解為一個“內部不可見的盒子”,因此不需要明白它的內部結構。黑盒測試一般關注的是對功能需求的測試。白盒測試設計允許你觀察“盒子”內部,讓你了解其內部結構和運作原理,并使用對這些知識的了解來指導測試用例的設計。為了完全測試一個軟件,不可或缺任何一種測試。
關鍵詞:軟件測試;白盒測試;黑盒測試
軟件測試是使用人工或者自動手段來運行或測試某個系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。軟件測試通常是在軟件投入生產性運行之前進行的,它是對軟件需求分析、設計規格說明和編碼的最終復審,是軟件質量控制的關鍵。在軟件測試中有兩大基本測試方法:白盒測試和黑盒測試。在傳統的軟件測試活動中基本上都可以找到這兩類方法。
1 白盒測試
1.1 什么是白盒測試
白盒測試又叫做玻璃盒測試、透明盒測試、開放盒測試等。在這里,盒子指的是需要被測試的軟件,白盒,顧名思義即盒子是可視的,你清楚盒子內部的東西以及里面是如何運作的。因此,白盒測試需要對系統內部的結構和工作原理有一個清楚的了解;并且基于這個知識來設計你的用例。
使用白盒測試方法產生的測試用例能夠:保證一個模塊中的所有獨立路徑至少被使用一次;對所有邏輯值均需測試true和false;在上下邊界及可操作范圍內運行所有循環;檢查內部數據結構以確保其有效性。
1.2 白盒測試技術
白盒測試技術一般可分為靜態分析和動態分析兩類技術。靜態分析是一種不通過執行程序而進行測試的技術。靜態分析的關鍵功能檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。它瞄準的是糾正軟件系統在描述、表示和規格上的錯誤。因此,是任何進一步測試執行的前提。靜態分析技術不需要軟件的執行,而動態分析從其本身來看則更像是一個“測試”,因為它包含了系統的執行。當軟件系統在模擬的或真實的環境中執行之前、之中和之后,對軟件系統行為的分析是動態分析的主要特點。動態分析包含了程序在受控的環境下使用特定的期望結果進行正式的運行。它顯示了一個在檢查狀態下是正確還是不正確。
有人提出,“我們應該更注重于保證程序需求的實現,為什么要花費時間和精力來擔心(和測試)邏輯細節?”答案在于軟件自身的缺陷。當我們設計和實現主流之外的功能、條件或控制時,錯誤往往開始出現在我們工作中;程序的邏輯流有時是違反直覺的,這意味著我們關于控制流和數據流的一些無意識的假設可能導致設計錯誤,只有路徑測試才能發現這些錯誤;當一個程序被翻譯為程序設計語言源代碼時,有可能產生某些筆誤,很多將被語法檢查機制發現。但是,其他的在測試開始后才會被發現。
2 黑盒測試
2.1 什么是黑盒測試
黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試中,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。黑盒測試是與白盒測試截然不同的測試概念,也是在軟件測試中使用得最早、最廣泛的一類測試。
黑盒測試注重于測試軟件的功能需求,主要試圖發現以下幾類錯誤:功能不正確或遺漏;界面錯誤;輸入和輸出錯誤;數據庫訪問錯誤;性能錯誤;初始化和終止錯誤等。
2.2 黑盒測試技術
黑盒測試意味著測試數據的選擇和測試結果的解釋是以軟件功能屬性為基礎的。黑盒測試不應當由程序作者來執行,因為他知道太多的程序內部知識。在新的測試方法中,由第三方來執行黑盒測試。
通常,黑盒測試技術一般可分為沒有用戶參與的黑盒測試和有用戶介入的黑盒測試。盡管黑盒測試時圍繞著用戶需求文檔進行的,但是黑盒測試不一定必須要用戶來參與測試。在絕大多數沒有用戶參與的黑盒測試中,最常見的測試有:功能性測試、容量測試、安全性測試、負載測試、標桿測試、可靠性測試等。此外,還有兩類測試必須要有用戶參與的測試,外場測試和實驗室測試。
3 白盒測試和黑盒測試的比較
既然我們已經做了白盒測試,為什么還要進行黑盒測試呢?因為白盒測試在測試的早期采用,而黑盒測試主要用于測試的后期。黑盒測試故意不考慮控制結構,而只注意信息域。黑盒測試并不是白盒測試的替代品,而是用于輔助白盒測試發現其他類型的錯誤的。白盒測試只考慮測試軟件產品,它不保證完整的需求規格是否被滿足。而黑盒測試只考慮測試需求規格,它不保證實現的所有部分是否被測試到。黑盒測試會發現遺漏的缺陷,指出規格的哪些部分沒有被完成。而白盒測試會發現代理方面的缺陷,指出哪些實現部分是錯誤的。白盒測試比黑盒測試成本要高得多。它需要在測試可以被計劃前產生源代碼,并且在確定合適的數據和決定軟件是否正確方面需要花費更多的工作量。
[參考文獻]
[1]鄭人杰.《軟件測試》.人民郵電出版社,2011.
[2]庫波.《軟件測試技術》.中國水利水電出版社,2010.
[3]茍英.《軟件測試技術基礎》.中國水利水電出版社,2013.
[4]賀平.《軟件測試教程》.電子工業出版社,2010.