2010/06/20
テストの最適化
テストの話を出したのでついでに。
今関わってるプロジェクトでは、標準のテストを流すのに25分くらいかかる。 一応もっと速い簡易テストもあるんだけれど、カバレッジが低くて 自分が触っている範囲にはあまり有効でない。 わりと、障害時対策とか高負荷時のバイパスとかそういうあたりを 触ることが多いので、正常系のテストはあんまり役に立たないのだ。
とは言っても、テストが重い理由は他にもあって、単体テストと結合テストが ちゃんと分けられてないんで、ちょっとしたことを試すのにも依存する モジュールがぞろぞろついてきたりしている。このへんうまくスタブを書いて 単体テストだけに絞ればもっとずっと良くなると思うんだけど、 なかなかそこまで手が回らない。
テストの「効率の悪さ」というのもカバレッジ分析と同じ原理で 測れるかなあ。テスト実行中に極端に重複して実行されている パスがあったら、多分そこが改善の余地があるってことだろう。 ああ、でもループ内で実行される関数はそれだけ回数が多く出てきちゃうから、 そのぶんの効果はさっぴかないとならないか。何にせよ、「ここは無駄なテストを しているよ」と指摘してくれるツールがあると便利だろうなあ。
(ちなみにAllegro CLにはカバレッジツールがついてるんだけど、 フラグを有効にしてリコンパイルしないとならないので まだうまく使えてない。(declare (optimize (speed 3) (debug 0)))な コードが大量にあるので結構面倒なのだ。)
Tag: Programming
Post a comment