論黑盒測試與白盒測試在軟件測試中的不同作用

一.引言:

黑盒測試着眼於外部結構,不考慮內部結構,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明;而白盒測試着眼於內部結構,對軟件的過程性細節做細緻的檢查。隨着軟件市場的成熟,人們對軟件作用的期望值也越來越高,我國的軟件企業已越來越意識到軟件測試的重要性,逐漸加大軟件測試在整個軟件開發的系統工程中的比重。軟件測試並非傳統意義上產品交付前單一的“找錯”過程,而是貫穿於軟件過程的始終,是一個科學的質量控制過程。而對於任何工程產品都可以使用以下兩種方法之一進行測試,即黑盒測試與白盒測試。
本文我們來講一下黑盒測試與白盒測試在軟件測試中的不同作用。

二.黑盒測試在軟件測試中的作用

黑盒測試也稱爲功能測試、行爲測試或數據驅動測試,在測試時,把程序看作一個不能打開的黑盒,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明,因此黑盒測試是基本測試。例如:我們用C#編寫“計算器”應用程序,我們如果輸入7並按sqrt鍵,就會得到結果2.645751311。使用黑盒子測試方式,不管“求平方根”要經歷多少複雜運算,只關心他的運行結果。

黑盒測試方法主要有等價類劃分、邊值分析、因――果圖、錯誤推測等,主要用於軟件確認測試。“黑盒”法着眼於程序外部結構、不考慮內部邏輯結構、針對軟件界面和軟件功能進行測試。“黑盒”法是窮舉輸入測試,只有把所有可能的輸入都作爲測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。黑盒測試的主要缺陷是難於衡量系統的完整性,而白盒測試正好可以彌補這個缺陷。

“黑盒”表示看不見盒子裏頭的東西,意味着黑盒測試不關心軟件內部設計和程序實現,只關心外部表現,即通過觀察輸入與輸出即可知道測試的結論。任何人都可以依據軟件需求來執行黑盒測試。黑盒測試注重於測試軟件的功能性需求,着眼於程序外部結構,不考慮內部邏輯結構,主要針對軟件界面和軟件功能進行測試,多應用於測試過程的後期。它是一種根據軟件需求,設計文檔,模擬客戶場景隨系統進行的實際測試.這種測試技術涵蓋了測試的方方面面,它主要是爲發現以下幾類錯誤:是否出現功能錯誤或遺漏;在接口上能否進行正確的輸入與輸出;是否存在數據結構錯誤或外部數據庫訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。

所以黑盒測試實際上是檢查以下幾點是否滿足要求:

a、c正確性 (Correctness):計算結果,命名等方面。

b、d可用性 (Usability):是否可以滿足軟件的需求說明。

c、e邊界條件 (Boundary Condition):輸入部分的邊界值,就是使用等價類劃分,試試最大最小和非法數據等等。

d、f性能 (Performance):程序的性能取決於兩個因素:運行速度的快慢和需要消耗的系統資源。如果在測試過程中發現性能問題,修復起來是非常艱難的,因爲這常常意味着程序的算法不好,結構不好,或者設計有問題。因此在產品開發的開始階段,就要考慮到軟件的性能問題。

e、g壓力測試 (Stress): 多用戶情況可以考慮使用壓力測試工具,建議將壓力和性能測試結合起來進行。如果有負載平衡的話還要在服務器端打開監測工具 , 查看服務器 CPU 使用率,內存佔用情況,如果有必要可以模擬大量數據輸入,對硬盤的影響等等信息。

f、h錯誤恢復 (Error Recovery):錯誤處理,頁面數據驗證,包括突然間斷電,輸入錯誤數據等。

g、i安全性測試 (Security):特別是一些商務網站,或者跟錢有關,或者和公司祕密有關的 web 更是需要這方面的測試。

h、j 兼容性 (Compatibility):不同瀏覽器,不同應用程序版本在實現功能時的表現。

應用黑盒測試技術,能夠設計出滿足下述標準的測試用例集:

