Kernkonzepte
大規模言語モデルを使用して、ソースコードの特定の場所に挿入されたプレースホルダーを置き換えることで、プログラムの変異体を生成する。
Zusammenfassung
本論文では、LLMorpheusと呼ばれる突然変異テストツールを提案している。LLMorpheusは、大規模言語モデル(LLM)に対して、ソースコードの特定の場所に挿入されたプレースホルダーを置き換えるよう促すことで、プログラムの変異体を生成する。
具体的には以下の手順で動作する:
- ソースコードを解析し、変異体を生成する候補となる場所(if文の条件式、ループの初期化式や更新式、関数呼び出しの引数など)を特定し、それらの場所をプレースホルダーで置き換える。
- LLMに対して、プレースホルダーを変異体コードに置き換えるよう促すプロンプトを生成する。プロンプトには、変異テストの概要、置き換えるべきプレースホルダーのオリジナルコード、変異体コードを生成するための指示などが含まれる。
- LLMが生成した変異体コードを抽出し、構文的に正しいものだけを保持する。
- 変異体コードをStrykerJSに渡し、テストスイートに対する影響を評価する(テストに合格したら"生存"、失敗したら"殺された"、タイムアウトしたら"タイムアウト"と分類する)。
- 変異体の結果を分析し、レポートを生成する。
LLMorpheusは、従来の突然変異テストツールでは生成できない、実際のバグに似た変異体を生成できることが示された。また、生存した変異体の多くが実際の動作の違いを反映していることも確認された。LLMorpheusの実行コストも実用的な範囲内であることが確認された。
Statistiken
変異体の総数は6,712個
3,237個の変異体がテストに合格(殺された)
3,155個の変異体がテストに失敗(生存)
320個の変異体がタイムアウトした
Zitate
"LLMorpheusは、従来の突然変異テストツールでは生成できない、実際のバグに似た変異体を生成できる。"
"生存した変異体の多くが実際の動作の違いを反映している。"
"LLMorpheusの実行コストも実用的な範囲内である。"