システム開発におけるテスト工程は、システムの規模によってその作業ボリュームは大きく変わります。
大規模なシステムであるほど、テストしなければならない項目も多くなり、いかにテストケースを網羅したかによって、品質の向上にも大きく関わります。
今回は、システム開発におけるカバレッジについて、概要と代表的な種類をご紹介します。
システム開発におけるカバレッジとは?
カバレッジは網羅率ともいいます。システム開発におけるカバレッジとは、システムのプログラム全体に対してテストを行った割合や考えうる条件分岐の中でどこまでテストしたのかを示す割合です。
カバレッジはテストの実施状況、進捗状況などを示す言葉として用いられるケースも多いです。システムの不具合を見つけて品質を向上させるためには、カバレッジを100%や、限りなく高い値にすることが望ましいです。
IT分野においては、計測する視点によってさまざまなカバレッジが存在します。
- コードカバレッジ:ソースコード全体に対してテストが終了した割合を示す
- 機能カバレッジ:仕様書ベースで、実装した機能が仕様通りに動くかを割合で示す
- エリアカバレッジ:携帯電話や無線通信において、電波の送受信が可能な範囲を示す
システム開発におけるカバレッジは、主に「コードカバレッジ」のことを指します。
コードカバレッジはその性質上、ソフトウェアの内部構造を理解した上で実施される「ホワイトボックステスト」の技法の一つとして、単体テストの工程から活用されます。
ホワイトボックステストについては、こちらの記事でも詳しく紹介しているのでぜひご確認ください。
システム開発におけるカバレッジの主な種類
コードカバレッジとして代表的である7つの種類をご紹介します。
行カバレッジ
ソースコード内の実行可能な行に、制御の流れが最低1回到達した割合を示します。プログラムの実行中にエラーが発生せず、実行可能なすべての行に制御の流れが1回でも到達すれば、カバレッジは100%になります。
ステートメントカバレッジ(C0)
ステートメントカバレッジは命令網羅ともいい、プログラム全体の処理を少なくとも1回ずつは実行したかを示す割合です。
ブロックカバレッジ
ソースコード内の実行可能な行への到達度合いを測るのが行カバレッジであるのに対して、ブロックカバレッジはコード内の関数などを一括りにブロックとしてまとめて、全体におけるブロック単位の実行された割合を示します。
パスカバレッジ
パスカバレッジは、複数の条件分岐がある場合に、それぞれの分岐の組み合わせをすべて実行したかどうかの割合を示します。例えば、2つの条件分岐が処理の流れにある場合は、次の組み合わせを実行したかどうかの割合となります。
- 1つ目:真 2つ目:真
- 1つ目:真 2つ目:偽
- 1つ目:偽 2つ目:真
- 1つ目:偽 2つ目:偽
判断文カバレッジ(C1)
分岐網羅(ブランチカバレッジ)ともいいます。プログラム内のすべての条件分岐処理を少なくとも1回ずつ実行した割合を示します。
各分岐条件の真と偽を1回ずつ通過させてテストするため、ステートメントカバレッジと比べるとテストの精度は高いといえます。
しかし、AND条件やOR条件が組み合わされた複合条件の組み合わせについては考慮されていないため、すべての組み合わせは網羅できていません。
単純条件カバレッジ(C2)
条件分岐(コンディションカバレッジ)ともいいます。プログラム内のすべての条件処理に対して、判定条件(AND条件やOR条件)をすべて網羅したテストを実施した割合を示します。
条件の真偽だけでなく、判定条件も網羅的に検証するため、テストケース数は多くなりますが、その分テストの精度も高くなります。
Modified Condition/Decision Coverage (MC/DC)カバレッジ
改良条件判定カバレッジともいいます。航空機搭載システムで使用される安全性が重要なソフトウェア規格の国際技術標準である「DO-178B(RTCA)」の中で定義された評価基準です。
プログラムの判定はもちろん、判定に影響を与える条件もすべて網羅したテストケースを作成して実行された割合を示します。
自動車や航空機など、障害発生時の影響度が大きく、高い安全性が求められるソフトウェアを開発する場合にMC/DCカバレッジ基準を用いるケースが多いです。
マーケティングや金融でもカバレッジという言葉は使われている
カバレッジはIT分野だけでなく、マーケティング分野や金融分野でも使われています。それぞれの使われ方をご紹介します。
マーケティングジャンルにおけるカバレッジ
マーケティングジャンルにおけるカバレッジには次の2つがあります。
広告カバレッジ
テレビやラジオなどの受信地域やその地域の世帯数から、実際に広告を見ることになる予想人数を表すために使用されます。
広告主は、なるべく多くの人に広告を見てほしいため、広告表示の媒体や場所を決定する上で視聴者数は大きな懸念事項の一つです。
テレビやラジオ、看板、Webサイトなど、広告を表示するメディア媒体はさまざまにあるため、ターゲット層がいかに広告を目にすることになるか、カバレッジの高さを考慮する必要があります。
市場占有率
市場占有率もカバレッジを算出して割り出す数値の1つです。市場占有率とは、ある市場の一定の期間において、対象の企業や製品、サービスの売上高や販売数量の指標が、市場の中で占めている割合のことを指します。
競合他社との関係性を分析して、市場における自社のポジションを確認したり、年齢別や地域別の数値を算出することで、自社製品が受け入れられている層を把握できます。
金融・投資ジャンルにおけるカバレッジ
金融・融資ジャンルにおいては、IT分野で使われるカバレッジとは異なり、割合という意味は持ちません。
調査、分析
金融や融資のジャンルにおいて、カバレッジには調査・分析するという意味があります。
主に証券会社や融資会社が上場企業に対して、投資の判断材料を評価するレーティングを行う際に使用します。対象の銘柄がレーティングの対象となることを、新規カバレッジと表現します。
アドバイザー
外資系投資銀行は、企業の株式上場の提案(IPO)や企業買収(M&A)をサポートします。その際、カバレッジ部門とプロダクト部門の2つの部門が協働して仕事を進めることになります。
その中でカバレッジ部門は、各業界に精通した専門家がプロのアドバイザーとしてIPOやM&Aを進めていきます。
【まとめ】システム開発におけるカバレッジを理解しよう
システム開発において、カバレッジを高めて網羅性を確保することは、品質の向上につながります。
カバレッジを算出するためのテスト方法はさまざまにあるため、カバレッジを理解して、状況に応じた適切なテストを実施しましょう。