新しいCloverは更新の影響を受けるテストだけ実行するらしい

http://www.infoq.com/jp/news/2008/11/clover-test-optimization

最近リリースされたClover 2.4はテスト最適化という新機能を備えていて、コードの更新の影響を受けるテストだけを選択的に実行することによって、テストにかかる時間を大幅に削減できるらしい。

Cloverはコード・カバレッジ・ツールなので、テストごとにコード・カバレッジを測定します。これはつまりあるテストがどのコードを実行するのかを測定することになります。この情報を元にCloverはあるソースに対してどのテストを適用すればいいのかを判断することが出来るのです。この情報とどのソースが修正されたのかという情報を基にCloverは変更のあった一連のソース・ファイルに対して適用すべきテストのセットを作成します。そしてこのセットと、前回のビルド時に失敗したテスト、及び前回のビルド以降に作成されたテストをテストの実行部に渡します。

うほ。ホントにそれでカバーしたことを保証できるのか若干心配な気もするけど、まあフルテストは1日1度実行するとかにして、全体的なCIの時間が削減できるというメリットはありますわな。

続けてHumphrey氏はFishEyeチーム(リンク)による10日間の試行について記している。それによると「テストの実行時間は4分の1に削減された」とのことである。

おお。ちょっと試してみたくなった。けど今Javaより、FlexRubyばかりなのでまあそのうちね。