テストデータの自動生成

自律的なテスト実行を繰り返し行い、プログラムの奥深くのバグを検出

Mayhem for Codeは、カーネギーメロン大学での研究から得た特許技術であるシンボリック実行エンジンとフィードバックループを組み合わせた独自のファジング技術を使用し、高精度なテストケースの生成とテストの実行を自動的に繰り返すことで、カバレッジを継続的に拡大しながら、プログラムの奥深くに潜むバグや脆弱性を発見します。

ガイド付きファジングとシンボリック実行を組み合わせたファズ生成

Mayhem for Codeはガイド付きファジングとシンボリック実行を組み合わせることで、効率的なファズ生成を実現しています。

ガイド付きファジングとは、ファズが通ったパスのフィードバックを受け取り、まだ通っていない箇所に向けたテストデータを作成していく実行速度の速い手法です。これだけでも、カバレッジ向上において有効ですが、もぐらたたきのようにテストしていくため、冗長性のあるテストデータを生成していくことになります。

シンボリック実行は、形式的なコンピューターサイエンスの手法を使用して、プログラム中のあるノードが実行される入力を特定する解析技術です。入力を特定したら、有効な入力を基にネガティブテストのための無効な入力を派生させます。そのため、より冗長性のないテストパターンを作成することができます。

手間をかけずにコードカバレッジを最大化

Mayhem for Codeの自律的なテスト実行により、テスト作業の負荷を低減しつつ、高いカバレッジを実現することができます。

下の図は、人手でのテストではカバレッジを上げることが難しい複雑なテスト対象に対して、Mayhem for Codeでテストを実施した例です。Cyclomatic複雑度が高い関数を対象とした単体テストと、Cyclomatic複雑度が高い複数の関数を対象とした結合テストを行った際の実行時間とカバレッジのデータを記載しています。

Cyclomatic複雑度が168と非常に複雑な関数の単体テストをMayhem for Codeを利用して実施した結果、3時間の実行時間でC0カバレッジ100%、MC/DCカバレッジ83%を満たすことができています。また、Cyclomatic複雑の高い16個の関数を結合したテストの場合も、3時間でC0カバレッジ98%、MC/DCカバレッジ86%と高いカバレッジを実現しています。

Mayhem for Codeによるファジング・テスト

複雑なテスト対象に対してMayhem for Codeによるテストを実施した例

単体・結合テスト対応ファジングツール Mayhem for Codeに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
se-info@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。