生活基盤として利用されるWebアプリケーションの開発において、ソフトウェア開発者(以下、開発者)が欠陥を十分に検出・除去(テスト・デバッグ)することが重要である。先行研究では、人工的に欠陥を作り(欠陥作成方法を変異操作と呼ぶ)テストの検出能力を測定する変異解析に取り組んできた。変異解析は欠陥を十分に検出するテストの実施に役立つが、開発者は検出された欠陥を正しく除去する必要があり難しい。デバッグ作業を自動化する自動プログラム修正の最先端研究では、テストをパスするよう修正対象プログラムの文を無作為に追加・削除・置換する「生成と検証による修正手法」が提案されている。しかし、テストをパスするプログラムを生成できたとしても、テストが不適切な場合は欠陥を正しく除去できていない可能性がある。 そこで本研究では、開発者が変異解析を実施し検出されるWebアプリケーションの欠陥を対象とする自動プログラム修正手法を実現する。変異解析における変異操作は正プログラムから誤プログラムを生成するので、提案手法は「変異操作の逆(デバッグ操作と呼ぶ)は誤プログラムから正プログラムを生成する」という着想に基づく。本研究ではまず、先行研究の変異操作を精査し、逆となるデバッグ操作を定義した。次に、Ajax技術の特徴分類を利用してプログラム修正空間を効率的に探索する手法を開発した。これらにより、Webアプリケーションの欠陥を効果的・効率的に自動除去でき、高信頼のWebアプリケーション開発に役立つと考えられる。提案手法をRevAjaxMutatorと呼ぶプロトタイプツールに実装し、オープンソースソフトウェアとして公開した。
|