カバレッジの危ない使われ方

良かれと思って頑張ってカバレッジ率を上げていたら、逆にテストを書かなくなってしまう事態に陥ることがあるようだ。

カバレッジ率のレポート結果の傾向から学習し、テストを書くまではいい。やった方が良い。

問題は次だ。不慣れだとテスト対象の期待する振る舞いを明らかにすること、良いコードや設計を導くためにテストを書くことよりも、ユニット&モックでカバレッジ率を機械的にあげていくことへ過度に熱を上げてしまうことがある。

するとどうなるか。内容が理解できない意図が不明確なテスト、ちょっとした変更でテストが多数失敗してしまうのが大量にできてしまう。後でメンテ不能なテストが大量にできてしまう。カバレッジをあげようとがんばったのに。

その後何が起きるか。新しく修正や追加しようとしたら、大量レッドでメンテできねー、読んでも理解できねー糞テストの壁がプログラマーの前に立ち現れる。本当ならAll Testは、セーフティネットであって欲しいのに、邪魔な壁として。
これダメなんじゃねと判断してテストの自動化をやめてしまい、逆戻り。あらら。。。

注意されたし。

追記:無駄にテスト書いたために、スローテストや、不要なメソッドを見つけるのがめんどうになるなども発生!!らしい。