カバレッジとは?ソフトウェアテストにおける意味とメリットを解説
COLUMN
最終更新日:2023年06月05日 / 投稿日:2023年04月26日
カバレッジは「網羅率」という意味を持ち、IT分野・マーケティング分野・金融分野などさまざまな場で使われる言葉です。ただし、ソフトウェア開発では、カバレッジという言葉は一般的に「コードカバレッジ」を指し、適切なソフトウェアテストを行うための基準として重要視されます。
この記事ではソフトウェアテストにおけるカバレッジの意味と、カバレッジの基準4種類、カバレッジを計測するメリットや注意点について解説します。
1.ソフトウェアテストにおけるカバレッジ(網羅率)とは
ソフトウェア開発において、「カバレッジ」には以下のような意味があります。
・コードカバレッジ
プログラムのソースコード全体のうち、テストが完了したもの
・機能カバレッジ
プログラムのソースコードのうち、仕様書や企画書に書かれた機能のテストが完了したもの
一般的にソフトウェア開発で「カバレッジ」と言う場合、「コードカバレッジ」を意味します。システムの品質向上のためには、カバレッジの値を高めることが重要です。
テスト自動化ツールならATgo1か月トライアル無料:詳細はこちら
1-1.その他のカバレッジの用法
カバレッジという言葉は、ソフトウェア開発以外にも以下のような分野で使用されます。
IT分野 |
---|
携帯電話の電波や無線通信の送受信が可能なエリアの割合を「エリアカバレッジ」と呼びます。通信障害が発生するエリアは「カバレッジホール」と呼ばれ、対策されます。 |
マーケティング分野 |
---|
マーケティング分野におけるカバレッジとは、自社の広告媒体でカバーできる人口の割合を示した言葉です。主にテレビやラジオなどのメディア広告で人口のどの程度カバーできているのかを知るために使われます。 |
金融分野 |
---|
金融分野におけるカバレッジとは、証券会社やアナリストが特定の企業の業績動向を調査・分析し、発表することを指します。また、投資銀行では営業活動をカバレッジ、営業部門をカバレッジチームやカバレッジ部門と呼びます。 |
2.ソフトウェアテストにおけるカバレッジの種類4種
ソフトウェア開発では、テストのためにさまざまなカバレッジの基準が存在し、製品や企業、開発規模によって適切なものが選択されます。例えば、人命に関わるソフトウェアなどの重要性の高いプログラムコードで選ばれるのは、テスト漏れがしにくい強度の強いカバレッジ基準です。
代表的なカバレッジの基準として、4種類を紹介します。
2-1.ステートメントカバレッジ(C0)
ステートメントカバレッジとは、プログラムコード内の命令文のうち、テストを実施した割合を示す言葉です。ステートメントカバレッジの評価基準は、プログラム上の命令文を少なくとも1回テストを実行することです。命令を1回実行するだけで、100%と評価され、命令網羅率が高くなります。
ステートメントカバレッジは、システム開発のテスト基準としてのカバレッジでは、最も基本的な数値です。簡単に計測ができて、カバレッジ率100%を達成しやすいという特徴があります。しかし、コードの分岐がテスト対象とならないため網羅性が低く、最もテスト強度の弱い基準と言えます。
2-2.デシジョンカバレッジ(ブランチカバレッジ・C1)
デシジョンカバレッジとは、コードの分岐点もテスト範囲としたテスト基準です。すべての条件分岐の真・偽の経路を1回以上テストする必要があり、ステートメントカバレッジよりもテスト強度が強いと言えます。また、デシジョンカバレッジの達成度が100%になると、ステートメントカバレッジも100%網羅できます。
しかし、ソースコードの中に論理和(OR)や論理積(AND)が含まれていると、複合条件は考慮されません。判定式内の不具合を検出できない可能性には注意が必要です。
2-3.改良条件判定カバレッジ(MC/DC)
改良条件判定カバレッジとは、分岐条件の真・偽の判定に加えて、複数の分岐条件の結果によって、複合条件の判定が変わる場合まで網羅したテスト条件の割合を示す言葉です。改良条件判定カバレッジテストは、テストケースの件数が多く、網羅性が非常に高いのが特徴です。
システム開発のテストに使用されるカバレッジ基準の中では、特に基準が厳しいテストと言えます。航空機システムのソフトウェアや自動車に搭載されるソフトウェアなど、人命に関わるようなシステムによく利用されます。
2-4.複合条件カバレッジ(C2)
複合条件カバレッジとは、プログラムに含まれる条件分岐に着目したテスト基準です。コード内にあるすべての条件文で、真・偽が満たされるかどうかを確認します。判定基準では、すべての条件パターンを満たすため、テスト基準として使用されるカバレッジの中では、強度の強い基準と言えます。
複合条件カバレッジが100%を達成したとき、下位基準であるステートメントカバレッジとデシジョンカバレッジのカバレッジ基準も100%確保可能です。複合条件カバレッジは網羅性の高い基準ですが、条件式が増えれば増えるほどテストケース数も増えるという欠点があります。
3.カバレッジを計測するメリット
カバレッジの目標値は、ソースコードをテストするときに重要な要素です。テストカバレッジの値を高めると、ソフトウェア開発のプロジェクト管理をする上で、多くのメリットを得られます。
カバレッジを計測することで得られる代表的なメリットを2つ紹介します。
3-1.テストケースを抜け漏れなく設計できる
カバレッジの目標値を設定すると、目標に向けて抜け漏れなくテストケースを設計可能です。実際にテストをしてカバレッジを計測したところ、カバレッジが目標値を満たさない場合は、テスト漏れがあると分かります。
テストに実施漏れがある場合、テストケースにも抜け漏れがあります。なぜテスト設計に漏れがあるのか、どの部分に抜けや漏れがあるのかを分析することで、次回からは条件網羅率を高めたテストケースが設計可能です。
3-2.ソースコードの隠れたバグを発見できる
ソースコードの隠れたバグを見つけ出すのも、カバレッジ計測の重要な役割の1つです。
カバレッジの値が100%に達しないときは、ソースコードにバグが隠れている可能性があります。ソースコードに隠れたバグとは、条件分岐が機能しないコードや冗長なコード、不要なコードを指します。隠れたバグがあると、多くのテスト項目を費やしてもカバレッジの値が目標値に届くことはありません。
見つけ出しにくいバグを発見するためには、カバレッジの計測が必要です。
4.カバレッジを計測するときの注意点
カバレッジの計測はソフトウェアのテストには必要ですが、目標値を100%に定めるべきではありません。例として、Googleはカバレッジについて許容値を60%とし、推賞すべき(“commendable”)カバレッジを75%、理想的な(“exemplary”)カバレッジを90%としています。
出典:Google Testing Blog「Code Coverage Best Practices」
カバレッジの目標値を上げることに固執せずに、注意すべきポイントをおさえて計測するのが大切です。
カバレッジを計測するときの注意点について、目標値を100%に定めるべきではない理由とともに解説します。
4-1.テスト工数とのバランスをとる
カバレッジの数値の高さに捉われたり、カバレッジ率100%を目指したりすると、不要な作業が増える可能性が高くなります。他のテストコードの結果やレビュー情報も含めて、総合的に判断しましょう。
カバレッジの目標値を厳しくすればするほど、バグの少ない信頼できるソフトウェアになりますが、その分テスト量は増加します。効率的なテストケースを設計するには、カバレッジの目標値とテスト工程のバランスが取れた具体的なテスト計画を立てることが重要です。
4-2.計測できないアンチパターンが存在する
カバレッジを100%にした場合でも、アンチパターンが発生した場合はバグを発見できないケースがあります。
アンチパターンとは、バグがあるにもかかわらず、カバレッジ率が100%になってしまう現象です。アンチパターンが発生する主な原因は、テストケースでシステムが保証すべき観点を網羅できていないことです。
カバレッジの計測を行う前に、実施するテストケースがシステムにとって必要な項目をチェックできるようになっているかどうか確認する必要があります。
まとめ
一般的にソフトウェア開発で「カバレッジ」と言う場合、「コードカバレッジ」を意味します。コードカバレッジはプログラムのソースコード全体のうち、テストが完了したものの割合を指した言葉です。
カバレッジの計測により、テストケースを抜け漏れなく設計でき、ソースコードの隠れたバグを発見できます。そのため、製品や企業、開発規模によって適切なカバレッジの基準が選択されます。
ただし、カバレッジ目標値を厳しくするほど工数が増え、アンチパターンが発生した場合はバグを発見できないため、目標値を100%にすることはおすすめできません。