カバレッジテストの自動化
いきなり何を言い出すのかと思われるかもしれないが、最近はCやJavaのソースコードを解析してカバレッジテストを自動化する方法を調べている。
私、この分野に関しては全くの素人なので、何か知っている人はぜひコメント欄や twitter (@keigoi) で教えて欲しいです。
論文とか
ざっくり http://www.citeulike.org/user/keigoi/tag/testgeneration に貯めている。
カバレッジテスト自動化の基本的な技術
カバレッジテストの自動実行 および symbolic execution のツール
- CREST (C)
concolic execution.
C言語カバレッジテスト。CIL で書いたプリプロセッサ でソースコードに仕込みを入れ、同時に 制御フロー解析。gccでコンパイルして実行。SMTソルバ yices を使っている
オープンソースでまだ小さいので扱いやすい。ソースはOCamlとC++で書かれている。 CFGの様々な探索アルゴリズムが実装されている。
- KLEE (LLVM)
LLVM を使っている。詳細はまだ調べていない
- Symbolic PathFinder (Java)
- CUTE (C)
その他
Cの意味解析はCILでやるのが筋のようだ。幸い、CILは OCamlで書かれており、control flow analysis までの基本的なライブラリはそろっている。
同僚の id:yoshihiro503 はいきなり Cのsymbolic execution エンジンの実装をはじめている。頼もしい限りだ。