更新:2024/12/16

複数条件網羅とは?ゆるーくわかりやすく解説

はるか
はるか
複数条件網羅って知ってる?
ふゅか
ふゅか
うん!全部の条件の組み合わせをチェックするテスト手法のことだよね。具体的には「真」と「偽」のパターン全部を試すんだよ!

1. 複数条件網羅の要点

複数条件網羅とは・・・

2. 複数条件網羅とは

複数条件網羅(Multiple Condition Coverage)は、条件分岐が含まれるコードのすべての条件の組み合わせを検証するテスト手法です。単純な条件網羅(Condition Coverage)では各条件が少なくとも一度は「真」と「偽」をとることを確認しますが、複数条件網羅では、条件のすべての組み合わせを評価する必要があります。ホワイトボックステストの一つです。

2.1. 英語から推測すると

「複数条件網羅」という言葉を英語の “Multiple Condition Coverage” から推測すると、以下のように解釈できます。

  • Multiple: 「複数の」
    一つではなく、複数の要素や条件が存在することを指します。
  • Condition: 「条件」
    プログラムやロジック内で「もしAならば」「もしBが真ならば」のように動作を決定する基準となる要素を意味します。
  • Coverage: 「網羅」
    対象となるものを漏れなくカバーすること。

したがって、複数条件網羅とは、「複数の条件に基づくロジックのすべての組み合わせを漏れなくテストする手法」と解釈できます。

3. ラーメン屋の注文の例

ラーメンの注文を例にして考えてみましょう。この店では、ラーメンまたは定食かどうかを選択できます。また、ラーメンの味を味噌、醤油かどうか選択できます。また、大盛かどうかを選択できます。

ここで、「たれを用意する」と「定食を用意する」、「量を6倍にする」という特別な命令を分岐で行います。それぞれの条件を複数条件網羅で見ていくと

醤油と味噌の組み合わせが真と偽になるケースを試す。例えば、

「醤油 YES 味噌 YESの場合」、「醤油 YES 味噌 NO」、「醤油 NO 味噌 YES」と「醤油 NO 味噌 NO」の場合をテストする。

一方で、大盛かどうかは単純に真と偽になるようなケースを試せばよい。

4. 条件の例

以下の条件分岐を考えてみましょう。

if (A || B) && C {
    // 処理
}
  • 条件 A は「真」または「偽」
  • 条件 B は「真」または「偽」
  • 条件 C は「真」または「偽」

このコードでは、条件網羅を利用すると、3つの条件 (A, B, C) のすべての組み合わせをテストする必要があります。
「真」か「偽」の値を持つ条件が3つある場合、組み合わせは以下の8通りです。

A B C
ふゅか
ふゅか
例えば「AかBが真で、かつCが真のときに動く」条件式があったら、どうやって組み合わせを考えたらいいの?
はるか
はるか
A、B、Cそれぞれが「真」か「偽」かで全部試す。つまり、$2^3$通りのケースがある。