テストケースのカバレッジ

お隣のチームがカバレッジの話で盛り上がってたようなのだが、カバレッジってどこまで有効な指標なのだろうか?

ぼくのイメージでは、

  • コードが網羅的に記述されている。
  • 全ての組み合わせが網羅されている。
  • 関数が状態を持たない。

と言う場合には、カバレッジを取ることは意味があると思う。

コードがゴールデンとみなせる場合には、カバレッジを取ることでテストケースが十分か測定できる。すなわち、カバレッジを測定しても、現在存在するコード以上のことはわからない。

しかし、得てしてコードに不備があることが多い。すなわち、条件文の分岐数が十分でない、とか、ある論理値の組み合わせの時はすり抜けてしまう、とか。この時には、カバレッジを取ってもしょうがない。
逆に、必要なコードが抜けてたとしても、現状のコードをテストするパターンがあれば、カバレッジ100%を達成することは可能なのだ。

そう言う意味で、コードの完全性に対してのカバレッジを測定する方法って、ないものだろうか? もしくは、テストケースが十分たりている、と言う指標のようなもの。