Skip to main content
QUICK REVIEW

[論文レビュー] FlakiMe: Laboratory-Controlled Test Flakiness Impact Assessment. A Case Study on Mutation Testing and Program Repair

Maxime Cordy, Renaud Rwemalika|arXiv (Cornell University)|Dec 6, 2019
Software Testing and Debugging Techniques被引用数 6
ひとこと要約

FlakiMe は、変異テストおよび自動プログラム修復における影響を調査するために、テストの再現性のない挙動(フラッキング)を制御的に注入できる実験的プラットフォームである。結果から、5% のフラッキングでさえも変異スコアに 2–4% の歪みを引き起こすことが判明したが、50% の被験対象でフラッキングテストのカバレッジが原因でプログラム修復が失敗した。これは、フラッキングに強い故障局在化およびパッチ選択手法の必要性を示している。

ABSTRACT

Much research on software testing makes an implicit assumption that test failures are deterministic such that they always witness the presence of the same defects. However, this assumption is not always true because some test failures are due to so-called flaky tests, i.e., tests with non-deterministic outcomes. Unfortunately, flaky tests have major implications for testing and test-dependent activities such as mutation testing and automated program repair. To deal with this issue, we introduce a test flakiness assessment and experimentation platform, called FlakiMe, that supports the seeding of a (controllable) degree of flakiness into the behaviour of a given test suite. Thereby, FlakiMe equips researchers with ways to investigate the impact of test flakiness on their techniques under laboratory-controlled conditions. We use FlakiME to report results and insights from case studies that assesses the impact of flakiness on mutation testing and program repair. These results indicate that a 5% of flakiness failures is enough to affect the mutation score, but the effect size is modest (2% - 4% ), while it completely annihilates the ability of program repair to patch 50% of the subject programs. We also observe that flakiness has case-specific effects, which mainly disrupts the repair of bugs that are covered by many tests. Moreover, we find that a minimal amount of user feedback is sufficient for alleviating the effects of flakiness.

研究の動機と目的

  • ソフトウェアテスト手法に対するテストのフラッキングの影響を体系的かつ再現可能に評価するという課題の解消。
  • 研究者が現実世界のノイズとは分離された条件下でフラッキングを実験的に検証できる環境の提供。
  • フラッキングが変異スコアや修復効果性といった主要なテストメトリクスに与える影響の評価。
  • フラッキングテストが故障局在化およびパッチ生成に悪影響を及ぼす可能性がある、プログラム修復における感受性の高いポイントの同定。
  • フラッキングに強いテスト手法を設計するためのフレームワークの提供。

提案手法

  • FlakiMe は、テスト実行時に非決定的失敗を発生させることで、テストスイートに制御されたフラッキングを注入する。
  • 研究者はフラッキング率(例:5%、10%)を設定でき、テストケース全体または選択的に適用可能である。
  • FlakiMe はテスト実行レイヤーで動作し、ソースコードやテストロジックを変更せずにテスト結果を変更する。
  • 既存のテストパイプラインと統合可能で、実世界のシステムにおいて制御実験を可能にする。
  • 変異テストおよび自動プログラム修復に関する事例研究を可能にするため、フラッキングテスト挙動をシミュレートする。
  • ユーザーが「本物の」失敗を特定できるフィードバックメカニズムを備え、故障局在化のロバスト性を向上させる。

実験結果

リサーチクエスチョン

  • RQ1制御されたフラッキングが、さまざまなフラッキング度合いにおいて変異テストスコアにどのように影響するか?
  • RQ2テストのフラッキングが、自動プログラム修復手法による故障局在化および正しいパッチ生成の能力に、どの程度悪影響を及ぼすか?
  • RQ3複数のテストが同じ不具合ステートメントをカバーする場合、フラッキングがプログラム修復の故障局在フェーズにどのように影響するか?
  • RQ4本物の失敗を特定するユーザーのフィードバックは、フラッキングテスト環境下でのプログラム修復のロバスト性をどの程度向上できるか?
  • RQ5カバーするテストの数が、フラッキングテストの失敗によって有効なパッチが破棄される確率にどのように影響するか?

主な発見

  • 5% のフラッキング率では、変異スコアに 2% から 4% の変動が生じ、このメトリクスにわずかだが測定可能な影響があることが示された。
  • フラッキングはプログラム修復に顕著に深刻な悪影響を及ぼす:5% のフラッキング下でも、被験対象の 50% がパッチ生成不能となった。
  • プログラム修復における故障局在フェーズは、フラッキングテストに対して極めて感受性が高く、とくに不具合が多数のテストでカバーされている場合に顕著である。
  • 不審度スコアに基づくフィルタリングは、フラッキングテストがスコアを歪める可能性があるため、有効なパッチが除外されるリスクを高め、結果としてパッチ生成の失敗を引き起こす可能性がある。
  • カバーするテストが少ないパッチは、より多く保持され、生成されやすいため、遺伝的プログラミングにおけるフィットネス関数は、低テストカバレッジのパッチを優先すべきであると示唆される。
  • ユーザーが本物の失敗を特定するフィードバックは、誤検出のリスクを顕著に低減し、フラッキング環境下での修復のロバスト性を向上させることができる。

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

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

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

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