研究実績の概要 |
(本年度の成果) ランダム変異を用いたバグ生成の対象として、Linked List 処理を対象にくわえ実験を行った。生成したバグ入りプログラムを人間が分析評価し、その特徴をしらべた。さらに最終年度のまとめとして、プログラミングに関するシンポジウムで発表を行った。 (研究期間全体の成果)バグ生成を自動的に行なう手法として、正しいプログラムコードにランダムに変異を加える手法を提案した。手法としてはソフトウェアテスティングにおける Fuzz Testing と同じであるが、それをバグ生成を目的とすることが新しい。生成した変異コードに対して多数の、あるいは網羅的なテストデータに対して実行し、全てではないができるだけ多数のテスト入力に正解できるものを「よいバグ入りプログラム」と定義した。この操作を多数回繰り返すことで、きわめて少数のテストだけに誤答する(ほとんど正しい)プログラムを生成できる。本研究ではソーティング(heapsort, quicksort)、リスト操作(linked list)、再帰的なプログラム(n-queen)を対象とし、いずれに対してもバグ入りプログラムを生成することができた。一方、よりよい結果を得るために一度作成したバグ入りプログラムにさらに変異を適用する遺伝的アルゴリズムの手法を行ってみたが、個々の変異が相関しあうためによい結果は得られなかった。 得られたバグ入りプログラムをデバッグのベンチマークとして利用する可能性を見るために人間が分析分類を行ってみたところ、人間の目には全くの誤りに見えるにもかかわらず多数のテストに合格するプログラムが発見できた。これは非常に難しいデバッグ課題として利用が可能ではないかと考えている。
|