テストを開始する必要があるタイミング ドライバーの要件が満たされたらすぐにテストを開始します。 重要な要件を検証するテスト ケースの設計を開始します。 研究では、コード内の欠陥を見つけて修正すると、コード内の欠陥が長く残り、コストが高くなることが示されています。 コードがリリースされて配布された後に欠陥を見つけるよりも、開発サイクルの早い段階で欠陥を見つけて修正する方が、コストと中断が少なくなります。 テスト ケースを早期に作成すると、設計で問題を見つけるのにも役立ちます。
開発中のテストに関する提案
ドライバー コードとドライバー パッケージをテストするには、次の推奨事項を使用します。
コンパイル時にバグを見つけるのに役立ちます。
- 関数ロール型を使用して、ドライバー提供のコールバック関数とディスパッチルーチンを宣言します。 この宣言は、コード分析および検証ツールの精度とテスト時間の有効性を向上するのに役立ちます。 ドライバーが提供する関数を宣言する方法の詳細については、「 関数の役割の型宣言の使用」を参照してください。
- Level4 (/W4) Warnings オプションを使用してコードをコンパイルします。 コンパイラが検出する警告を修正すると、ドライバー コードの品質が向上し、開発サイクルの早い段階で欠陥をなくすのに役立ちます。
- Microsoft ソース コード注釈言語 (SAL) 2.0 を使用してコードに注釈を付けます。 注釈は、関数がパラメーターを使用する方法 (パラメーターに関して行う前提と、完了時に行う保証) を記述します。 注釈により、コード分析ツールの精度も向上します。 ドライバー固有の注釈の詳細については、「 ドライバーの SAL 2.0 注釈」を参照してください。
- ドライバーの開発中に ドライバーを確認するためのツール を使用します。 特定の検証ツールを使用する場合のガイドラインについては、「 コード分析および検証ツールを使用したドライバーの分析」を参照してください。
ドライバー パッケージをテストするには:
開発プロセスの早い段階で INF ファイルとドライバー パッケージを作成し、テスト全体で使用します。
InfVerif ツールを使用して、INF ファイルの構造と構文を確認し、INF ファイルやその他のインストール関連の問題を診断するのに役立ちます。
追加の INF ファイル検証を行うには、 Inf2Cat ツール ( /nocat オプションを指定) を使用します。 Inf2Cat は、INF 参照が存在し、INF が想定しているパッケージ ディレクトリに配置されているファイルを確認できます。
「開発中およびテスト中のドライバーの署名」で説明されているように、ドライバーのインストールとテストを容易にするためにドライバーに署名します。
WDK が提供する Device Fundamental テストの一部として含まれる DriverInstall テストを実行します。 Visual Studio を使用して実行時にドライバーをテストする方法と、Device Fundamental Tests を選択して構成する方法に関するページを参照してください。 DriverInstall テストは、ドライバーがテスト コンピューターに展開された後に実行できます。 DriverInstall テストをドライバー テスト グループに追加できます。 DriverInstall テストは、すべてのテスト\Basic\Device Fundamentals\DriverInstall の下のドライバー テスト カテゴリに表示されます。
デバイス マネージャーを使用してドライバーとデバイスに関するシステム情報を表示し、SetupAPI ログを参照して、デバイスのインストールに関する問題のトラブルシューティングを行います。 SetupAPI ログには、デバイスまたはドライバーのインストール中に発生した一連の操作に関する情報が含まれています。
Visual Studio と WDK を使用すると、ドライバーをテスト コンピューターに展開するときに、ドライバー パッケージのインストールをテストおよびトラブルシューティングできます。 詳細については、「 テスト コンピューターへのドライバーの展開」を参照してください。 ドライバー パッケージ プロジェクトの展開プロパティから [インストールと確認] オプションを選択します。 このオプションを選択し、既定の ドライバー パッケージ インストール タスク (可能な再起動) または 既定のプリンター ドライバー パッケージインストール タスク (再起動可能) を指定すると、テストはドライバーの INF ファイルを読み取り、ドライバーをインストールします。 テストでは、ドライバーが稼働していることを確認します。 完了すると、テストはインストール タスクの成功または失敗に関する詳細情報を提供します。 結果は、[ ドライバー テスト グループ] > [ドライバーのインストール] の下のドライバー テスト グループ エクスプローラーに表示されます。 タスク名は 既定のドライバー パッケージ インストール タスクです。
実行時にドライバーをテストします。
- WDK に含まれる Device Fundamental テストを実行します。 Visual Studio を使用して実行時にドライバーをテストする方法と、Device Fundamental Tests を選択して構成する方法に関するページを参照してください。
- テスト結果のトラブルシューティングとデバッグを行えるようにデバッガーを設定します。 詳細については、「 Windows デバッグの概要」を参照してください。
- 展開に使用するテスト コンピューターでドライバー検証ツールを有効にする、「 ドライバー プロジェクトのドライバー検証ツールのプロパティ」を参照してください。 DDI コンプライアンス チェック オプションを選択します。 ドライバーが DDI コンプライアンス チェックに失敗した場合は、 静的ドライバー検証ツール を実行し、エラーの原因となったルールを指定します。 静的ドライバー検証ツールは、ソース ファイルのバグの原因を特定するのに役立ちます。
- 可能な限り多くの異なるハードウェア構成でドライバーとデバイスをテストします。 ハードウェアを変更すると、デバイス間の競合や、デバイスの操作におけるその他のエラーを見つけるのに役立ちます。 たとえば、プロセッサ アーキテクチャが異なるコンピューターや、32 ビットバージョンと 64 ビット バージョンの Windows を実行しているコンピューターで、ドライバーとデバイスをテストする必要があります。
- マルチプロセッサ システムでドライバーとデバイスをテストします。 競合状態やその他のタイミングの問題は、それ以外の場合は見つからないマルチプロセッサ システムに表示されます。 「 デバイスの基本テストとブート パラメーターを選択して構成して 、 複数のプロセッサ グループのサポート用のドライバーをテストする方法」を参照してください。
- ドライバーとデバイスで、特定のシステムとハードウェアの状態 (特にエッジ条件) をテストします。 たとえば、これらの条件には "D3 hot" や "D3 cold" が含まれる場合があります。ドライバーとデバイスが、デバイスの電源状態 "D3 hot" (電源を失うことなく) と "D3 コールド" (デバイスから電源が取り外されたとき) から正しく返できることを確認します。 詳細については、「 Device Fundamental Tests を選択して構成する方法」を参照してください。