a.所設計出的測試用例能夠減少爲達到合理測試所需要設計的測試用例總數;
b.所設計出的測試用例能夠告訴我們,是否存在某些類型的錯誤,而不僅僅指出與特定測試相關的錯誤是否存在。

三、白盒測試在軟件測試中的作用

白盒測試也稱結構測試或邏輯驅動測試,是一種以理解軟件內部結構和程序運行方式爲基礎的軟件測試技術,通常需要跟蹤一個輸入經過了哪些處理,這些處理方式是否正確。這種方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。

白盒測試關注的是被測對象的內部狀況,需要跟蹤源代碼的運行。通過檢查軟件內部的邏輯結構,對軟件中的邏輯路徑進行覆蓋測試;在程序不同地方設立檢查點,檢查程序的狀態,以確定實際運行狀態與預期狀態是否一致。白盒測試者必須理解軟件內部設計與程序實現,並且能夠編寫測試驅動程序,一般由開發人員兼任測試人員的角色。在很多測試人員,尤其是初級測試人員認爲,白盒測試是隻有非常瞭解程序代碼的高級測試人員才能做的測試。熟悉代碼結構和功能實現的過程當然對測試有很大的幫助,但有些白盒測試是不需要測試人員懂得每一行程序代碼的。
在這裏插入圖片描述
對於上面的程序,設計兩個測試用例則可以滿足條件覆蓋的要求。

測試用例的輸入爲:

{ a=5、b=15、c=15}

{ a=2、b=15、c=15}

上面的兩個測試用例雖然能夠滿足條件覆蓋的要求,但是也不能對判斷條件進行檢查,例如把第二個條件b>15錯誤的寫成b<15,、上面的測試用例同樣滿足了分支覆蓋。

軟件的白盒測試是對軟件的過程性細節做細緻的檢查。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。白盒測試主要是想對程序模塊進行如下檢查:

a、對程序模塊的所有獨立的執行路徑至少測試一遍。

b、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。

c、在循環的邊界和運行的界限內執行循環體。

d、測試內部數據結構的有效性,等等。

白盒測試的主要方法有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋等,它是深入到代碼一級的測試,使用這種技術發現問題最早,而且效果也是最好的。該技術主要的特徵是測試對象進入了代碼內部,根據開發人員對代碼和程序的熟悉程度,對有需要的部分進行軟件編碼,開發人員根據自己對代碼的理解和接觸來進行軟件測試。

四、白盒測試與黑盒測試的關係

白盒測試和黑盒測試都是非常重要的環節,不存在技術含量誰高誰低的問題,只是兩者的偏重不同,使用的技術也不同。黑盒測試人員偏重於業務方面,而白盒測試人員側重於實現方式;黑盒測試注重整體,而白盒測試則更注重局部。白盒測試是對過程的測試,黑盒測試是對結果的測試。

願你我相遇,皆有所獲! 歡迎關注微信公衆號:程序媛一菲

五、測試用例

實際上測試情況有很多個,不僅要測試所有有限的輸入,而且還要對那些不合法但可能的輸入進行測試。這樣看來,完全測試是不可能的,所以我們要進行有針對性的測試,通過制定測試案例指導測試的實施,保證軟件測試有組織、按步驟,以及有計劃地進行。測試行爲必須能夠加以量化,才能真正保證軟件質量,而測試用例就是將測試行爲具體量化的方法之一。其中邏輯覆蓋技術是白盒測試的典型技術,而等價劃分、邊界分析、因果圖等技術則是黑盒測試的較典型的技術。

六、結束語

黑盒測試和白盒測試是兩種不同的測試方法。在整個的測試過程中兩種方法都會用到,但以經驗來看,在一個項目中測試工程師還是以黑盒測試爲主,白盒測試爲輔。因爲你首先要用黑盒測試來驗證結果是否正確,或者說目標是否正確,如果結果正確,然後再用白盒測試來驗證,這個正確的結果是不是由於正確的過程產生的。如果結果不正確,那麼用白盒測試來找到過程中錯誤的地方。只有先做好黑盒測試,然後用白盒測試驗證,這個測試才能說做的完整了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章