Skip to main content
QUICK REVIEW

[論文レビュー] Zest: Validity Fuzzing and Parametric Generators for Effective Random Testing

Rohan Padhye, Caroline Lemieux|arXiv (Cornell University)|Nov 30, 2018
Software Testing and Debugging Techniques被引用数 6
ひとこと要約

Zestは、構造的入力を備えたプログラムの意味解析段階におけるカバレッジとバグ検出を向上させるために、QuickCheck風のランダム入力生成器を決定的パラメトリック生成器に変換するフィードバック指向技術である。未型パrameter空間における変異を入力ドメイン内の構造的変更にマッピングし、コードカバレッジと有効性フィードバックを用いることで、Zestは分岐カバレッジを1.03倍〜2.81倍向上させ、Maven や Rhino などのJavaツールで10件の新しいバグを発見した。これらのバグは、平均して1件あたり10分以内に特定された。

ABSTRACT

Programs expecting structured inputs often consist of both a syntactic analysis stage, which parses raw input, and a semantic analysis stage, which conducts checks on the parsed input and executes the core logic of the program. Generator-based testing tools in the lineage of QuickCheck are a promising way to generate random syntactically valid test inputs for these programs. We present Zest, a technique which automatically guides QuickCheck-like randominput generators to better explore the semantic analysis stage of test programs. Zest converts random-input generators into deterministic parametric generators. We present the key insight that mutations in the untyped parameter domain map to structural mutations in the input domain. Zest leverages program feedback in the form of code coverage and input validity to perform feedback-directed parameter search. We evaluate Zest against AFL and QuickCheck on five Java programs: Maven, Ant, BCEL, Closure, and Rhino. Zest covers 1.03x-2.81x as many branches within the benchmarks semantic analysis stages as baseline techniques. Further, we find 10 new bugs in the semantic analysis stages of these benchmarks. Zest is the most effective technique in finding these bugs reliably and quickly, requiring at most 10 minutes on average to find each bug.

研究の動機と目的

  • 構造的入力を備えたプログラムの意味解析段階を探索するためのランダム入力生成の効果を高めること。
  • 従来の生成器ベースのテストツールが、単なる文法的整合性の検査にとどまっているという限界を是正すること。
  • 未検査または脆弱な意味論的論理パスに向けて自動的に入力生成をガイドする技術を開発すること。
  • 実世界のプログラムの意味解析コンponentにおける微細なバグを発見するのに要する時間と作業を削減すること。

提案手法

  • Zestは、パrameterized入力モデルを導入することで、ランダム入力生成器を決定的パラメトリック生成器に変換する。
  • 未型パrameter空間における変異を、入力ドメイン内の構造的変更にマッピングすることで、標的的な探索を可能にする。
  • コードカバレッジと入力有効性からのフィードバックを用いて、未検査または無効なパスに向けてパラメータ探索をガイドする。
  • フィードバック指向探索により、反復的にパラメータを精錬し、意味解析論理のカバレッジを最大化する。
  • Zestは、入力文法の構造と意味的制約を活用して、文法的にも有効で、意味的にも多様な入力を生成する。

実験結果

リサーチクエスチョン

  • RQ1フィードバック指向のパラメータ探索は、構造的入力プログラムにおける意味解析論理のカバレッジを向上させることができるか?
  • RQ2有効性とカバレッジフィードバックでガイドされたパラメトリック生成器は、従来のランダム生成器に比べてバグをより効果的に発見できるか?
  • RQ3このような技術は、実世界のプログラムにおいて未知のバグをどれほど効果的に検出できるか?
  • RQ4発見された脆弱性の性能オーバーヘッドと検出までの時間はどの程度か?

主な発見

  • Zestは、5つのJavaベンチマークにおいて、ベースライン手法に比べて1.03倍〜2.81倍の分岐カバレッジを達成した。
  • Zestは、Maven、Ant、BCEL、Closure、Rhinoの意味解析コンponentで10件の新しいバグを発見した。
  • Zestは、これらの10件のバグを平均して1件あたり10分以内に特定した。これは、高い効率性を示している。
  • Zestは、評価された手法の中で、意味解析バグを信頼性高くかつ迅速に同定する最も効果的な技術であった。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。