Skip to main content
QUICK REVIEW

[論文レビュー] Dynamic Code Coverage with Progressive Detail Levels

Alexandre Perez|arXiv (Cornell University)|Jun 19, 2013
Software Testing and Debugging Techniques参考文献 37被引用数 5
ひとこと要約

本稿では、中間的な故障局所化結果に基づいて段階的に細分化する、動的コードカバレッジ(DCC)と呼ばれる新規な故障局所化手法を提案する。この手法は、初期段階で粗い粒度のコードカバレッジから始めることで、インストルメンテーションのオーバーヘッドを低減する。従来のスペクトラムベースの故障局所化手法と比較して、実行時間は平均27%短縮され、診断レポートのサイズは63%小さくなるが、診断の正確性は維持される。

ABSTRACT

Nowadays, locating software components responsible for observed failures is one of the most expensive and error-prone tasks in the software development process. To improve the debugging process efficiency, some effort was already made to automatically assist the detection and location of software faults. This led to the creation of statistical debugging tools such as Tarantula, Zoltar and GZoltar. These tools use information gathered from code coverage data and the result of test executions to return a list of potential faulty locations. Although helpful, fault localization tools have some scaling problems because of the fine-grained coverage data they need to perform the fault localization analysis. Instrumentation overhead, which in some cases can be as high as 50% is the main cause for their inefficiency. This thesis proposes a new approach to this problem, avoiding as much as possible the high level of coverage detail, while still using the proven techniques these fault localization tools employ. This approach, named DCC, consists of using a coarser initial instrumentation, obtaining only coverage traces for large components. Then, the instrumentation detail of certain components is progressively increased, based on the intermediate results provided by the same techniques employed in current fault localization tools. To assess the validity of our proposed approach, an empirical evaluation was performed, injecting faults in four real-world software projects. The empirical evaluation demonstrates that the DCC approach reduces the execution overhead that exists in spectrum-based fault localization, and even presents a more concise potential fault ranking to the user. We have observed execution time reductions of 27% on average and diagnostic report size reductions of 63% on average.

研究の動機と目的

  • スペクトラムベースの故障局所化(SFL)ツールにおける高いインストルメンテーションのオーバーヘッドを低減すること。これは最大50%に達する可能性がある。
  • 最小限のインストルメンテッドコード量を維持しつつ、SFLと同等の診断の正確性を保つこと。
  • より簡潔な故障局所化レポートを生成することで、デバッグの効率を向上させること。
  • 中間的な結果に基づいて粒度を動的に適応させる反復的インストルメンテーションのアプローチを検討すること。
  • 実際のソフトウェアプロジェクトに故障を注入して、実証的にこのアプローチを検証すること。

提案手法

  • DCCは粗い粒度のインストルメンテーションから開始し、クラスなどの大きなコンポonentに対してのみカバレッジデータを収集する。
  • 初期の粗いデータに対して、標準的な統計的故障局所化手法(例:Tarantula、GZoltar)を適用し、故障の可能性が高いかつてのコンポonentを特定する。
  • 中間的な結果に基づき、選択されたコンポonentに対してインストルメンテーションの詳細度を動的に向上させ、カバレッジをメソッドまたはステートメントレベルに精錬する。
  • このプロセスは反復的である:故障の可能性が高いかつてのコンポonentのみが、より詳細にインストルメンテーションされ、全体のインストルメンテーション範囲が削減される。
  • 段階的に精錬されたデータ上で既存のSFLアルゴリズムを用いるため、既存の故障局所化手法と互換性が保たれる。
  • 中間診断スコアに基づき、コンポonentごとにインストルメンテーションの粒度を調整することで、適応的な精錬が可能になる。

実験結果

リサーチクエスチョン

  • RQ1より詳細なコードカバレッジを使用しない故障局所化アプローチが、従来のSFLと同等の診断の正確性を達成できるか?
  • RQ2段階的な詳細度によるインストルメンテーションの低減が、デバッグの効率を向上させられるか?
  • RQ3初期段階で粗いカバレッジを使用し、その後に的確な精錬を施すことで、実行時間と診断レポートのサイズが短縮されるか?
  • RQ4インストルメンテーションの粒度を動的に調整することで、故障局所化の正確性にどのような影響を与えるか?
  • RQ5DCCアプローチは、故障を注入した実世界のソフトウェアシステムに効果的に適用可能か?

主な発見

  • DCCは、従来のSFL手法と比較して、平均して実行時間を27%短縮した。
  • 診断レポートのサイズは平均で63%小さくなり、より簡潔な故障ランク付けが可能になった。
  • 4つの実世界のソフトウェアプロジェクトにおける故障注入による検証を通じて、標準的なSFLと同等の診断の正確性を維持した。
  • 動的で反復的な精錬戦略により、故障局所化の正確性を損なわず、インストルメンテッドコードの範囲を顕著に削減できた。
  • 低確率のコンポonentを早期に除外することで、必要な箇所にのみインストルメンテーションが集中した。
  • 実証的評価により、DCCは故障を注入した実世界のソフトウェアシステムにおいて、実用的かつ効率的であることが確認された。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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