はじめに
今回はこちらのコードカバレッジに関するGoogleのテストブログを読んだので
コードカバレッジの目安についてまとめていきたいと思います。
コードカバレッジとは
コードカバレッジはテストコードの指標として用いられます。対象ソースコードに対して、どれだけ網羅してテストできているかを表します。カバレッジにもいろいろな種類があり、関数単位、ソースの行単位、条件文を網羅できるかなど、様々な観点でカバレッジを出すことができます。
基本的には、テストされたアイテム数、コードで見つかったアイテムに対して、カバレッジ率(コードで見つかったアイテムのうち、テストされたアイテムの割合)を算出します。カバレッジ率が高ければ、高いほど網羅性が高いです。
コードカバレッジが高い ≠ 品質が高い
コードカバレッジが高ければ、より網羅的にテストできていることを表すことができますが、品質がめちゃくちゃ高いかどうかはまた話が変わってきます。網羅的にテストできてることが、テストケースがバグを適切に検出できてるとは言えないです。
カバレッジを数値化している目的は、あくまでどのソースコードの箇所がテストできていないかを分かるようにするためです。本来の目的であるバグを減らすことを考えると、網羅性に加えて、バグをより検出できるテストコードを書くほうに力を入れる必要があります。
コードカバレッジは100%じゃなくていい
コードカバレッジを100%に近づけようとすることに重点を置くと、テストケースの品質が下がり、無駄な作業に時間をかける場合があります。例えば、コードカバレッジを100%にするため、あと1行をカバーするテストコードを書く必要があり、そのコードをどう書くか考えます。最終的に残っている個所は特殊な書き方じゃないとカバーできない箇所だったりすることが多く、これらを考えるのに見合ったリターンがなく、不毛な作業が増えます。体感、コードカバレッジを0%から80,90%までにすることよりも、95%を100%にすることのほうが、時間がかかると思います。
こうした作業に時間をかけるよりも、テストケースが適切なものになっているか見直したほうがより良いテストコードにすることができます。
コードカバレッジの目安
Googleでは、コードカバレッジのパーセンテージの目安が
60%:「許容できる」
75%:「賞賛に値する」
90%:「模範的」
となっています。
こちらの記事も見ると、85~99%の間が推奨されています。
ベストな目安は85%以上と考えられます。
まとめ
コードカバレッジについて調べなおして、改めてコードカバレッジの数字だけが大事ではないことに気づかされました。
これからは、コードカバレッジの数字だけでなく、バグをより少なくできるテストコードを書けてるか意識して書いていきたいです。