C2カバレッジ

C2カバレッジは、条件網羅率であり、コード内のすべての条件を少なくとも1回は実行されているかどうかを計測します。
ひとつの条件には、真(True)と偽(False)の2つの解がありますが、その両方の解が得られるとC2カバレッジは100%になります。どちらか一方のみの解しか得られなかった場合は50%になります。
C2カバレッジは“条件”に着目して計測するので、コード内に連鎖した条件がある場合でも、それぞれの条件で計測し、連続した状態でのカバレッジは考慮しません。したがって、ひとつの条件には2種類の解が存在するので、「条件の数x2」が単純条件カバレッジの総数ということになります。この「条件の数x2」の値がC2カバレッジを計算する場合の母数になります。テスト時に、それぞれの条件で得られた解の種類の和を分子にして計算すると、C2カバレッジが得られます。

C2カバレッジ(条件網羅率)の例

C2カバレッジ(条件網羅率)の例

上のソースコードA の場合、2つの分岐判定条件(if文)の中の4つの条件文(a>0、c==1、b==3、d<0 )それぞれに真(True)と偽(False)の2種類の解があるので単純条件カバレッジの総数は 8(4x2=8)、つまり、C2カバレッジの分母が、8となります。分岐の中の4つの条件文(a>0、c==1、b==3、d<0 )それぞれの真(True)と偽(False)を確認すればC2カバレッジ(単純条件カバレッジ)の100%網羅率が得られます。

C++testのC2カバレッジ(単純条件カバレッジ)計測

C++testでは、9種類のコードカバレッジを計測しますが、その中には、C0(命令網羅率)、C1(分岐網羅率)、C2(条件網羅率)のカバレッジも含まれています。 C++testでは、C2(条件網羅率)カバレッジは、単純条件カバレッジと表示されており、単体テスト実行時に計測されます。

画面ショット(カバレッジタブとエディタ)
[カバレッジビュー]
カバレッジの計測結果サマリ(ファイル単位の網羅率)を参照できます。

カバレッジビュー

[ソースコードエディタ]
各行のカバレッジを確認することが可能です。また、特定のコード行からそのコード行をカバーしたテストケースを確認することも可能です。
テストケースエクスプローラーで、特定のテストケースを選択すると、そのテストケースによるC2カバレッジを確認できます。

ソースコードエディタ

[HTMLレポート]
C++testが生成するHTMLレポートには、単体テストや静的解析の実行結果とともに、コードカバレッジ情報も記載されるので、プロジェクトマネージャーへの報告や、第三者への報告、自身のテスト管理のために活用できます。

HTMLレポート]

C++testは、CppUnitのテストクラスをインポートし、そのテストクラスを使用してテストを実行することが可能です。その際に、コードカバレッジも計測するので、既存のCpptestのテストクラスの妥当性や、追加すべきテストケースなどの確認が行えます。

自動生成テストケースのC2(条件網羅率)カバレッジ

C++testは、テストケースやテストスタブ、テストドライバを自動生成し、単体テストの準備作業をサポートします。C++testは、テストケースを自動生成する際に、テスト対象ソースコードに含まれる定数の境界値(条件文で指定されている定数とその境界値を含む周辺の値)を生成するので、高いC2カバレッジのテストが行えます。上のソースコードA に対して、自動生成テストケースのみで単体テストを実行した場合、100%のC2カバレッジのテストを実行できます。

C++testが計測するその他のカバレッジ

C++testは、C2:条件網羅率(単純条件カバレッジ)を含めて、以下の9種類のコードカバレッジを計測します。テスト時に網羅率を検証することにより、テストの妥当性を確認できます。

  • 行カバレッジ
  • ステートメントカバレッジ(C0:命令網羅率)
  • ブロックカバレッジ
  • パスカバレッジ
  • 判断文カバレッジ(C1:分岐網羅率)
  •  単純条件カバレッジ(C2:条件網羅率)
  •  Modified Condition/Decision Coverage (MC/DC)カバレッジ
  •  関数カバレッジ
  •  コールカバレッジ

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

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

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

    03-4405-7853

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

CONTACT

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