コードカバレッジ(こーどかばれっじ)情報システム用語事典

code coverage / コード網羅率 / コード被覆率

» 2011年11月07日 00時00分 公開

 ソフトウェアテストにおいて、テスト対象となるプログラムコード(内部ロジック)全体の中で、テストが行われた部分が占める割合のこと。パーセンテージで表現される。

 コードカバレッジは最も代表的なテストカバレッジで、ソフトウェアテストにおいて「カバレッジを計測する」「カバレッジを採る」といえば、通常はコードカバレッジを計測することを指す。カバレッジの測定あるいはカバレッジ目標値の達成を目的とするテストをカバレッジテストという。コードカバレッジは構造ベースドテストの達成度や消化度合い、あるいは実装に対するテスト網羅性の尺度として利用される。

 実行されたことのないコードは正常に動作しない可能性を否定できない。品質保証のためには、動的テストを漏れなく網羅的に実行することが望ましいが、実用レベルのプログラムは膨大なロジック(制御パス)を持ち、すべてをテストし尽くすことは事実上不可能である。そこでテストの効果を損なうことなく、テスト工数を削減することが必要となる。

 コードカバレッジテストの工数を削減するには、(1)カバレッジ率を下げる、(2)カバレッジ基準を緩くする、の2つの方法がある。カバレッジ率は上述のテスト達成度であり、カバレッジ基準はテストの詳しさである。網にたとえるならばカバレッジ率が網が対象を覆っている割合、カバレッジ基準が網目の細かさといえる。

 コードカバレッジはカバレッジ基準の違いによって、以下のようなものがある。

主要なコードカバレッジ


命令網羅(statement coverage:SC)

コード内のすべての命令が少なくとも1回は実行されるようにテストを設計する。欠陥検出力は弱い


判定条件網羅分岐網羅(decision coverage:DC, branch coverage:BC)

コード内の判定条件の結果として、真になる場合と偽になる場合がそれぞれ少なくとも1回は出現するようにテストを設計する


条件網羅(condition coverage:CC)

コード内の条件判定における個々の条件について、すべての真偽が少なくとも1回は出現するようにテストを設計する


判定条件/条件網羅(decision/condition coverage:DC/CC)

条件網羅と判定条件網羅を合わせたコードカバレッジ。個々の条件の真偽と、判定結果の真偽がそれぞれ少なくとも1回は出現するようにテストを設計する


複合条件網羅(multiple condition coverage:MCC)

コード内の判定文におけるすべての条件で、あり得るすべての結果の組み合せが少なくとも1回は出現するようにテストを設計する


経路組み合わせ網羅(path coverage)

コード内のすべてのパス(制御パス)が少なくとも1回は実行されるようにテストを設計する。一般に非現実的なテストとなる


 コードカバレッジは数々あるテスト指標の1つであって、コードの完全性を保証するものではない。カバレッジ率の高さは、欠陥のある可能性がより低いとはいえても、欠陥がないことを意味するものではない。カバレッジ率を高めるには、原則として大量のテストケースを生成してコードを実行すればよいが、それがそのままテスト十分性を表すわけではない。ソフトウェア品質の維持・向上にコードカバレッジを活用するには、各カバレッジ指標が何を計測しており、どのような不具合を見落とす可能性があるのかをよく理解する必要がある。

 例えば、コードカバレッジはコードの構造上のチェックを行うだけなので、機能仕様の実装漏れを検出できない。また、テスト対象プログラムの中に到達不可能なコードがあったり、多重ループを扱っていたりと、そもそも十分なコードカバレッジの確保が困難な場合もある。従ってやみくもにコードカバレッジ100%を目指すのではなく、機能ベースのテストなどで内容を補いながら、品質の確保を図ることが求められる。

参考文献

▼『ソフトウェアテスト実践ワークブック??効果的かつ効率的なテスト設計のために』 レックス・ブラック=著/成田光彰=訳/日経BP社/2007年1月(『Effective and Efficient Software Testing』の邦訳)

▼『基本から学ぶソフトウェアテスト??テストの「プロ」を目指す人のために』 セム・ケイナー、ジャック・フォーク、フン・クォック・グエン=著/テスト技術者交流会=訳/日経BP社/2001年11月(『Testing Computer Software, 2nd Edition』の邦訳)

▼『ソフトウェア・テストの技法〈第2版〉』 グレンフォード・J・マイヤーズ、トム・バジェット、テッド・M・トーマス、コーリー・サンドラー=著/長尾真=監訳/松尾正信=訳/近代科学社/2006年7月(『The Art of Software Testing: 2nd ed』の邦訳)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