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

カバレッジとは?

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

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

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

コードカバレッジの種類

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

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

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

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

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

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

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

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

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

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

まとめ

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

機能安全対応を強力にサポートするモデルも選べる!動的テストツール DT+
DT+

DT+は、複雑な動的テストの課題解決のため、豊富な機能を持つテスト支援ツール群です。
中でも「DT+FS」は、機能安全対応に特化し、ISO 26262/IEC 61508の要求に基づくテストを支援。高度なカバレッジ解析とトレーサビリティ連携で、信頼性の高い開発を実現します。

14日間 無料トライアル

お客様の開発環境で評価いただける14日間の無料トライアル。
多彩な解析機能をお試しください!