開發期間測試驅動程式的秘訣
何時應該開始測試? 一旦您有驅動程式的需求,您就可以開始設計測試案例,以測試是否已實作重要需求。 研究顯示,在程式代碼中尋找和修正瑕疵變得更昂貴,讓瑕疵保留在程式碼中的時間越長。 在開發週期初期尋找和修正瑕疵,比在程式代碼發行和散發之後尋找瑕疵品的成本和干擾性較低。 提早建立測試案例也可以協助您在設計中找到問題。
開發期間測試的建議
使用下列建議來測試驅動程式程式代碼和驅動程式套件。
協助您在編譯時期尋找 Bug:
使用函式角色類型宣告驅動程式提供的回呼函式和分派例程。 這有助於改善程式代碼分析和驗證工具的正確性,以及測試時間的有效性。 如需如何宣告驅動程式提供函式的詳細資訊,請參閱 使用函式角色類型宣告。
使用 Level4 (/W4) Warnings 選項編譯程式代碼。 修正編譯程式偵測到的警告會增加驅動程式程式代碼的品質,並協助消除開發週期稍早的其他瑕疵。
使用 Microsoft 原始程式碼批註語言標註程式代碼, (SAL) 2.0。 批註描述函式如何使用其參數—其所做出的假設,以及其完成時的保證。 註釋也會改善程式代碼分析工具的精確度。 如需驅動程式特定批註的詳細資訊,請參閱 Drivers 的 SAL 2.0 註釋。
當您開發驅動程式時,請使用 工具來驗證驅動程式 。 如需何時使用特定驗證工具的指導方針,請參閱使用程式 碼分析和驗證工具分析驅動程式。
若要測試驅動程式套件:
在開發程式初期建立 INF 檔案和驅動程式套件,並在測試期間使用它。
使用 InfVerif 工具來驗證 INF 檔案的結構和語法,並協助您診斷 INF 檔案和其他安裝相關問題。
使用 Inf2Cat 工具 (搭配 /nocat 選項) 執行其他 INF 檔案驗證。 Inf2Cat 可以確認 INF 所參考的檔案存在,並放在封裝目錄中,因為 INF 預期它們存在。
簽署驅動程式以協助安裝和測試驅動程式,如 開發和測試期間簽署驅動程式中所述。
執行包含在 WDK 中提供之裝置基本測試的 DriverInstall 測試。 請參閱 如何使用 Visual Studio 在運行時間測試驅動程式 ,以及如何 選取及設定裝置基本測試。 驅動程式部署至測試計算機之後,可以執行 DriverInstall 測試。 您可以將 DriverInstall 測試新增至驅動程式測試群組。 DriverInstall 測試會出現在所有測試\Basic\Device Basics\DriverInstall 底下的驅動程序測試類別中。
使用 裝置管理員 來檢視驅動程式和裝置的系統資訊,以及諮詢 SetupAPI 記錄檔,針對裝置安裝問題進行疑難解答。 SetupAPI 記錄檔包含裝置或驅動程式安裝期間發生的作業順序相關信息。
使用 Visual Studio 和 WDK,您可以在將驅動程式部署至測試電腦時測試驅動程式套件安裝並進行疑難解答,請參閱 將驅動程式部署至測試計算機。 從驅動程式套件專案的部署屬性中選取 [安裝和驗證] 選項。 當您選取此選項並指定 預設驅動程式套件安裝工作 (可能的重新啟動) 或 預設印表機驅動程式套件安裝工作 (可能的重新啟動) 時,測試會讀取驅動程式的 INF 檔案並安裝驅動程式。 然後,測試會驗證驅動程式是否已啟動並執行。 完成時,測試會提供有關安裝工作成功或失敗的詳細資訊。 結果會顯示在 驅動程式測試群組總管的 [驅動程序測試群組 > 驅動程序安裝] 底下。 工作名稱為 預設驅動程式套件安裝工作。
若要在執行時間測試驅動程式:
執行 WDK 中包含的裝置基本測試。 請參閱 如何使用 Visual Studio 在運行時間測試驅動程式 ,以及如何 選取及設定裝置基本測試。
設定調試程式,以便針對測試結果進行疑難解答和偵錯。 如需詳細資訊,請參閱使用 Windows 偵錯 使用者入門。
在用於部署的測試計算機上啟用驅動程式驗證程式,請參閱 驅動程式專案的驅動程式驗證器屬性。 選取 [DDI 合規性檢查 ] 選項。 如果您的驅動程式失敗 DDI 合規性檢查,請執行 靜態驅動程式驗證器 ,並指定造成失敗的規則或規則。 靜態驅動程式驗證程式可協助您找出來源檔案中 Bug 的原因。
盡可能在許多不同的硬體設定上測試驅動程式和裝置。 變更硬體可協助您找出裝置之間的衝突,以及裝置互動中的其他錯誤。 例如,您應該在具有不同處理器架構的計算機上,以及在執行 32 位和 64 位版本的 Windows 計算機上測試驅動程式和裝置。
在多處理器系統上測試驅動程式和裝置。 競爭條件和其他計時問題會出現在找不到的多處理器系統上。 請參閱如何選取及設定裝置基本測試和開機參數,以測試多個處理器群組支持的驅動程式。
測試驅動程式和裝置是否有特定系統和硬體條件,特別是邊緣條件。 例如,這些條件可能包括 「D3 hot」 和 「D3 cold」。請確定您的驅動程式和裝置可以在從裝置電源狀態 「D3 hot」 (傳回,而不會失去電源) 和 「D3 冷」 (時從裝置) 移除電源。 如需詳細資訊,請參閱 如何選取及設定裝置基本測試。