私たちのファジングの本(Takanen、DeMott、Millerによる)には、ネガティブテスト(堅牢性、信頼性、文法テスト、ファジング、同じものの多くの名前)のメトリックとカバレッジに特化したいくつかの章があります。また、当社のホワイトペーパーで最も重要な側面をここに要約しようとしました。
http://www.codenomicon.com/products/coverage.shtml
そこからのスニペット:
カバレッジは、精度と精度という2つの機能の合計と見なすことができます。精度はプロトコルカバレッジに関係しています。テストの精度は、テストがさまざまなプロトコルメッセージ、メッセージ構造、タグ、およびデータ定義をどの程度カバーしているかによって決まります。一方、精度は、テストがさまざまなプロトコル領域内のバグをどれだけ正確に見つけることができるかを測定します。したがって、精度は異常カバレッジの一形態と見なすことができます。ただし、精度と精度はかなり抽象的な用語であるため、カバレッジを評価するためのより具体的なメトリックを調べる必要があります。
最初のカバレッジ分析の側面は、攻撃対象領域に関連しています。テスト要件分析は、常にテストが必要なインターフェイスを特定することから始まります。さまざまなインターフェイスの数と、さまざまなレイヤーに実装されているプロトコルによって、ファザーの要件が設定されます。各プロトコル、ファイル形式、またはAPIには、セキュリティ要件に応じて、独自のタイプのファザーが必要になる場合があります。
2番目のカバレッジメトリックは、ファザーがサポートする仕様に関連しています。このタイプのメトリックは、ツールの基礎がファザーの作成に使用された仕様によって形成されているため、モデルベースのファザーで簡単に使用できます。したがって、それらは簡単に一覧表示できます。モデルベースのファザーは、仕様全体をカバーする必要があります。一方、ミューテーションベースのファザーは必ずしも仕様を完全にカバーしているわけではありません。仕様から1つのメッセージ交換サンプルを実装または含めることは、仕様全体がカバーされることを保証するものではないためです。通常、ミューテーションベースのファザーが仕様のサポートを主張する場合、それは仕様を実装するテストターゲットと相互運用可能であることを意味します。
特にプロトコルファジングに関して、3番目に重要なメトリックは、選択したファジングアプローチのステートフルネスのレベルです。完全にランダムなファザーは、通常、複雑なステートフルプロトコルの最初のメッセージのみをテストします。使用しているファジングアプローチが状態を認識しているほど、複雑なプロトコル交換でファジングが深くなる可能性があります。ステートフルネスは、使用されるプロトコルモデルの品質を定義するためのより多くのメトリックであり、したがって、テストを実行することによってのみ検証できるため、ファジングツールに対して定義するのは難しい要件です。
これがお役に立てば幸いです。また、コードカバレッジやその他の多かれ少なかれ役に立たないデータを調べるなど、他の指標に関する研究もあります。;)メトリクスは論文にとって素晴らしいトピックです。このトピックに関する広範な調査にアクセスしたい場合は、ari.takanen@codenomicon.comまでメールでお問い合わせください。