ソフトウェアのテストを行うにあたり、「カバレッジ」は重要な指標です。
年々その重要性は高まり、ソフトウェアテストにおいて、「カバレッジ」を計測している企業が増加しています。
今回は、基本的な「カバレッジ」の考え方をご紹介します。

カバレッジとは?

カバレッジ(網羅率)とは、ソフトウェアテストにおいて、全体のうちどのくらいまでテストを実施したのかを割合で表したものです。
カバレッジを計測することにより、テストのヌケ・モレを防ぐことができます。

「カバレッジ」には、いろいろな種類があります。
ソフトウェアテストにおいては、「カバレッジ」と言えば「コードカバレッジ」を指すことが多いですが、その他「機能カバレッジ」「データカバレッジ」など、計測する視点によってさまざまなカバレッジが存在します。

〇カバレッジの例
コードカバレッジ ソースコードに対するテストの網羅率を示す
機能カバレッジ 仕様に対するテストの網羅率を示す
データカバレッジ 取りうるデータに対するテストの網羅率を示す

コードカバレッジの種類

コードカバレッジには、経路の網羅度合に応じた基準(カバレッジ基準)によって、さまざまな種類があります。
どのカバレッジ基準でテストを実施するかは、製品や企業によって判断が違いますが、生命に関わるような製品(ソフトウェア)の場合は、より強度の強いカバレッジ基準が求められます。

〇主なコードカバレッジ
ステートメントカバレッジ
(命令網羅)
テストの対象となるプログラムコードのうち、命令文を実行した割合。
ブランチカバレッジ
(分岐網羅)
テストの対象となるプログラムコードのうち、分岐の真/偽を実行した割合。
MC/DC
(改良条件判定カバレッジ)
テスト対象となるプログラム中において、各ユニット内の条件・判定を網羅した割合。
実行されないコードや実行されない条件に加え、判定内の他の結果に依存しないテストケースの網羅性を確認することができる。

ステートメントカバレッジ

ステートメントカバレッジは、命令文に着目したカバレッジです。
全てのステートメント(命令)を、少なくとも1回実行すれば100%となります。(図1)

ステートメントカバレッジの例

図1:ステートメントカバレッジの例

ステートメントカバレッジは、コードカバレッジの中で最も基本的なカバレッジです。
簡単に計測ができるカバレッジですが、コードの網羅性は低く、カバレッジ基準の強度が最も弱いカバレッジと言われています。
例えば、図2の例では、真のパスを通るようなテストを行えば、ステートメントカバレッジとしては100%ですが、もし偽のバスを通ると、ゼロ割が起こり機能的にエラーが発生してしまいます。

ステートメントカバレッジで十分でない例

図2:ステートメントカバレッジで十分でない例

このようなテスト漏れを防ぐためには、より強度の強いカバレッジ基準でテストを行う必要があります。
ステートメントカバレッジより強度の強いカバレッジとして、例えば「ブランチカバレッジ」や「MC/DC」などが挙げられます。
これらのカバレッジに関しては、次回ご紹介したいと思います。

まとめ

いかがだったでしょうか。「カバレッジ」は、ソフトウェアテストを行うにあたり重要な指標であること、また、さまざまな種類があることをご説明してきました。
これからカバレッジ計測を取り入れたいという方の参考になれば幸いです。

【オンラインセミナー】いま、カバレッジ がヤバい!
~そうだったんだ、カバレッジの種類とかんたん計測術~

日時 :2018/09/19(水) 16:00~16:40
参加費:無料