Skip to main content
QUICK REVIEW

[論文レビュー] Selecting Fault Revealing Mutants

Thierry Titcheu Chekam, Mike Papadakis|arXiv (Cornell University)|Mar 21, 2018
Software Testing and Debugging Techniques参考文献 7被引用数 5
ひとこと要約

この論文では、実行前の静的プログラム特徴量(制御フローガラフ内の変異位置、コードの複雑さ、制御/データ依存関係など)を用いて、故障を露わにする変異を事前に選別・優先順位付けする機械学習手法FaRMを提案する。FaRMは、ランダム選択、選択的変異、バグ予測手法と比較して、実際のバグを23%〜34%多く発見し、実行コストを最小限に抑えつつ、変異テストの効率性と有効性を著しく向上する。

ABSTRACT

Mutant selection refers to the problem of choosing, among a large number of mutants, the (few) ones that should be used by the testers. In view of this, we investigate the problem of selecting the fault revealing mutants, i.e., the mutants that are most likely to be killable and lead to test cases that uncover unknown program faults. We formulate two variants of this problem: the fault revealing mutant selection and the fault revealing mutant prioritization. We argue and show that these problems can be tackled through a set of 'static' program features and propose a machine learning approach, named FaRM, that learns to select and rank killable and fault revealing mutants. Experimental results involving 1,692 real faults show the practical benefits of our approach in both examined problems. Our results show that FaRM achieves a good trade-off between application cost and effectiveness (measured in terms of faults revealed). We also show that FaRM outperforms all the existing mutant selection methods, i.e., the random mutant sampling, the selective mutation and defect prediction (mutating the code areas pointed by defect prediction). In particular, our results show that with respect to mutant selection, our approach reveals 23% to 34% more faults than any of the baseline methods, while, with respect to mutant prioritization, it achieves higher average percentage of revealed faults with a median difference between 4% and 9% (from the random mutant orderings).

研究の動機と目的

  • 生成される変異の数が膨大であることが原因で発生する変異テストのスケーラビリティのボトル neck を解消すること。
  • テスト実行前に、未知の実際のバグを露わにする「故障を露わにする」変異とされる、最も可能性の高い変異を特定・優先順位付けすること。
  • 初期選択にテストスイートや変異実行に依存しない、軽量な静的解析に基づく手法を開発すること。
  • killability(殺しやすさ)と故障の露わさに関連するプログラム特徴量を活用して、機械学習を用いて変異の選択と優先順位付けを改善すること。
  • 人的作業を削減し、実世界のソフトウェアテストにおける故障検出率を向上させる実用的でスケーラブルなソリューションを提供すること。

提案手法

  • FaRMは、制御フローグラフ内の変異位置、コードの複雑さ、制御/データ依存関係などの静的プログラム特徴量を用いて、変異を特徴づける。
  • この手法は、教師あり機械学習を用いて、変異が殺せる可能性があるか、同等であるか、実際のバグを露わにする可能性があるかを分類する。
  • 特徴量は、テストケースや変異の実行を一切行わずに、ソースコードおよび変異表現から抽出される。
  • モデルは、以前にテスト済みのソフトウェアプロジェクトや前回リリースの履歴データに基づいて学習され、新しいシステムへの転移学習が可能になる。
  • 変異の優先順位付けでは、FaRMが予測された故障露わ可能性に基づいて変異を順位付けし、テスト担当者が最初に高価値の変異に集中できるようにする。
  • 性能評価には、1,692件の実際のバグと45の不具合を含むプログラムバージョンを用いた10分割交差検証が用いられた。

実験結果

リサーチクエスチョン

  • RQ1静的プログラム特徴量は、殺せる可能性や実際のバグを露わにする可能性が高い変異を効果的に予測できるか?
  • RQ2FaRMの変異選択性能は、ランダム選択、選択的変異、バグ予測に基づく手法と比較して、実際のバグをどれほど効果的に露わにできるか?
  • RQ3故障検出率を維持または向上させながら、解析対象の変異数をどの程度削減できるか?
  • RQ4テスト実行予算が限られた状況でも、FaRMが故障露わ率を最大化するように変異を優先順位付けできるか?
  • RQ5FaRMは、訓練に使ったプロジェクトとは関係のない異なるソフトウェアシステムやバグタイプに対しても一般化可能か?

主な発見

  • FaRMは、ランダムな変異サンプリング、選択的変異、バグ予測に基づく変異手法と比較して、実際のバグを23%〜34%多く発見した。
  • 変異の優先順位付けにおいて、FaRMはランダムな変異順序と比較して、故障露わ率で中央値で4%〜9%の改善を達成した。
  • FaRMは、変異選択および優先順位付けの両タスクにおいて、すべてのベースライン手法に対して統計的に有意な改善を示した。
  • 1,692件の実際のバグと45の不具合を含むプログラムバージョンを用いた10分割交差検証により、FaRMの性能が多様なソフトウェアシステムで安定していることが検証された。
  • テスト実行や動的解析を一切必要としない静的特徴量のみを用いることで、FaRMはテストパイプラインの初期段階に適用可能となり、全体のコストを削減できる。
  • 本研究では、故障を露わにする変異を静的コード特性に基づいて効果的に予測できることを示し、実行前における機械学習を用いた変異選択の実現可能性を裏付けた。

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

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

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

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