FE EXAM

条件網羅(コンディションカバレッジ)

各条件式の真と偽の両方を実行することを確認するテスト網羅基準。

INTERACTIVE VISUALIZATION
テストケース
条件の式
age >= 18 AND hasTicket
条件網羅率
0%
シナリオ
ステップ1 / 7
STEP 1/7テストを始める前まだ1件もテストを実行していない状態です。この if 文は「age >= 18(18歳以上)」と「hasTicket(チケットあり)」という2つの条件をAND(かつ)で結んでいます。条件網羅では、この個々の条件それぞれについて、真と偽の両方を実行することを目指します。
真 (T)偽 (F)age >= 18hasTicket
計測のしかた
条件網羅率 = (網羅した条件の真偽の数) ÷ (全条件 × 2)
全条件 = 2(a, b)→ 全真偽値 = 2 × 2 = 4
網羅済み = 0 / 4 = 0%
解説

📌
条件網羅とは

a AND ba: 真 / 偽b: 真 / 偽各条件の真・偽を網羅する

条件網羅(コンディションカバレッジ)とは、複合条件(=ANDやORで複数つないだ条件)を構成する個々の条件式について、それぞれ真と偽の両方を最低1回ずつ実行することを目指すテスト基準です。プログラムの内部構造を見て設計するホワイトボックステストの一種です。

身近な例で考えると、テーマパークの入場ゲートのチェック項目に似ています。「年齢制限を満たすか」「チケットを持っているか」という各チェックを、満たす場合・満たさない場合の両方できちんと試しておく、というイメージです。

上のツールで▶ボタンを押すと、「age >= 18」と「hasTicket」の2つの条件について、真・偽がそれぞれ実行されて条件網羅が100%になる流れを確認できます。

⚖️
分岐網羅との違い

分岐網羅は「分岐(条件式全体)が真になるルートと偽になるルートの両方を通る」基準、条件網羅は「複合条件を構成する個々の条件の真偽をそろえる」基準です。注目するレベルが違います。

項目分岐網羅条件網羅
注目する対象分岐(式全体)の真偽個々の条件の真偽
例での網羅合格ルート/不合格ルートa の真偽・b の真偽
包含関係必ずしも条件網羅を満たさない必ずしも分岐網羅を満たさない

重要なのは、条件網羅を満たしても分岐網羅を満たすとは限らないという点です。たとえば (a真,b偽) と (a偽,b真) の2件は各条件の真偽をすべて満たすので条件網羅100%ですが、AND条件ではどちらも式全体は偽になるため、真ルートを一度も通らず分岐網羅は満たしません。観点が別物だと意識しましょう。

🧮
計算例

条件網羅を満たす最小のテストケースを考える問題はよく登場します。条件式 if (a AND b) について、a・b それぞれの真・偽をすべて満たす組合せを探してみましょう。

必要な真偽値: a=真, a=偽, b=真, b=偽
ケース① (a=真, b=真) → a=真・b=真 を回収
ケース② (a=偽, b=偽) → a=偽・b=偽 を回収
網羅率 = 4 / 4 = 100%(最小2件)

ポイントは次のとおりです。
各条件は真・偽の2通り:条件数 × 2 が網羅すべき総数
組合せの全パターンは不要:a・b で4通りある組合せをすべて試す必要はない
最小ケース数は変わる:1件のテストで複数条件の真偽をまとめて回収できれば少なく済む

上のツールの計測のしかたで、「網羅済みの真偽値 ÷ 全真偽値(4)」の割り算が条件網羅率になる様子を確認できます。

練習問題

🎯
基本情報技術者 練習問題

Q1.条件網羅(コンディションカバレッジ)の説明として最も適切なものはどれか。
A.すべての命令を少なくとも1回は実行する
B.分岐の真と偽の両方を実行する
C.複合条件を構成する各条件式の真と偽の両方を実行する
D.入力範囲の境界付近の値を重点的に実行する
Q2.if (a AND b) で a・b はそれぞれ単一の条件である。条件網羅を満たすために最低限必要なのはどれか。
A.a と b の真偽の組合せ4通りすべてを実行する
B.a の真・偽、b の真・偽がそれぞれ1回以上現れる
C.式全体が真になる場合だけを実行する
D.a だけの真・偽を実行すればよい
Q3.条件網羅と分岐網羅の違いとして正しいものはどれか。
A.両者はまったく同じ意味である
B.条件網羅は分岐(式全体)の真偽、分岐網羅は個々の条件の真偽に注目する
C.条件網羅は個々の条件の真偽、分岐網羅は分岐(式全体)の真偽に注目する
D.条件網羅を満たせば必ず分岐網羅も満たされる

関連コンテンツ