知識マップ: 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と自前ログの組み合わせが実務的な運用になる。

Application Verifierによる異常系テストの知識マップApplication Verifierがfault injectionによるLow Resource Simulationやhandle tracingを通じて無効なハンドル使用やヒープ破壊をverifier stopとして検出できること、WinDbgの!avrfや!htraceで原因を追えること、専用のharness EXEに対して有効化する運用と長時間稼働のハンドルリーク調査には自前ログとの併用が必要なことを示す図。利用する利用する利用する利用する利用するで確認できるで確認できるで確認できるで確認できるで確認できる原因になり得る原因になり得る推奨される対応用いるのは非推奨前提とするで構成できる推奨される対応Application Verifier異常系テストフォールトインジェクション(fault injection)Low Resource Simulationハンドルトレーシング(handle tracing)WinDbg無効なハンドルの使用(invalid handle)ヒープ破壊(heap corruption)ページヒープ(page heap)verifier stop!avrf(WinDbg拡張コマンド)harness EXEパターンハンドルリーク

概念間の関係(全17件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Application Verifier
Windowsのuser-modeアプリに対するランタイム検証ツールで、OS API利用や資源の扱い方を監視し誤用の検出や意図的な失敗の注入を行う。
異常系テスト
低リソース時やAPI失敗時など、普段の機能テストでは通らないfailure pathを意図的に踏ませて検証するテストの取り組みである。
Low Resource Simulation
HeapAlloc・CreateFile・CreateEventなどのAPI呼び出しを設定した確率で失敗させる、Application Verifierのfault injection機能である。
ハンドルトレーシング(handle tracing)
ハンドルのopen・close・不正参照の履歴をスタック付きで記録する、Application VerifierのHandlesチェックが有効な際に自動で有効になる機能である。
無効なハンドルの使用(invalid handle)
close済みハンドルの再使用や壊れたハンドル値の使用など、無効なハンドルを参照する誤用である。
ヒープ破壊(heap corruption)
バッファ超過やuse-after-freeなどによってヒープの内部構造が壊れる現象である。
verifier stop
Application Verifierが誤った使い方を検出したときに出す検出イベントで、番号が振られ、デバッガー下ではその場でブレークする。
harness EXEパターン
本番アプリ本体ではなく、対象DLLを実際に動かすテスト専用のEXEに対してApplication Verifierを有効化する運用パターンである。
!avrf(WinDbg拡張コマンド)
現在のApplication Verifier設定や、いま起きているverifier stopをデバッガー上で確認するコマンドである。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。