カバレッジ(網羅率)分析とは
カバレッジは、所定の網羅条件がテストによってどれだけ実行されたかを割合で表したものです。網羅条件が命令であれば、命令網羅と呼ばれ(またはステートメントカバレッジ、C0とも呼ばれます)、すべての実行可能な命令のうち、テストで実行された命令の割合を意味します。そのほかに、すべての判定条件(if文による分岐など)のうち、テストで実行された判定条件を意味する判定条件網羅(ブランチカバレッジ、C1とも呼ばれます)などがあります。
テストを実施するにあたって、カバレッジ (網羅率)を測定/分析することは、ソフトウェアの品質向上に非常に大きな意味を持ちます。なぜなら、カバレッジ情報からテストそのもの品質を定量的に測ることができるからです。テストのカバレッジを測定する方法は、コードや仕様、要件、設計など、さまざまな側面から計測する方法がありますが、単体テストの段階では、コードベースのカバレッジでテストの品質を測ることが一般的です。コードカバレッジを測定し、テストが実施されていないコードを確認することにより、テストの妥当性を向上させることができます。
テストを実施するにあたって、カバレッジ (網羅率)を測定/分析することは、ソフトウェアの品質向上に非常に大きな意味を持ちます。なぜなら、カバレッジ情報からテストそのもの品質を定量的に測ることができるからです。テストのカバレッジを測定する方法は、コードや仕様、要件、設計など、さまざまな側面から計測する方法がありますが、単体テストの段階では、コードベースのカバレッジでテストの品質を測ることが一般的です。コードカバレッジを測定し、テストが実施されていないコードを確認することにより、テストの妥当性を向上させることができます。
カバレッジの種類
- 行カバレッジ
すべてのコード行のうち、テストで実行された行の割合です。
- 単純条件カバレッジ(C2:条件網羅率)
すべての条件のうち、テストで実行された条件の割合です。判断文カバレッジ との違いは、1つの判断文には(ANDやORで接続された)複数の条件が含まれる場合がありますが、判断文カバレッジでは判断文全体が真と偽の両方の値を取ればよいのに対し、単純条件カバレッジでは個々の条件が真と偽の両方の値を取る必要がある点です。
- Modified Condition/Decision Coverage (MC/DC)カバレッジ
MC/DCは、国際技術標準 DO-178B(RTCA)に準拠しています。これは、ソフトウェア証明のための基準を指定したものであり、対象となるソフトウェアには、航空業界で使用される重要機器およびシステムのためのリアルタイム組込みシステムも含まれます。 DO-178Bに従うと、完全な(100%の)MC/DCカバレッジ を得るには、次の3つの条件を満たす必要があります。
a.各「判断文」が、少なくとも1回すべての可能な結果を得ている。
b.1つの「判断文」中の各条件が、少なくとも1回すべての可能な結果を得ている。
c.1つの「判断文」中の個々の条件が、単独で全体の「判断文」の結果を左右する。
カバレッジ分析と機能安全規格コンプライアンス
機能安全規格は、航空機、乗用車、医療機器など、人間や環境に危害をもたらす可能性のあるシステムについて、危険の度合いを許容可能なレベルにまで低減するための方策を定めたものです。ますます多くの機器にソフトウェアが組み込まれ、さまざまな機能を担っている現在、ソフトウェア開発における機能安全は重要な課題となっています。 電気・電子・プログラマブル電子安全関連系の機能安全規格であるIEC 61508や、自動車向け機能安全規格であるISO 26262、医療機器を対象としたIEC 62304では、規定された手法を使用して単体テストを実施すること、そしてカバレッジ情報を取得してテスト品質を確保することが要求されています。カバレッジ計測を効率的におこなう
効率的にカバレッジを計測するにはテストツールの利用が有効です。C/C++言語対応テストツールのC++testは、単体テストの実行中に9種類ものテストカバレッジを計測することができます。
まずは無償体験版でお試しください。
- C++testのすべての機能を無償で14日間ご利用可能
- すぐにご評価可能なチュートリアル付属
- ご評価を円滑に進めるための、技術的なサポート対応
関連項目
カバレッジ計測に役立つツールのご紹介
C/C++対応静的解析ツール・単体テストツール C++test
C++testは、静的解析(コーディング規約チェック/フロー解析)、単体テスト、カバレッジ計測、実行時メモリエラー検出機能などを搭載したC言語/C++言語対応のオールインワンテストツールです。
C#/VB.NET対応 静的解析・動的解析ツール dotTEST
dotTEST は、C#言語/VB.NET言語対応した静的解析・動的解析テストツールです。Windows アプリケーション・Web アプリケーションなどのさまざまな.NET アプリケーションの開発に用いられています。
Java対応静的解析・単体テストツール Jtest
Jtestは、テスト工数の大幅削減とセキュアで高品質なJavaシステムの開発を強力にサポートするJava対応テストツールです。2,000個以上のコーディング規約をもとにソースコードを静的に解析し、プログラムの問題点や処理フローに潜む検出困難なエラーを検出します。