カバレッジ計測

カバレッジ計測で、単体テストの網羅性を視覚的にレポート

9種類のカバレッジを自動的に計測

C++testがレポートするテストカバレッジには、行カバレッジ、ステートメントカバレッジ、判断文カバレッジ、条件カバレッジといった、C0、C1、C2に相当するコードカバレッジや、MC/DCカバレッジ、機能安全規格(ISO 26262)対応で要求されるコールカバレッジなどが含まれています。また、複数のカバレッジを同時に計測することができます。
GUI上で実行/未実行の箇所を分かりやすくハイライトで表示するため、視覚的に確認することができます。

カバレッジとは

カバレッジ(網羅率)とは、所定の網羅条件がテストによってどれだけ実行されたかを割合で表したものです。カバレッジを計測することは、テスト自体の定量的な品質を示す1つの指標になります。
網羅条件が命令であれば、命令網羅と呼ばれ(またはステートメントカバレッジ、C0とも呼ばれます)、すべての実行可能な命令のうち、テストで実行された命令の割合を意味します。そのほかに、すべての判定条件(if文による分岐など)のうち、テストで実行された判定条件を意味する判定条件網羅(ブランチカバレッジ、C1とも呼ばれます)などがあります。 テストを実施するにあたって、カバレッジ (網羅率)を測定/分析することは、ソフトウェアの品質向上に非常に大きな意味を持ちます。なぜなら、カバレッジ情報からテストそのもの品質を定量的に測ることができるからです。テストのカバレッジを測定する方法は、コードや仕様、要件、設計など、さまざまな側面から計測する方法がありますが、単体テストの段階では、コードベースのカバレッジでテストの品質を測ることが一般的です。コードカバレッジを測定し、テストが実施されていないコードを確認することにより、テストの妥当性を向上させることができます。

C++test がレポートするテストカバレッジ分析

C++testは、単体テスト実行時に自動的に9種類のカバレッジを計測します。

9種類のカバレッジを自動的に計測:C++test

行カバレッジの計測結果の例

  • 行カバレッジ
    ソースコード中の実行可能な行について、制御の流れが最低 1 回達した行の数を示します。すべての実行可能な行に制御の流れが最低1回達した場合、行カバレッジは100%です。
  • ステートメントカバレッジ(C0:命令網羅率)
    テスト対象コード中の実行可能なステートメント(命令文)について、テスト実行中に1回以上実行したステートメントの数とパーセンテージをレポートします。
  • ブロックカバレッジ
    行カバレッジに関連するメトリクスです。ブロックカバレッジが測定するコード単位は「基本ブロック」です。 ソースコード中の基本ブロックについて、制御の流れが最低 1 回達したブロックの数を示します。
  • パスカバレッジ
    パスカバレッジは、関数中の可能な各パスについて制御フローが通ったかどうかをチェックします。
  • 判断文カバレッジ(C1:分岐網羅率)
    制御フローが通過したソースコード中の分岐の数を示します。各「判断文」がすべての分岐点ですべての可能な出力を少なくとも1回得た場合、判断文カバレッジは100%になります。
  • 単純条件カバレッジ(C2:条件網羅率)
    すべての「判断文」の条件の結果に対するカバレッジを表示します。1 つの「判断文」中の条件の数を n とした場合、1つの「判断文」に対する結果の数は、2 * nになります。したがって、100% のカバレッジを得るには、すべての条件がすべての可能な結果を取らなければなりません。ただし、ある条件が1つの結果(真または偽)を取るだけで、0以外のカバレッジが取得されます。
  • Modified Condition/Decision Coverage (MC/DC)カバレッジ
    MC/DCは、国際技術標準 DO-178B(RTCA)に準拠しています。これは、ソフトウェア証明のための基準を指定したものであり、対象となるソフトウェアには、航空業界で使用される重要機器およびシステムのためのリアルタイム組込みシステムも含まれます。
    DO-178Bに従うと、完全な(100%の)MC/DCカバレッジを得るには、次の3つの条件を満たす必要があります。
    a. 各「判断文」が、少なくとも1回すべての可能な結果を得ている。
    b. 1つの「判断文」中の各条件が、少なくとも1回すべての可能な結果を得ている。
    c. 1つの「判断文」中の個々の条件が、単独で全体の「判断文」の結果を左右する。
  • 関数カバレッジ
    テスト対象コード中の関数について、最低1回実行された関数の数を示します。すべての関数が最低1回実行された場合、関数カバレッジは100%になります。
    機能安全規格(ISO 26262)対応で要求されるカバレッジとなります。
  • コールカバレッジ
    テスト対象コード中の関数呼び出しについて、テストで呼び出された数を示します。すべての関数呼び出しが行なわれた場合、コールカバレッジは100%になります。
    機能安全規格(ISO 26262)対応で要求されるカバレッジとなります。

静的解析・単体テストツールを無償体験版をお試しください。
すべての機能を無償で14日間利用可能。すぐにご評価可能なチュートリアル付属!
ご評価を円滑に進めるための、技術的なサポート対応あります。

静的解析・単体テストツール C++testに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
parasoft-info@techmatrix.co.jp

CONTACT

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。