12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テストカバレッジをフローチャートで確認する(c2以外)

Last updated at Posted at 2018-10-10

ホワイトボックステストにおけるカバレッジについていつも忘れてしまうのでメモ

ここでは代表的な以下の3つのものを取り上げます。

カバレッジの種類 説明
命令網羅(statement coverage, C0) コード内の命令文に対して少なくとも1回実行されるようにテストをする
分岐網羅(branch coverage, line coverage, C1) コード内の条件判定にの結果に対して、それぞれが少なくとも1回実行されるようにテストをする
条件網羅(condition coverage, C2) コード内の条件判定の個々の条件に対してそれぞれが少なくとも1回実行されるようにテストをする

以下のコードを例にとって説明します。

def hogehoge
  if 条件a1 do
    raise 例外
  end

  if 条件b1 || 条件b2 do
    命令文1
  else
    命令文2
  end

  if 条件c1 || 条件c2 do
    命令文3
  end
end

命令網羅(statement coverage, C0)

すべてのステートメント(命令文)を通る必要があるので以下のようになります。
赤丸の部分に着目して設計します。
カバレッジ (1).jpg

分岐網羅(branch coverage, line coverage, C1)

すべての条件判定を通る必要があるので以下のようになります。
赤丸の部分に着目して設計します。
分岐網羅が100%であれば必然的に命令網羅も100%になります。
カバレッジ (2).jpg

条件網羅(condition coverage, C2)

条件判定の個々の条件に着目して設計します。
図だとごちゃごちゃするので表にします。

テストケース a1 b1 b2 c1 c2 出力結果
1 T - - - - 例外
2 F T F T F 命令文2、命令文3
3 F F T F T 命令文2、命令文3
上記のテストケースでc2カバレッジは100%にはなりますが、命令文1が実行されていないことがわかります。
このようにc2では100%でもc1、c0では100%にならないこともあるので注意しましょう。

まとめ

  • c0は命令
  • c1は条件判定
  • c2は個々の条件
  • c1が100%のときc0は100%
  • c2が100%のときc0, c1は100%になるとは限らない

【補足】条件網羅のときに着目する箇所

赤丸のところです。
カバレッジ (3).jpg

参考

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?