LoginSignup
387
305

More than 5 years have passed since last update.

ホワイトボックステストにおけるカバレッジ(C0/C1/C2/MCC)について

Last updated at Posted at 2018-05-17

本稿では以下のサンプルコードを用いて、ホワイトボックステストにおけるカバレッジ(C0/C1/C2/MCC)について説明します。

if(条件文a1 || 条件文a2){ // 判定条件A
  命令文X;
}

if(条件文b1 || 条件文b2){ // 判定条件B
  命令文Y;
} else{
  命令文Z;
}

命令網羅 (statement coverage) (C0)

それぞれの命令文が少なくとも1回は実行される ようにテストを設計します。上記のサンプルコードの場合、カバレッジ率を100%にするためのテストケース数は2通りとなります。

テストケースNo. 条件文a1 条件文a2 条件文b1 条件文b2 判定条件A 判定条件B 命令文X 命令文Y 命令文Z
1 T F T F T T 実行 実行 -
2 T F F F T F 実行 - 実行

命令文X、命令文Y、命令文Zがそれぞれ1回以上実行されています。

分岐網羅 (branch coverage) (C1)

それぞれの判定条件における真偽が少なくとも1回は実行される ようにテストを設計します。上記のサンプルコードの場合、カバレッジ率を100%にするためのテストケース数は2通りとなります。

テストケースNo. 条件文a1 条件文a2 条件文b1 条件文b2 判定条件A 判定条件B 命令文X 命令文Y 命令文Z
1 T F F F T F 実行 - 実行
2 F F T F F T - 実行 -

判定条件A、判定条件Bの真偽値T、Fがそれぞれ1回以上実行されています。上表のように C1カバレッジが100%の場合、必然的にC0カバレッジも100%になります。

条件網羅 (condition coverage) (C2)

それぞれの条件文における真偽が少なくとも1回は実行される ようにテストを設計します。上記のサンプルコードの場合、カバレッジ率を100%にするためのテストケース数は2通りとなります。

テストケースNo. 条件文a1 条件文a2 条件文b1 条件文b2 判定条件A 判定条件B 命令文X 命令文Y 命令文Z
1 T F T F T T 実行 実行 -
2 F T F T T T 実行 実行 -

条件文a1、条件文a2、条件文b1、条件文b2の真偽値T、Fがそれぞれ1回以上実行されています。

上表のように C2カバレッジが100%であっても、C0カバレッジ、C1カバレッジが100%になるとは限らない ことに注意してください。

複合条件網羅 (multiple condition coverage) (MCC)

それぞれの条件における真偽の組み合わせがすべて実行される ようにテストを設計します。上記のサンプルコードの場合、カバレッジ率を100%にするためのテストケース数は2^4=16通りとなります。

テストケースNo. 条件文A1 条件文A2 条件文B1 条件文B2
1 T F T T
2 F F F T
3 T F F T
4 T T F T
5 F T T T
6 F F T F
7 T T T T
8 F T F T
9 T F F F
10 T T F F
11 F T F F
12 F F T T
13 T F T F
14 T T T F
15 F T T F
16 F F F F

参考としたウェブサイト

387
305
2

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
387
305