試験の自動化から
私は、ソフトウェアの試験の自動化という技法に当面は焦点をあてて、長期的にはソフトウェアの品質向上プロセスの効率化/高品質化を目標として研究を行っているわけだ。
試験の自動化に関する研究といえば、王道は"Model Based Testing"。つまりモデル化された仕様から試験項目/期待される試験結果を生成、実行するって話が多い。また、試験ではないが、形式記述された仕様や設計成果物を用いた数学的に正しさや期待する性質を満たしているかを検証しようというような話が多い。
しかし、個人的にはちょっとこの手の話は眉唾かなと思っていて、やはり、いくら上記のような研究が進み使えそうだとなっても、人が作る機械的に処理できる成果物はコードだけで、あとは、なんだかんだで自然言語ベースということになってしまうので、コードより前の成果物が機械的に処理できる成果物であることを前提とした手法は、余り使われないのかなと思っている。
なので、このような状況で自動化による効率化を考えるとコードから機械的に仕様を生成して、その作られた仕様を自然言語で書かれた実際の仕様と照らし合わせるって方法が良いのではないかと思っていた。
で、こういうのってなんかいい方法ないかなと思ってたら、すでにあるのね。技術的には"Invariant Detection"といわれるような分野だそうです。関連のリソースを上げておきます。
- The Daikon invariant detector:Dynamic Invariant Detectionで有名なツールのようです。
- Daikonを使ってみます記事: dW:単体テストと自動コード分析の連携
- Agitator (この技術を内部で使って仕様を抽出しています)
- 関連カンファレンス:Agitatorの技術的解説論文があります。International Symposium on Software Testing and Analysis