---
title: "判定条件網羅（分岐網羅）とは？真と偽の分岐を1回ずつ通すテスト【基本情報技術者試験】"
description: "判定条件網羅（分岐網羅）を「判定式全体が真になる経路と偽になる経路を少なくとも1回ずつ実行する」と整理し、A OR Bの例で条件網羅との違いやFE試験での見分け方を解説します。"
last_modified_at: "2026-08-07"
canonical_url: "https://stemtazoo.github.io/fe/branch-coverage/"
section: "fe"
---

## まず結論

判定条件網羅（分岐網羅）とは、**判定式全体の結果が「真」になる場合と「偽」になる場合を、少なくとも1回ずつ実行するテスト**です。

基本情報技術者試験では、個々の条件だけを見るのではなく、まず **分岐を決める判定式全体の結果** に注目します。

例えば、判定式が `A OR B` のときは、

```text
A OR B = 真
A OR B = 偽
```

の両方を少なくとも1回ずつ通るテストケースになっているかを確認します。

## 直感的な説明

分岐のあるプログラムを、道の分かれ道として考えてみます。

```text
        判定
       /    \
     真      偽
     |        |
   処理する   処理しない
```

判定条件網羅では、**真の道だけ、または偽の道だけを通って終わりでは不十分**です。

```text
真の道を1回以上通る
偽の道を1回以上通る
```

この2つを満たせば、判定結果としては両方の分岐を確認できたことになります。

覚え方はシンプルです。

```text
分岐網羅 = 真の道と偽の道を両方通る
```

## 定義・仕組み

判定条件網羅（分岐網羅）は、ホワイトボックステストにおける網羅性の考え方の一つです。

プログラム内部の判定条件について、結果が真になる場合と偽になる場合を少なくとも1回ずつ実行するようにテストケースを作ります。

例えば、次の判定式を考えます。

```text
A OR B
```

`OR` は、AまたはBのどちらか一方でも真なら、判定式全体は真になります。

| A | B | A OR B |
|---|---|---|
| 偽 | 偽 | 偽 |
| 偽 | 真 | 真 |
| 真 | 偽 | 真 |
| 真 | 真 | 真 |

ここで判定条件網羅が見るのは、AとBをそれぞれ何回真・偽にしたかではありません。

見るのは、**`A OR B` という判定式全体の結果**です。

例えば、次の2ケースを選ぶとします。

| A | B | A OR B |
|---|---|---|
| 偽 | 偽 | 偽 |
| 真 | 真 | 真 |

この2ケースなら、判定結果として「偽」と「真」の両方を通るため、判定条件網羅を満たします。

一方、次の2ケースではどうでしょうか。

| A | B | A OR B |
|---|---|---|
| 偽 | 真 | 真 |
| 真 | 偽 | 真 |

AとBはそれぞれ真・偽を経験していますが、`A OR B` の結果はどちらも真です。

したがって、**偽側の分岐を一度も通っていないため、判定条件網羅にはなりません**。

このテーマは、基本情報技術者試験のシステム開発技術やプログラムのテストと関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、テストケースの組合せを見て、どの網羅基準を満たしているかを判断する問題が出ます。

判定条件網羅（分岐網羅）なら、次の順番で確認すると解きやすくなります。

1. 分岐を決める判定式を確認する
2. 各テストケースで判定式全体が真か偽かを求める
3. 真と偽の両方が少なくとも1回ずつ含まれているか確認する

例えば、判定式が `A OR B` なら、AとBの値だけを見てはいけません。

```text
A=偽, B=真  → A OR B=真
A=真, B=偽  → A OR B=真
```

この2つではAとBが入れ替わっていますが、**判定結果はどちらも真**です。

試験では、ここを利用して紛らわしい選択肢が作られます。

判定条件網羅を見つけるときは、

> **入力値ではなく、判定式全体の真偽を見る**

と考えます。

## 科目Bでどう使う？

科目Bでも、条件分岐を読むときに同じ考え方が役立ちます。

例えば、次のような疑似言語を考えます。

```text
if A OR B
    処理Xを実行する
endif
```

このとき追うべきなのは、AとBの値だけではなく、最終的に `A OR B` が真か偽かです。

```text
A OR B = 真  → 処理Xを実行する
A OR B = 偽  → 処理Xを実行しない
```

テストケースを読む問題では、各ケースについて判定結果を書き出すと分かりやすくなります。

| ケース | A | B | A OR B | 分岐 |
|---|---|---|---|---|
| 1 | 偽 | 偽 | 偽 | 偽側 |
| 2 | 偽 | 真 | 真 | 真側 |

このように、**条件式の値を1段階ずつ計算して、どちらの分岐を通るか確認する**のがポイントです。

## よくある誤解・混同

### 誤解1：AとBをそれぞれ真・偽にすれば分岐網羅になる

これは必ずしも正しくありません。

例えば、

```text
A=偽, B=真
A=真, B=偽
```

では、AとBはそれぞれ真・偽になります。

しかし、`A OR B` の結果はどちらも真です。

```text
偽 OR 真 = 真
真 OR 偽 = 真
```

そのため、偽側の分岐を通っていません。

判定条件網羅では、**個々の条件ではなく判定式全体の結果**を確認します。

### 誤解2：すべての真偽の組合せを試す必要がある

判定条件網羅では、必ずしも全組合せを試す必要はありません。

`A OR B` なら、真になるケースと偽になるケースを少なくとも1つずつ選べば、判定結果の真・偽の両方を通せます。

すべての組合せを確認する考え方とは区別します。

### 誤解3：命令網羅と同じだと思う

命令網羅は、**各命令を少なくとも1回実行すること**を重視します。

一方、判定条件網羅は、**判定結果の真・偽の両方を通ること**を重視します。

| 網羅の考え方 | 注目するもの |
|---|---|
| 命令網羅 | 命令を実行したか |
| 判定条件網羅（分岐網羅） | 判定結果の真・偽を両方通ったか |
| 条件網羅 | 個々の条件が真・偽になったか |

FE試験では、どこを見ている網羅基準なのかを切り分けることが大切です。

## まとめ（試験直前用）

- 判定条件網羅（分岐網羅）は、**判定式全体の真・偽を少なくとも1回ずつ通す**
- `A OR B` なら、AとBの値ではなく **`A OR B` の結果**を見る
- 個々の条件が真・偽になっていても、判定結果が片方だけなら分岐網羅ではない
- 全組合せを試すことが目的ではない
- 試験では「真側と偽側を両方通ったか？」を最初に確認する
