什麼是“灰盒測試”?

灰盒測試,是參照更為人所熟知的“白盒測試”和“黑盒測試”概念的一種通俗的說法,通常是指介於這兩種測試之間的測試方法。灰盒測試多用於應用程式的集成測試階段,不僅關注針對集成系統的輸入、輸出值的正確性,同時也對程式的內部執行邏輯進行分析、監測或者驗證。

灰盒測試-1

灰盒測試的常見方法就是在應用程式系統執行的過程中,利用插裝、調試、日誌或信號監測等多種技術對軟體的內部執行過程進行分析、度量和驗證,實現對軟體內部缺陷的更全面的檢測。對不同的應用程式,灰盒測試的目標也會有所差異。

對有高可靠性要求的嵌入式應用程式,灰盒測試的主要目標包括:

    • 對軟體內部執行路徑的監測和驗證
    • 對任務、模組或函數的執行時間性能的檢測和優化
    • 對中間變數、進程、CPU佔用率和輸出信號等中間狀態的跟蹤和度量
    • 對軟體測試過程的覆蓋率分析

對於上位機軟體或Web應用程式,灰盒測試往往還會包含諸如安全性漏洞檢測、壓力測試、軟體成分分析等更廣範圍的目標。

為什麼要做灰盒測試? 

因為,

    • 黑盒測試關注系統的輸入輸出介面的正確性,但無法對應用程式內部的錯誤進行分析和定位
    • 白盒測試可以分別嚴格測試每個函數/模組,但是無法反映系統集成的缺陷,並且測試的效率太低

灰盒測試正好可以彌補二者的不足,兼顧了測試的效率又能洞悉系統內部執行過程。灰盒測試也許還沒有達到像“白盒測試”和“黑盒測試”那樣的普遍地、標準化地應用到常見的研發流程中,然而灰盒測試的思想和方法對多數軟體研發人員來說可能並不陌生,如使用調試器的單步執行觀察程式執行邏輯、手動插入print()獲取執行日誌等方法。要想將灰盒測試的方案推廣到研發流程中,只需要一個集成化的、易用的和自動化的解決方案。

難點和挑戰

  • 手動灰盒測試效率太低,如單步調試或手動插裝print()輸出日誌,且對系統資源損耗大,難以支援偶發的、不固定表現的bug的定位

  • 日誌方式對資料獲取、分析和重複利用比較困難,對海量的資料缺乏有效、直觀的分析手段

  • 時間性能測試,主要依賴於示波器等儀器儀錶,重複反覆運算太耗時耗力,且對軟體內部模組的性能分析比較繁瑣,也不易定位到問題根源

  • 測試方法過於零散,無法將灰盒測試形成標準化的連續測試流程

解决方案

  • 利用DT10灰盒測試和系統動態跟蹤調試工具極簡的插裝演算法,自動在軟體內部插入測試點,用過對測試點的檢測,實現對軟體內部執行過程的跟蹤。插裝膨脹率低、效率高

  • 對嵌入式系統,提供基於多種標準介面的資料傳輸方式,包括乙太網口、串口、GPIO/SPI, 非同步匯流排口,CAN匯流排等,系統資源消耗小

  • DT10支持進行長達一個月的不間斷測試,適用於對有可靠性要求的軟體系統的灰盒測試

  • 基於DT10 Dynamic Tracer硬體採集的測試資料,提供豐富的分析、驗證和報告功能,包括複雜缺陷回溯調試,性能測試、CPU負載分析、變數監控、記憶體分析、邏輯分析、硬體監測和覆蓋率統計等常用灰盒測試功能

  • DT10的對硬體環境的適用範圍廣泛,支持對多核、多CPU環境的測試

  • 不限軟體發展編譯器和目標作業系統,對嵌入式環境的適用性高

相關資源

  • 白皮書

  • 博客

RELATED RESOURCES

下載申請

是否需要技術支持

驗證碼

溫馨提示:

我們將通過電子郵件向您發送下載地址,請核對您填寫的工作郵箱是否正確。

提 交