什么是“灰盒測試”?
灰盒測試,是參照更為人所熟知的“白盒測試”和“黑盒測試”概念的一種通俗的說法,通常是指介于這兩種測試之間的測試方法?;液袦y試多用于應用程序的集成測試階段,不僅關注針對集成系統的輸入、輸出值的正確性,同時也對程序的內部執行邏輯進行分析、監測或者驗證。
灰盒測試的常見方法就是在應用程序系統執行的過程中,利用插裝、調試、日志或信號監測等多種技術對軟件的內部執行過程進行分析、度量和驗證,實現對軟件內部缺陷的更全面的檢測。對不同的應用程序,灰盒測試的目標也會有所差異。
對有高可靠性要求的嵌入式應用程序,灰盒測試的主要目標包括:
? 對軟件內部執行路徑的監測和驗證
? 對任務、模塊或函數的執行時間性能的檢測和優化
? 對中間變量、進程、CPU占用率和輸出信號等中間狀態的跟蹤和度量
? 對軟件測試過程的覆蓋率分析
對于上位機軟件或Web應用程序,灰盒測試往往還會包含諸如安全漏洞檢測、壓力測試、軟件成分分析等更廣范圍的目標。
為什么要做灰盒測試?
因為,
? 黑盒測試關注系統的輸入輸出接口的正確性,但無法對應用程序內部的錯誤進行分析和定位
? 白盒測試可以分別嚴格測試每個函數/模塊,但是無法反映系統集成的缺陷,并且測試的效率太低
灰盒測試正好可以彌補二者的不足,兼顧了測試的效率又能洞悉系統內部執行過程?;液袦y試也許還沒有達到像“白盒測試”和“黑盒測試”那樣的普遍地、標準化地應用到常見的研發流程中,然而灰盒測試的思想和方法對多數軟件研發人員來說可能并不陌生,如使用調試器的單步執行觀察程序執行邏輯、手動插入print()獲取執行日志等方法。要想將灰盒測試的方案推廣到研發流程中,只需要一個集成化的、易用的和自動化的解決方案。
難點和挑戰
手動灰盒測試效率太低,如單步調試或手動插裝print()輸出日志,且對系統資源損耗大,難以支持偶發的、不固定表現的bug的定位
日志方式對數據采集、分析和重復利用比較困難,對海量的數據缺乏有效、直觀的分析手段
時間性能測試,主要依賴于示波器等儀器儀表,重復迭代太耗時耗力,且對軟件內部模塊的性能分析比較繁瑣,也不易定位到問題根源
測試方法過于零散,無法將灰盒測試形成標準化的連續測試流程
解決方案
利用DT10灰盒測試和系統動態跟蹤調試工具極簡的插裝算法,自動在軟件內部插入測試點,用過對測試點的檢測,實現對軟件內部執行過程的跟蹤。插裝膨脹率低、效率高
對嵌入式系統,提供基于多種標準接口的數據傳輸方式,包括以太網口、串口、GPIO/SPI, 異步總線口,CAN總線等,系統資源消耗小
DT10支持進行長達一個月的不間斷測試,適用于對有可靠性要求的軟件系統的灰盒測試
基于DT10 Dynamic Tracer硬件采集的測試數據,提供豐富的分析、驗證和報告功能,包括復雜缺陷回溯調試,性能測試、CPU負載分析、變量監控、內存分析、邏輯分析、硬件監測和覆蓋率統計等常用灰盒測試功能
DT10的對硬件環境的適用范圍廣泛,支持對多核、多CPU環境的測試
不限軟件開發編譯器和目標操作系統,對嵌入式環境的適用性高
相關資源
白皮書
博客
如何開發高質量的軟件_白皮書
點擊下載
嵌入式設備的耗電量可視化實踐_白皮書
點擊下載
DT10專業技術訪談_白皮書
點擊下載
DT10如何幫助用戶有效達成灰盒測試目標_白皮書
點擊下載
RELATED RESOURCES
下載申請