軟體測試 - 模糊測試
軟體測試主要集中在確認軟體的質量。模糊測試是一種測試方法,它向軟體提供錯誤的、意外的和隨機的資料,然後驗證異常,例如崩潰、可能的記憶體洩漏等。它於 1999 年由威斯康星大學的 Barton Miller 發現。
什麼是軟體模糊測試?
軟體模糊測試主要是一種自動化測試方法,用於透過遵循非系統化的方法來定義系統測試過程。在執行此類測試時,軟體可能會遇到許多與輸入資料集相關的缺陷或錯誤。因此,模糊測試的過程包括向軟體提供不正確、意外或任意資料,以確定其可能的安全問題和崩潰。
軟體模糊測試的主要目標是確定攻擊者可以利用的問題,例如緩衝區溢位、SQL 注入等。它是軟體測試的關鍵部分,因為它有助於識別在功能或單元測試期間可能未檢測到的所有安全問題,例如效能瓶頸、記憶體洩漏等。這種型別的測試依賴於特定的工具和測試環境,這使得它成為一個成本高且耗時的過程。此外,分配給模糊測試的測試人員應經驗豐富,並對軟體的架構、設計、協議、資料格式等有深入的瞭解。
軟體模糊測試可以透過以下不同方式執行:
- 檔案模糊測試 - 在這種型別中,將無規律或不正確的資料作為輸入傳遞給檔案解析函式,以識別諸如記憶體損壞、緩衝區溢位等問題。
- 網路模糊測試 - 在這種型別中,將無規律或不正確的資料作為輸入傳遞給網路協議,以識別諸如拒絕服務、其他安全問題等問題。
- API 模糊測試 - 在這種型別中,將無規律或不正確的資料作為輸入傳遞給應用程式程式設計介面 (API),以識別諸如輸入驗證、其他安全問題等問題。
軟體模糊測試的目標
軟體模糊測試的目標如下:
- 模糊測試驗證軟體中的弱點。
- 模糊測試確定軟體的安全問題和威脅。
- 模糊測試在軟體開發生命週期 (SDLC) 的早期階段識別缺陷。
軟體模糊測試的階段
軟體模糊測試的階段如下:
步驟 1 - 測試團隊確定要測試的系統,也稱為目標系統。
步驟 2 - 識別要提供給軟體以執行模糊測試的隨機輸入測試用例。
步驟 3 - 使用任意輸入建立模糊資料。
步驟 4 - 透過使用模糊資料執行軟體來執行測試用例。
步驟 5 - 使用隨機輸入執行軟體後,評估測試結果以確定軟體中是否遇到任何崩潰、記憶體洩漏等。
步驟 6 - 如果存在偏差,則將其報告為缺陷。一旦修復,它確保了軟體的更好質量。
軟體模糊測試的型別
軟體模糊測試的不同型別如下:
覆蓋引導模糊測試
在這種型別的模糊測試中,在軟體工作時評估原始碼。主要目的是使程式失敗,使其崩潰,並不斷新增新的測試用例。崩潰表示潛在的錯誤。在覆蓋引導模糊測試期間收集的詳細資訊可用於複製崩潰,以找到導致崩潰的程式碼部分。
行為模糊測試
這種型別的模糊測試以獨特的方式執行。它還包括其他模糊測試,如變異模糊測試、Web 模糊測試、生成模糊測試、智慧模糊測試和協議模糊測試。
軟體模糊測試期間檢測到的缺陷型別
在軟體模糊測試期間檢測到的不同型別的缺陷如下:
- 檔案格式模糊測試
- 字元模糊測試
- 數字模糊測試
- 應用程式模糊測試
- 協議模糊測試
軟體模糊測試的應用
軟體模糊測試可用於的不同應用如下:
- 區塊鏈
- 作業系統
- API
- 密碼學
- 質量保證
軟體模糊測試的優點
軟體模糊測試的優點如下:
- 軟體模糊測試可以自動化,這允許以更快、更有效的方式驗證大量輸入。
- 軟體模糊測試包括隨機的、無效的和意外的資料,這些資料可以檢測到在進行其他測試方法時可能無法檢測到的缺陷。
- 如果透過自動化執行,軟體模糊測試可以具有成本效益。
- 軟體模糊測試在 SDLC 的初始階段識別錯誤。
- 軟體模糊測試是一個動態的過程,因為它可以用於各種系統和多種型別的輸入,例如 API、檔案格式、網路協議等。
軟體模糊測試的缺點
軟體模糊測試的缺點如下所示:
- 軟體模糊測試可能會產生大量誤報。
- 模糊測試的範圍有限,因為它只專注於驗證輸入,可能無法驗證軟體中的所有型別的弱點,例如併發條件和競爭條件。
- 模糊測試沒有機會深入瞭解軟體。
- 模糊測試的範圍有限,因為它只專注於輸入驗證問題,可能不會測試其他問題,例如邏輯錯誤或安全錯誤。
- 模糊測試可能會導致軟體崩潰或掛起,之後可能無法繼續測試,並且需要人工干預才能覆蓋。
結論
這總結了我們關於軟體模糊測試教程的全面概述。我們從描述什麼是軟體模糊測試、軟體模糊測試的目標是什麼、軟體模糊測試的階段是什麼、軟體模糊測試的不同型別是什麼、軟體模糊測試期間檢測到的不同型別的缺陷是什麼、軟體模糊測試可以使用的不同應用程式是什麼、軟體模糊測試的優點是什麼以及軟體模糊測試的缺點是什麼開始。這為您提供了關於軟體模糊測試的深入知識。明智的做法是不斷實踐您所學到的知識,並探索與軟體測試相關的其他知識,以加深您的理解並拓寬您的視野。