DF - オープン/クローズのファジー テスト (信頼性)
このテストは、多数の作成/オープン/クローズ シーケンスを実行するもので、指定されたデバイスのインスタンスをオープン/クローズするさまざまな方法が使われます。これには、基本的なオープン操作、デバイスの直接オープン操作、そしてオープンおよびクローズのストレス テストがあります。
基本的なオープン操作
基本的なオープン操作では、ファジー テストはさまざまな方法やオプションを使って、指定されたデバイスまたは指定されたドライバーによってエクスポートされたデバイスのインスタンスを繰り返しオープン (作成) します。
ファジー テストでは、常に基本的なオープン操作を実行します。 これらを選択する必要はなく、テスト セッションから除外することもできません。
ファジー テストでは、デバイスに適したシステム サービス (ZwXxx ルーチン) を呼び出すことにより、すべてのオープン操作をユーザー モードで実行します。 オープン呼び出しでデバイスのハンドルが返される場合、ファジー テストではそのハンドルを使って、テスト セッションで選ばれた他のデバイス テストを実行します。
基本的なオープン操作には 5 つのタイプがあります。
標準オープン: ファジー テストはデバイスを非同期にオープンし、ネイティブ デバイス名のみを指定します。
バックスラッシュ付きオープン: ファジー テストでは、\device\cdrom\ などのように、デバイス内のルート ディレクトリを開くかのように、デバイス名の後にバックスラッシュ (\) を付けてオープン呼び出しを発行します。
この操作は、ドライバーやファイル システムがその名前空間でオープン要求をどのように管理するかを決定します。 特に、デバイスがその名前空間でのオープン要求をサポートしない場合、ドライバーは要求を失敗させるか、IoCreateDevice または IoCreateDeviceSecure を呼び出してデバイス オブジェクトを作成するときに FILE_DEVICE_SECURE_OPEN デバイス特性を設定するかのいずれかで、不正なアクセスを防ぐ必要があります。
名前付きパイプとしてオープン: ファジー テストはデバイスをオープンし、デバイスへの名前付きパイプを確立します。 アクセス パラメーター (ShareAccess) は、最初は読み取りと書き込みに設定されていますが、要求が失敗した場合は調整されます。 デバイスが名前付きパイプをサポートしていない場合、要求は失敗します。
メールスロットとしてオープン: ファジー テストは、デバイスをメールスロットとしてオープンします。 デバイスがこの種類の接続をサポートしていない場合、要求は失敗します。
ツリー接続としてオープン: ファジー テストでは、デバイスをリモート ネットワーク アクセスで使うツリー接続としてオープンします。 アクセス パラメーター (ShareAccess) は、最初は読み取りと書き込みに設定されていますが、要求が失敗した場合は調整されます。 デバイスがこの種類の接続をサポートしていない場合、要求は失敗します。
オープン呼び出しで使われるパラメーターは、デバイスの特性に適応して、呼び出しが成功する可能性を高めるために変化します。 たとえば、基本的なオープン操作が、呼び出しがデバイスのセキュリティ要件を満たさなかったために失敗した場合、ファジー テストは、より低いアクセス権の要求でオープン操作を繰り返します。 たとえば、書き込みアクセスを要求したオープン操作でセキュリティ違反のエラーが返された場合、読み取りアクセスの要求でオープン操作を繰り返します。
デバイスの直接オープン操作
デバイスの直接オープン操作では、ファジー テストは、ファイル システム内のファイルとしてではなく、デバイスとして直接デバイスをオープンします。 デバイスの直接オープン操作は常に同期となります。 呼び出しが成功した場合、ファジー テストは取得したハンドルを使って他に選んだテストを実行します。
オープン/クローズ テスト
オープン/クローズ テストでは、ファジー テストはいくつかのスレッドを作成し、それぞれ、多数の作成/オープン/クローズ シーケンスを実行します。 このテストでは、それ以外の点では単純で予想通りの、異常な量の呼び出しを処理するドライバーの能力をテストします。
オープン/クローズ テストでは、基本的なオープン操作とバックスラッシュ付きオープン テストで使ったものと同じオプションが使われ、これらのテストの直前に実行されます。
テスト バイナリ: Devfund_FuzzTest.dll テスト方法: DoOpenCloseTest
テストの詳細
仕様 |
|
プラットフォーム |
|
サポートされているリリース |
|
予想される実行時間 (分) | 15 |
カテゴリ | シナリオ |
タイムアウト (分) | 180 |
再起動が必要です | false |
特別な構成が必要です | true |
Type | automatic |
その他のドキュメント
この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。
テストの実行
テストを実行する前に、「Device.Fundamentals の信頼性テストの前提条件」で説明されているテスト要件に従って、テストのセットアップを完了します。
トラブルシューティング
HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。
HLK と WDK での Device Fundamentals テストに固有のトラブルシューティング情報は、Device.DevFund のその他のドキュメントを参照してください。
詳細
パラメーター
パラメーター名 | パラメーターの説明 |
---|---|
DQ | ターゲット デバイスを識別するために使用される WDTF SDEL クエリ - https://go.microsoft.com/fwlink/?LinkId=232678 |
Wpa2PskAesSsid | DUT またはその子デバイスの 1 つが WiFi アダプターの場合にのみ必要です。 WiFi アダプターのテストに使用できる WPA2 AES WiFi ネットワークの SSID を指定してください。 既定値は 'kitstestssid' です。 |
Wpa2PskPassword | DUT またはその子デバイスの 1 つが WiFi アダプターの場合にのみ必要です。 Wpa2PskAesSsid パラメーターを使って指定された WPA2 AES WiFi ネットワークのパスワードを指定してください。 既定値は 'password' です。 |
ChangeBufferProtectionFlags | True または False。 テスト対象のデバイスに渡されたバッファーのメモリ保護フラグを変更します。 メモリ保護フラグは、アクセスなし、読み取り専用、ページ ガードによる読み取り専用のいずれかが適用されます。 |
Impersonate | 正誤問題。 管理者以外のユーザーとしてテストを実行します。 |
FillZeroPageWithNull | True または False。 ゼロ ページをマッピングし、NULL 値を入力します。 このテストでは、ポインターを逆参照する前にポインター参照を検証しないドライバーを特定します。 |
DoPoolCheck | True または False。 プール タグとルックアサイド リストを使って、ドライバーによる ページ システム メモリ プールと非ページ システム メモリ プールの使用状況を監視します。 このオプションを使うと、処理された例外の数の変化 (これは例外処理のエラーを表す場合があります) も監視されます。 |
DoSync | 正誤問題。 また、SYNC モード (FILE_SYNCHRONOUS_IO_ALERT) でデバイス ハンドルを開きます。 ランダムな読み取りおよび書き込み操作はスキップされます。 |
TestCycles | テスト サイクルの数。 |
DriverVerifierAdditionalDrivers | ドライバーの検証ツールを有効にする必要がある追加のドライバー |
DriverVerifierExcludedFlags | テスト実行の際に手動で除外できるドライバー検証ツール フラグのプレースホルダー |
WDKDeviceID | テスト中のデバイスのデバイス ID |
QueryHardwareID | テスト中のデバイスのハードウェア ID |
WDTFREMOTESYSTEM | DUT またはその子デバイスの 1 つが、IPv6 ゲートウェイ アドレスのないワイヤード (有線) NIC である場合にのみ必要です。 必要と判断された場合は、テスト NIC がネットワーク I/O をテストするために ping を実行できる IPv6 アドレスを指定してください。 例: fe80::78b6:810:9c12:46cd |
DriverVerifierCustomizeConfiguration | このテストでドライバーの検証の設定を自動的に更新することを指定します |