コード網羅率

コード網羅率（コードもうらりつ、、コードカバレッジ）は、ソフトウェアテストで用いられる尺度の1つである。プログラムのソースコードがテストされた割合を意味する。この場合のテストはコードを見ながら行うもので、ホワイトボックステストに分類される。
コード網羅率は体系的なソフトウェアテストのための技法として最初に生み出されたものの1つである。1963年の "Communications of the ACM" にある Miller と Maloney の論文に言及されているのが最初である。
手法.
コード網羅率の測定にはいくつかの手法があり、主なものとしては以下のような手法がある。
インフラなどの重要なアプリケーションでは、何らかの形でコード網羅率 100% のテストを実施したことを示すよう要求されることが多い。
上で列挙した手法は相互に関係している。例えば経路網羅は、分岐網羅、文網羅、入口/出口網羅を含んでいる。文網羅は分岐網羅を含まない。以下のC言語のコードを考える。
void foo(int bar)
 printf("This is "); 
 if (bar < 0)
 printf("not ");
 printf("a positive integer.\n");
 return;
この関数 "foo" を引数 "bar = -1" で呼び出すと、文網羅は達成される。しかし、分岐網羅は達成されていない。
完全な経路網羅は実際には現実的でないし、不可能とされる。"n" 個の判断が行われるモジュールでは、最大 2n 個の経路が理論上存在する。ループがあれば無限の経路が存在することもある。また、タイミングに依存するような条件分岐では、テストではそのような条件を生成できないことがある。しかし、テスト不可能な経路を特定する汎用のアルゴリズムは存在しないことがわかっている（チューリングマシンの停止問題と等価であることが示されている）。実用的な経路網羅の手法としては、ループ回数が異なるだけの経路を経路クラスとしてひとまとめにして、経路クラスを網羅するようにする。
一般に、一連のテストを実行してから、その結果を分析してコード網羅率を算出し、必要に応じてテストを修正して再試行する。このようなテスト作成の最終的な目的は、コードの修正時のバグ作りこみを防ぐ回帰テストの作成にある。
コード網羅率は一般に百分率で表される。ただし、手法によって同じテストでも数字が変わってくるので注意が必要である。