知識マップ: Application Verifierで作るWindows異常系テスト基盤
記事「Application Verifierで作るWindows異常系テスト基盤」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
Application Verifierは、Windowsのuser-modeアプリに対してOS API利用や資源管理を実行時に監視するランタイム検証ツールで、無効なハンドルの使用やヒープ破壊をverifier stopとして検出する。Low Resource Simulationというフォールトインジェクションで各種API呼び出しを確率的に失敗させれば、本当のメモリ不足を起こさずに低リソース時のfailure pathを前倒しで踏ませられる。Handlesチェックを有効にすると自動的にhandle tracingが働き、WinDbgの!htraceでハンドルの履歴を、!avrfで設定やstopの状態を確認できる。対象EXEには起動前の設定が必要で後付けはできず、長時間稼働するアプリのハンドルリーク調査をApplication Verifierだけに任せるのは現実的でないため、専用のharness EXEと自前ログの組み合わせが実務的な運用になる。
flowchart LR
accTitle: Application Verifierによる異常系テストの知識マップ
accDescr: Application Verifierがfault injectionによるLow Resource Simulationやhandle tracingを通じて無効なハンドル使用やヒープ破壊をverifier stopとして検出できること、WinDbgの!avrfや!htraceで原因を追えること、専用のharness EXEに対して有効化する運用と長時間稼働のハンドルリーク調査には自前ログとの併用が必要なことを示す図。
application_verifier["Application Verifier"]
abnormal_path_testing["異常系テスト"]
fault_injection["フォールトインジェクション(fault injection)"]
low_resource_simulation["Low Resource Simulation"]
handle_tracing["ハンドルトレーシング(handle tracing)"]
windbg["WinDbg"]
invalid_handle["無効なハンドルの使用(invalid handle)"]
heap_corruption["ヒープ破壊(heap corruption)"]
page_heap["ページヒープ(page heap)"]
verifier_stop["verifier stop"]
avrf_command["!avrf(WinDbg拡張コマンド)"]
harness_exe_pattern["harness EXEパターン"]
handle_leak["ハンドルリーク"]
abnormal_path_testing -.->|"利用する"| application_verifier
application_verifier -->|"利用する"| fault_injection
low_resource_simulation -->|"利用する"| fault_injection
application_verifier -->|"利用する"| low_resource_simulation
application_verifier -.->|"利用する"| handle_tracing
handle_tracing -->|"で確認できる"| windbg
invalid_handle -->|"で確認できる"| application_verifier
heap_corruption -->|"で確認できる"| application_verifier
heap_corruption -->|"で確認できる"| page_heap
verifier_stop -->|"で確認できる"| avrf_command
invalid_handle -->|"原因になり得る"| verifier_stop
heap_corruption -->|"原因になり得る"| verifier_stop
harness_exe_pattern -->|"推奨される対応"| application_verifier
application_verifier -->|"用いるのは非推奨"| handle_leak
avrf_command -.->|"前提とする"| windbg
low_resource_simulation -->|"で構成できる"| application_verifier
harness_exe_pattern -->|"推奨される対応"| abnormal_path_testing
概念間の関係(全17件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- 異常系テストはApplication Verifierを利用します。
- Application Verifierはフォールトインジェクション(fault injection)を利用します。
- Low Resource Simulationはフォールトインジェクション(fault injection)を利用します。
- Application VerifierはLow Resource Simulationを利用します。
- Application Verifierはハンドルトレーシング(handle tracing)を利用します。
- ハンドルトレーシング(handle tracing)はWinDbgで確認できます。
- 無効なハンドルの使用(invalid handle)はApplication Verifierで確認できます。
- ヒープ破壊(heap corruption)はApplication Verifierで確認できます。
- ヒープ破壊(heap corruption)はページヒープ(page heap)で確認できます。
- verifier stopは!avrf(WinDbg拡張コマンド)で確認できます。
- 無効なハンドルの使用(invalid handle)はverifier stopの原因になることがあります。
- ヒープ破壊(heap corruption)はverifier stopの原因になることがあります。
- harness EXEパターンはApplication Verifierに対する本記事の推奨です。
- Application Verifierをハンドルリークに用いることは推奨されません。
- !avrf(WinDbg拡張コマンド)はWinDbgを前提とします。
- Low Resource SimulationはApplication Verifierで構成できます。
- harness EXEパターンは異常系テストに対する本記事の推奨です。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。