Skip to main content
QUICK REVIEW

[論文レビュー] A Factorial Experiment on Scalability of Search Based Software Testing

Arash Mehrmand, Robert Feldt|arXiv (Cornell University)|Jan 12, 2011
Software Testing and Debugging Techniques参考文献 40被引用数 5
ひとこと要約

本研究では、文法的進化(GE)を用いて生成された複雑性が増すJavaプログラムを対象に、因子実験を用いて遺伝的アルゴリズム(GA)を用いた探索型ソフトウェアテスト(SBST)とランダムテストを比較した。結果は、コードの複雑性が高くなるほど、GAがランダムテストを常に上回ることを示しており、特に文書および分岐カバレッジの観点で、自動テストデータ生成におけるGAの優れた効率性を裏付けている。

ABSTRACT

Software testing is an expensive process, which is vital in the industry. Construction of the test-data in software testing requires the major cost and to decide which method to use in order to generate the test data is important. This paper discusses the efficiency of search-based algorithms (preferably genetic algorithm) versus random testing, in soft- ware test-data generation. This study differs from all previous studies due to sample programs (SUTs) which are used. Since we want to in- crease the complexity of SUTs gradually, and the program generation is automatic as well, Grammatical Evolution is used to guide the program generation. SUTs are generated according to the grammar we provide, with different levels of complexity. SUTs will first undergo genetic al- gorithm and then random testing. Based on the test results, this paper recommends one method to use for automation of software testing.

研究の動機と目的

  • 探索型ソフトウェアテスト(SBST)における遺伝的アルゴリズム(GA)とランダムテストの、スケーラビリティおよび効率性を、コードの複雑性の変動に応じて評価すること。
  • 文法的進化(GE)を用いて、制御された増加的複雑性を持つソフトウェアのテスト対象(SUT)を自動生成すること。
  • 低・中・高複雑性のプログラムにおいて、GAとランダムテストの両方が高い文書および分岐カバレッジを達成できるかを比較すること。
  • 特にプログラムの意味論、ループ、インストルメンテーションのオーバーヘッドに関連する自動テスト生成および実行の限界を特定すること。

提案手法

  • 因子実験デザインを採用し、要因としてテスト手法(GA対ランダムテスト)、コードの複雑性(低・中・高)、カバレッジ目標(文書および分岐カバレッジ)を設定した。
  • 定義済みの複雑性レベルを持つJavaプログラムを生成するために、カスタムBNF文法を用いた文法的進化(GE)を採用した。
  • 各生成されたSUTに対して、GAおよびランダムテストを用いて文書および分岐カバレッジの割合を測定した。
  • カバレッジは、3つの複雑性レベル(75、150、300文;25、50、100分岐)で測定され、各レベルに10のプログラムが使用された。
  • カバレッジを追跡するためにインストルメンテーションを適用したが、特にネストされたまたは複雑なループ構造ではパフォーマンスのオーバーヘッドが生じた。
  • 無限ループ、範囲外の値、到達不能な条件などの問題は、ループ終了条件およびBNF制約を用いて緩和された。

実験結果

リサーチクエスチョン

  • RQ1コードの複雑性が増すに従い、遺伝的アルゴリズム(GA)とランダムテストの間で、文書および分岐カバレッジを達成する性能にどのような差が生じるか?
  • RQ2文法的進化(GE)を用いた自動プログラム生成は、SBSTにおけるスケーラブルで再現可能な実験をどの程度可能にするか?
  • RQ3自動生成された複雑なJavaプログラムに適用した場合、GAおよびランダムテストの主な限界は何か?
  • RQ4到達不能な条件、無限ループ、データオーバーフローなどの要因は、SBSTにおけるテストカバレッジおよびツールの信頼性にどのように影響を与えるか?

主な発見

  • 遺伝的アルゴリズム(GA)は、すべての複雑性レベルで、ランダムテストを顕著に上回った。
  • 高複雑性レベル(300文、100分岐)では、GAがランダムテストよりも顕著に高いカバレッジを達成し、GAのカバレッジは常に90%以上、ランダムテストは70%未満に留まった。
  • ランダムテストは実行時間は速かったが、複雑なコードでは意味のあるカバレッジに到達できず、実世界のテストには効果的でなかった。
  • 文の数はコードの複雑性の良好な指標ではなかった。条件や制御構造の複雑さが、テストの難易度に大きく影響していた。
  • インストルメンテーションおよびループ処理(特に終了ループ機構)がパフォーマンスのボトルネックを引き起こし、特に複雑またはネストされた構造では完全なカバレッジが制限された。
  • BNFベースのGEによるプログラム生成は、制御されたスケーラブルな実験を可能にしたが、意味的挙動の制御や病理的コードの回避という課題を伴った。

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

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

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

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