2012年11月12日 星期一

「黑箱」與「白箱」測試的區別


原文詳見,本文僅供記憶輔助使用。
軟體測試英文Software Testing),描述一種用來促進鑑定軟體正確性完整性安全性、和品質的過程。換句話說,軟體測試是一種實際輸出與預期輸出間的稽核或者比較過程。
                                                                                                                                                                   
就測試的模式而言,「黑箱」與「白箱」在測試領域是很通俗的說法。白箱測試(White-Box Testing)是以測試的深度為主,可分為資料流程面(Data Flow Coverage)控制流程面(Control Flow Coverage)等兩個層面,資料流程面就是測試資料在程式內所經過的流程;而控制流程面,是測試程式在執行過程中每個階段的流程。白箱測試也稱為結構性測試(Structural Testing)、透明盒測試glass box testing,測試時,測試人員必須掌握程式原始碼,瞭解其內部運作,包含資料流程及程式控制流程,常見的白箱測試工具有原始碼掃瞄,如Fortify、CodeSecure等。
在白箱測試時,以程式語言的角度來設計測試案例。測試者輸入資料驗證資料流在程式中的行動路徑,並確定適當的輸出,類似測試電路中的節點。

白箱測試可以應用於單元測試(unit testing)整合測試(integration testing)系統的軟體測試流程,可測試在整合過程中每一單元之間的路徑,或者主系統跟子系統中的測試。儘管這種測試的方法可以發現許多的錯誤或問題,它可能無法檢測未使用部分的規範。
                                                                                                                                                                  
黑箱測試(Black-Box Testing)則不需要對軟體的內部結構有深層的了解,直接就功能面來驗證。所以在程式碼的安全性檢測方面,黑箱就是所謂的「動態程式碼安全性檢測」,其中「動態」是指應用程式處於執行期的狀態,黑箱的手法則是模擬駭客的攻擊,測試系統有沒有漏洞。而白箱就是「靜態程式碼安全性檢測」,它直接掃描程式寫法。黑箱測試使用已知的攻擊樣板(Pattern)進行檢測,如IBM AppScan與HP WebInspect。
測試應用程式的功能,而不是其內部結構或運作。
測試者只需知道什麼是系統應該做的事,即當鍵入一個特定的輸入,可得到一定的輸出。
測試者選擇有效輸入和無效輸入來驗證是否正確的輸出。

黑箱測試方法可適合大部分的軟體測試,例如單元測試(unit testing)、整合測試(integration testing)以及系統測試(system testing)
                                                                                                                                                                  
在早期黑箱與白箱模式,都是透過人工進行驗證。白箱就是人工審查(Code Review),由資深的工程師或顧問檢視寫法是否有不安全的寫法。而黑箱就是「滲透測試」,請專家模擬駭客的入侵模式,測試系統的安全性強度。
不過,人工的成本較高、效率較低,而檢驗的成效與檢測者當時的專注力、情緒及功力強烈相關,而且不容易做到全面的檢查。因此自動化工具應運而生,企業假如導入此類方案,可以頻繁且效率化地檢測系統的安全性。
                                                                                                                                                                 
------------------------------------------------------------------------------------------------------------
參考:
1.
2.
3.
4.維基

沒有留言:

張貼留言

如果久久沒有反應,請直接寄信
應該是我不太會用google blogger 導致有留言過久未處理><
實在深感抱歉..