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