分布式系統的模糊測試工作需要解決如下三個關鍵挑戰:
跨進程邏輯的反饋收集:為了準確收集反饋,需要分析驅動的插樁策略。插樁器針對多進程程序進行優化,在精確收集反饋信息的同時降低執行成本。由于分布式系統邏輯復雜,盲目生成隨機輸入不足以在可行的時間內覆蓋源碼。因此,模糊測試工具必須收集每個輸入的反饋,以引導目標程序進入有趣的新路徑。分布式系統由一組不斷變化的組件構成;這些組件位于不同的進程中,運行在不同的主機上,并處理不同的請求。由于分布式系統的動態性,測試工具難以確定收集反饋的目標進程,更不用說在區分不同請求帶來的不同語意了。
動態進程集合的異常檢測:為了檢測異常,需要調試輔助的監視策略。監視器捕獲新創建的進線程,并在不影響父子進程關系的情況下監視它們。要啟動分布式系統,用戶會首先調用啟動器,啟動器接下來會啟動守護進程,而守護進程會最終創建工作進程。簡而言之,在多階段的初始化過程中,進程集合發生動態而難以預知的變化。因此,模糊測試工具無法確定是否發生了異常。此外,鑒于工作進程已經受到內置的守護進程的監控,模糊測試工具無法重復地監視工作進程的異常。
無關進程的噪音消除:為了消除噪音,需要進程感知的調度策略。調度器將輸入與處理它的進程關聯在一起,從而在不重啟目標系統的情況下,實現連續的模糊測試執行。通過頻繁重新啟動程序來消除噪音是不可行的。模糊測試工具通過不斷生成輸入來測試目標系統。由于輸入的執行次數巨大,必須避免對分布式系統進行昂貴的重新啟動。但是,傳統的模糊測試加速方法不支持多進程分布式系統。針對庫的模糊測試工具通常使用進程內測試,以降低每次執行輸入時創建進程的成本。根據定義,顯然進程內模糊不適用于多進程的分布式系統。
回答所涉及的環境:聯想天逸510S、Windows 10。
分布式系統的模糊測試工作需要解決如下三個關鍵挑戰:
跨進程邏輯的反饋收集:為了準確收集反饋,需要分析驅動的插樁策略。插樁器針對多進程程序進行優化,在精確收集反饋信息的同時降低執行成本。由于分布式系統邏輯復雜,盲目生成隨機輸入不足以在可行的時間內覆蓋源碼。因此,模糊測試工具必須收集每個輸入的反饋,以引導目標程序進入有趣的新路徑。分布式系統由一組不斷變化的組件構成;這些組件位于不同的進程中,運行在不同的主機上,并處理不同的請求。由于分布式系統的動態性,測試工具難以確定收集反饋的目標進程,更不用說在區分不同請求帶來的不同語意了。
動態進程集合的異常檢測:為了檢測異常,需要調試輔助的監視策略。監視器捕獲新創建的進線程,并在不影響父子進程關系的情況下監視它們。要啟動分布式系統,用戶會首先調用啟動器,啟動器接下來會啟動守護進程,而守護進程會最終創建工作進程。簡而言之,在多階段的初始化過程中,進程集合發生動態而難以預知的變化。因此,模糊測試工具無法確定是否發生了異常。此外,鑒于工作進程已經受到內置的守護進程的監控,模糊測試工具無法重復地監視工作進程的異常。
無關進程的噪音消除:為了消除噪音,需要進程感知的調度策略。調度器將輸入與處理它的進程關聯在一起,從而在不重啟目標系統的情況下,實現連續的模糊測試執行。通過頻繁重新啟動程序來消除噪音是不可行的。模糊測試工具通過不斷生成輸入來測試目標系統。由于輸入的執行次數巨大,必須避免對分布式系統進行昂貴的重新啟動。但是,傳統的模糊測試加速方法不支持多進程分布式系統。針對庫的模糊測試工具通常使用進程內測試,以降低每次執行輸入時創建進程的成本。根據定義,顯然進程內模糊不適用于多進程的分布式系統。
回答所涉及的環境:聯想天逸510S、Windows 10。