您應該什麼時候開始測試? 一拿到你的驅動程式需求,就立即開始測試。 開始設計驗證關鍵需求的測試案例。 研究顯示,缺陷在程式碼中停留的時間越長,發現並修正缺陷的成本就越高。 在開發初期發現並修正缺陷,比起在程式碼釋出並發佈後再發現缺陷,成本和干擾都更低。 儘早建立測試案例也可以幫助您發現設計中的問題。
開發期間測試建議
使用下列建議來測試驅動程式程式碼和驅動程式套件。
為了幫助你在編譯時找到錯誤:
- 使用函式角色類型來宣告由驅動程式提供的回呼函式和分派例程。 此聲明有助於提升程式碼分析與驗證工具的準確性,以及測試時間的有效性。 如需如何宣告驅動程式所提供函式的詳細資訊,請參閱 使用函式角色類型宣告。
- 請使用 Level4(/W4) 警告選項來編譯你的程式碼。 修正編譯器偵測到的警告,能提升驅動程式程式碼的品質,並有助於在開發週期早期消除缺陷。
- 使用 Microsoft 原始碼註解語言(SAL)2.0 來標註你的程式碼。 註解描述函數如何使用其參數——它對參數所做的假設,以及當它結束時所做的保證。 註釋還提高了代碼分析工具的準確性。 如需驅動程式特定批註的詳細資訊,請參閱 驅動程式的 SAL 2.0 批註。
- 在開發驅動程式時,使用 驗證驅動程式 的工具。 如需何時使用特定驗證工具的指導方針,請參閱 使用程式代碼分析和驗證工具分析驅動程式。
測試你的驅動程式套件:
在開發初期建立 INF 檔案和驅動程式套件,並在整個測試過程中使用它們。
使用 InfVerif 工具來驗證 INF 檔案的結構與語法,並協助診斷 INF 檔案及其他安裝相關問題。
使用 Inf2Cat 工具 (搭配 /nocat 選項) 來執行其他 INF 檔案驗證。 Inf2Cat 可以驗證 INF 參考的檔案是否存在,且是否依 INF 預期放置在套件目錄中。
簽署驅動程式以協助安裝和測試驅動程式,如 在開發和測試期間簽署驅動程式中所述。
執行 WDK 提供的裝置基本測試中包含的 DriverInstall 測試。 請參閱如何使用 Visual Studio 在執行階段測試驅動程式 ,以及如何 選取和設定裝置基本測試。 DriverInstall 測試可在驅動程式部署至測試電腦後執行。 您可以將 DriverInstall 測試新增至驅動程式測試群組。 DriverInstall 測試會出現在 [所有測試\基本\裝置基礎\DriverInstall] 底下的 [驅動程式測試類別] 中。
針對裝置安裝問題進行疑難排解,方法是使用裝置管理員來檢視驅動程式和裝置的系統資訊,並查閱 SetupAPI 記錄。 SetupAPI 記錄包含安裝裝置或驅動程式期間所發生作業順序的相關資訊。
透過使用 Visual Studio 和 WDK,你可以在將驅動程式部署到測試電腦時,測試並排除驅動程式套件安裝的問題。 欲了解更多資訊,請參閱「 將驅動程式部署至測試電腦」。 從驅動程式套件專案的部署屬性中選取 [安裝並驗證] 選項。 當您選取此選項並指定 預設驅動程式套件安裝工作 (可能重新開機) 或 預設印表機驅動程式套件安裝工作 (可能重新開機) 時,測試會讀取驅動程式的 INF 檔案並安裝驅動程式。 然後,測試會驗證驅動程式是否已啟動並執行。 完成後,測試會提供有關安裝任務成功或失敗的詳細資訊。 結果會顯示在 [驅動程式測試群組總管] 的 [驅動程式測試群組 > 驅動程式安裝] 底下。 工作名稱為 預設驅動程式套件安裝工作。
執行時測試你的驅動程式:
- 執行 WDK 包含的裝置基本測試。 請參閱如何使用 Visual Studio 在執行階段測試驅動程式 ,以及如何 選取和設定裝置基本測試。
- 設定偵錯工具,以便對測試結果進行疑難排解和偵錯。 如需詳細資訊,請參閱 開始使用 Windows 偵錯。
- 在您用於部署的測試電腦上啟用驅動程式驗證器,請參閱驅動 程式專案的驅動程式驗證器屬性。 選取 DDI 合規性檢查 選項。 如果您的驅動程式未通過 DDI 合規性檢查,請執行 靜態驅動程式驗證器 ,並指定造成失敗的一或多個規則。 靜態驅動程式驗證器可協助您找出來源檔案中錯誤的原因。
- 在盡可能多的不同硬體設定上測試您的驅動程式和裝置。 改變硬體可協助您找出裝置之間的衝突,以及裝置互動中的其他錯誤。 例如,您應該在具有不同處理器架構的電腦上,以及執行 32 位和 64 位版本 Windows 的電腦上測試驅動程式和裝置。
- 在多處理器系統上測試您的驅動程式和裝置。 多處理器系統會出現競賽條件及其他時間問題,這些問題在其他系統上不會發生。 請參閱 如何選取和設定裝置基本測試 和 開機參數,以測試驅動程式以取得多個處理器群組支援。
- 針對特定系統和硬體條件測試驅動程式和裝置,特別是邊緣條件。 例如,這些條件可能包括「D3 熱」和「D3 冷」。請確定您的驅動程式和裝置可以從裝置電源狀態 「D3 熱」 (不會中斷電源) 和「D3 冷」 (從裝置移除電源時) 正確返回。 如需詳細資訊,請參閱 如何選取和設定裝置基本測試。