Introduction
ソフトウェア開発において、説明が難しい言葉に「カバレッジ」があります。多くの業界で使用されている言葉ですが、ソフトウェア開発では、完成したプログラムのテストをどのくらい網羅しているのかを指す言葉です。では、カバレッジは具体的にどのようなシーンで使われるのでしょうか。
本記事では、カバレッジの概要と使用される業界ごとの意味の違い、ソフトウェア開発におけるカバレッジの計測方法を解説します。
目次
カバレッジ(coverage)とは
カバレッジとは、対象範囲に対して全体の内どれくらい網羅しているかを示す指標です。「網羅率」と表現されることもあり、さまざまな業界で利用される言葉です。
ソフトウェア開発の領域では主に、テストの実施状況を評価する方法を示す言葉として使われます。ホワイトボックステスト時に用いられることが多く、論理構造全体に対してどれだけの実行ができたかの網羅性の尺度として使用されます。網羅性を把握することがソフトウェアの品質において重要な指標になります。
カバレッジには、パターンの網羅の度合に応じた基準によってさまざまな種類があります。しかし、どれも分母を対象範囲の全体、分子を実施した部分とした際に算出される割合がカバレッジになる点は変わりません。
ホワイトボックステストについてはこちらをご覧ください。
>>ホワイトボックステストとは?ブラックボックステストとの違いやその手順、よく使われる手法を解説のページへ
ソフトウェアの分野における「カバレッジ」の基準
カバレッジ基準の種類として、さまざまなものがありますが、ソフトウェアテストとしてよく利用されるのは、以下の3つのカバレッジになります。
・ステートメントカバレッジ(C0)
・デシジョンカバレッジ(C1)
・複合条件カバレッジ(C2)
着目する要素によって基準は異なります。また、どのカバレッジ基準が採用されるかは、測定を行う対象物によっても異なります。それぞれの違いを次章で見ていきましょう。
ステートメントカバレッジ(C0)
ステートメントカバレッジ(C0)とは、「命令文」に着目したカバレッジ基準のことです。「命令網羅率」ともいい、すべての命令文を最低一度は通るようにテストします。
命令文を一度通るだけであるためカバレッジレベルは本記事で紹介するものの中ではもっとも低く、テスト量も比較的少ないという特徴があります。テスト量が少なくなるためそのため、導入しやすい基準かもしれません。
ステートメントカバレッジは、命令のみに着目するため、例えば条件を満たす方にだけ命令のある条件文では、条件を満たす場合のみをテストすれば、カバレッジを網羅したことになります。そのため、ステートメントカバレッジで100%網羅したとしても、条件を満たさない(ELSE)ルートに不具合がある場合はテスト漏れになる可能性があります。ステートメントカバレッジでは、実質的な網羅性・テスト強度は低いといえるでしょう。
デシジョンカバレッジ(C1)
デシジョンカバレッジ(C1)とは、「分岐した経路」に着目したカバレッジ基準です。すべての分岐条件や真・偽などの経路を最低一度は通るようにテストします。
分岐した経路をすべて通るため、ステートメントカバレッジよりもカバレッジレベルが高いことが分かります。
デシジョンカバレッジでは、条件文としての成立と不成立の両方に着目してカバレッジを判断します。ただし、条件式中に論理和(OR)や論理積(AND)などが含まれる複合条件どうかについては考慮がありません。そのため、複合条件の判定式の不具合を検出できない可能性がある点に注意しなければなりません。
複合条件カバレッジ(C2)
複合条件カバレッジ(C2)とは、「条件」に着目したカバレッジ基準です。コード内に含まれているすべての条件パターンをテストし、正しく動作するかを確認します。複合条件の場合は、それを構成する個々の条件の、成立・不成立の組み合わせをすべてテストします。
すべての条件パターンを満たすこの基準は上位のカバレッジレベルですが、上位のカバレッジレベル基準は下位のカバレッジ基準を包含する関係にあります。複合条件カバレッジを満たしている場合は、デシジョンカバレッジ、ステートメントカバレッジも確保されます。
下位のカバレッジ基準では判定できなかった部分が明確になるため、テスト基準としては強度が高いといえるでしょう。反面、条件式が増えるほどテストケースの数も増える点に注意が必要です。
他分野におけるカバレッジ
「カバレッジ」という言葉自体は普通の英単語なので、業務分野によってはさまざまな意味で使われています。お客様と会話している中でカバレッジという言葉が出てきたら、ソフトウェアのカバレッジの話なのか、業務としての話なのか、混同しないようにしましょう。以下はカバレッジを業務の用語として使っている例です。
金融分野における「カバレッジ」の基準
金融領域におけるカバレッジは、証券会社が使う場合と外資系投資銀行が使う場合で意味が違います。それぞれの意味は次の通りです。
・証券会社が使用する場合
企業の業績や業績の見通しなどを調査・分析すること。
・外資系投資銀行が使用する場合
顧客に対して投資の助言や情報提供を行う営業活動のこと。
ソフトウェア開発におけるカバレッジのように、割合を示すものではありません。金融におけるカバレッジとは、アナリストなどが買いの対象にする銘柄に加えることを意味するなどの専門用語に分類され、後述するマーケティングにおけるカバレッジの意味とも異なります。
マーケティング分野における「カバレッジ」の基準
マーケティング領域におけるカバレッジは、次の3つの意味で使用されます。
・広告媒体カバー率
テレビやラジオ・新聞、Web広告などの対象地域の人口に対するユーザーの割合。購読率や視聴率、ユーザー数からカバー率を算出する。
・市場占有率
対象地域内で自社製品・サービスがどの程度の売り上げを占めているかを表す割合。絶対的市場占有率と相対的市場占有率の2種類があるが、いずれも売り上げ状況から市場に占める割合を算出する。
・BtoBマーケティング戦略
カバーする割合という意味で使用されるが、使われ方によって意味が異なる。営業戦略で異なるカバレッジモデルを導入する。
ソフトウェア開発と同じく、網羅率やカバー率という意味で使用されます。算出するには母数となる対象が必要となりますが、いずれの場合で使用されていても企業の販促戦略に活用されることが多く、インターネット広告にも採用されているのが特徴です。
カバレッジの計測方法における注意点
カバレッジの計測方法はさまざまな種類がありますが、どの方法で計測するかによって、具体的なテスト方法は異なります。
テスト計画では、カバレッジの目標を設定しますが、誤動作防止のソースコードなど通常は実行しない部分もあって、100%は達成できないことがあります。これを無理やり100%にするには非常に多くの工数がかかるのでレビューの結果なども踏まえ、総合的に判断するようにしましょう。
また、カバレッジはテストを実行した部分の網羅率を示しているだけで、カバレッジが100%になったからといってテストがすべて終わったということにはならないことに注意しなければなりません。カバレッジ計測とは別にテストケースがソフトウェアに必要な項目を網羅するようなテスト設計を実施しなければなりません。
テスト計画 講座
※ご登録いただくとその場で無料動画の視聴が可能です。
株式会社SHIFTが運営するソフトウェアテスト・品質保証の人材育成を手掛けるヒンシツ大学のお試し講座「テスト計画」をご視聴いただけます。テスト計画とはどのようなものか、テスト計画には何が必要なのかといった基礎的な考え方について事例を交えてご紹介しています。
※ご登録いただくとその場で無料動画の視聴が可能です。
株式会社SHIFTが運営するソフトウェアテスト・品質保証の人材育成を手掛けるヒンシツ大学のお試し講座「テスト計画」をご視聴いただけます。テスト計画とはどのようなものか、テスト計画には何が必要なのかといった基礎的な考え方について事例を交えてご紹介しています。
ソフトウェアカバレッジの計測はSHIFTへ相談
ソフトウェア開発におけるカバレッジは、ソフトウェアに不具合がないかを数値化する重要な指標です。カバレッジ100%が理想ですが、それにこだわらずに現実的な目標を設定して実施するようにしましょう。
SHIFTでは、ソフトウェアのカバレッジ計測を請け負っています。開発は自社や他社が行ったソフトウェアでも、カバレッジの計測が可能です。第三者検証を行うことで、主観の入らない品質保証が可能となっています。カバレッジ計測以外にも、ソフトウェアテスト全般も対応可能です。ソフトウェアのあらゆるテストにお困りの方は、ぜひSHIFTまでお問い合わせください。
関連サービスについて
監修
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――