対象試験と出題頻度
分岐網羅は、基本情報技術者・応用情報技術者で出題されるテーマです。
ホワイトボックステストのテスト網羅基準を比較する問題として定番化しており、「命令網羅」「条件網羅」「複合条件網羅」との違いを正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「分岐網羅って命令網羅と何が違うの?」と混乱しがちです。
分岐網羅(Branch Coverage / 判定条件網羅)とは、一言で言うと
「プログラム中のすべての分岐について、真と偽の両方の結果を最低1回は通すテスト網羅基準」
のことです。
イメージとしては、「分かれ道のあるハイキングコースを、どちらの道も最低1回は歩く」です。
分かれ道で右にしか行かなければ、左の道に落とし穴があっても気づきません。
プログラムも同じで、if文の「成立する場合」だけテストして「成立しない場合」をテストしなければ、片側のバグを見逃します。
📊 分岐網羅の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Branch Coverage(Decision Coverage) |
| 別名 | 判定条件網羅 |
| 分類 | ホワイトボックステストの網羅基準 |
| 網羅対象 | すべての分岐の真(True)と偽(False) |
解説
プログラムをテストするとき、「どこまでテストすれば十分と言えるか」という基準が必要です。テストの網羅度を測る指標がカバレッジ(網羅率)であり、その代表的な4つの基準のうちの1つが分岐網羅です。
命令網羅だけではif文の「偽」のルートを通らないテストでも100%になってしまうため、もう一段階厳しい基準として分岐網羅が用いられます。
図解:分岐網羅のイメージ
分岐網羅(C1):すべての判定の真と偽の両方を通る
▲ 判定の True側(処理A)と False側(処理B)の両方 を通る2件のテストデータで分岐網羅100%を達成
※ True側だけのテストでは命令網羅(C0)は満たせても、分岐網羅(C1)は満たせない
具体例:テストケースの作り方
次のサンプルコードに対して、分岐網羅を満たすテストデータを考えます。
if (x > 0 AND y > 0) {
print("両方とも正");
} else {
print("それ以外");
}
| テスト | x | y | 判定結果 | 通る分岐 |
|---|---|---|---|---|
| ① | 5 | 3 | True | 「両方とも正」 |
| ② | -1 | 3 | False | 「それ以外」 |
▲ この2件で判定結果の真と偽を両方カバーできるため、分岐網羅100%を達成
他のカバレッジ基準との比較
ホワイトボックステストの網羅基準は、ゆるい順から厳しい順に階層構造になっています。
| 網羅基準 | 何を網羅するか | 厳しさ |
|---|---|---|
| 命令網羅 | すべての命令文を最低1回実行 | ★☆☆☆ |
| 分岐網羅 | 各分岐の真・偽の判定結果を網羅 | ★★☆☆ |
| 条件網羅 | 各条件式の中の個々の条件で真・偽を網羅 | ★★★☆ |
| 複合条件網羅 | 条件の真偽の組み合わせをすべて網羅 | ★★★★ |
注意したいのは、分岐網羅は「判定結果」を網羅するだけで、その判定を構成する個々の条件までは見ないという点です。
x > 0 AND y > 0 という判定式の場合、x と y それぞれの真偽の組み合わせまでチェックするのは条件網羅以降の役割になります。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 分岐網羅の核心を3行で
・各分岐について真と偽の両方の判定結果を最低1回ずつ通す
・命令網羅より厳しく、条件網羅よりゆるい中間レベルの基準
・別名「判定条件網羅」と呼ばれることもある
試験ではこう出る!
分岐網羅は、FE・APの午前問題でホワイトボックステストの網羅基準を比較する形で繰り返し出題されています。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H30秋 午前 問49 |
判定条件網羅(分岐網羅)の説明として正しいものを選ぶ。 | 「判定の真と偽を網羅」が正解。命令網羅・条件網羅の説明がひっかけ。 |
| AP H27春 午前 問49 |
具体的なフローチャートに対し分岐網羅を満たす最小テストケース数を問う。 | 分岐ごとに真・偽が通る最小ケースを数える計算問題。 |
| AP H24秋 午前 問48 |
複数のテストデータが命令網羅・分岐網羅・条件網羅のどれを満たすかを判定。 | 網羅基準の階層関係(厳しさの順序)の理解が必要。 |
📝 IPA試験での出題パターン
パターン1:「説明文を選べ」
4つの網羅基準の説明が並び、分岐網羅(判定条件網羅)に該当するものを選ぶ形式。キーワードは「判定」「真と偽の両方」。「すべての命令を最低1回」(命令網羅)、「個々の条件の真偽」(条件網羅)、「条件の組み合わせをすべて」(複合条件網羅)がひっかけとして混ざります。
パターン2:「テストケースを選べ」
具体的なフローチャートやコードが提示され、分岐網羅を満たす最小のテストデータの組み合わせを問う形式。各ひし形(判定)について真ルートと偽ルートの両方が通るかを表でチェックすると確実です。
試験では「判定条件網羅=分岐網羅」と覚えておけばOKです。両方の表記が出ますが同じものを指します。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. ホワイトボックステストにおける「分岐網羅(判定条件網羅)」の説明として、最も適切なものはどれでしょうか?
- A. プログラム中のすべての命令文を最低1回は実行するようにテストデータを設計する。
- B. プログラム中のすべての分岐について、判定結果が真になる場合と偽になる場合の両方を最低1回ずつ実行するようにテストデータを設計する。
- C. 判定文を構成する個々の条件について、それぞれが真になる場合と偽になる場合の両方を最低1回ずつ実行するようにテストデータを設計する。
正解と解説を見る
正解:B
解説:
分岐網羅は、各判定の結果(True / False)の両方を通るようにテストケースを設計する基準です。判定が成立する経路と成立しない経路の両方をテストすることで、片側ルートに潜むバグを発見できます。
選択肢Aは命令網羅の説明です。命令網羅は「命令の実行」のみを基準とするため、if文の偽ルートを通らなくても達成されてしまうゆるい基準であり、分岐網羅とは異なります。選択肢Cは条件網羅の説明です。条件網羅は判定式の中の「個々の条件」(例:x > 0 と y > 0 のそれぞれ)に着目するもので、判定全体の真偽を見る分岐網羅より一段細かい粒度の基準です。
よくある質問(FAQ)
Q. 分岐網羅100%なら命令網羅も自動的に100%になりますか?
なります。分岐網羅は各分岐の真と偽の両方を通るため、結果としてすべての命令文も通過することになります。逆は成り立たず、命令網羅100%でも分岐網羅100%とは限らない点が試験で問われやすいポイントです。網羅基準の包含関係は「複合条件網羅 ⊃ 条件網羅 ⊃ 分岐網羅 ⊃ 命令網羅」と階層構造になっていると押さえておくとミスしません。
Q. 「判定条件網羅」と「分岐網羅」は同じものですか?
同じものです。IPA試験では「判定条件網羅」、英語圏のソフトウェア工学では「Branch Coverage」または「Decision Coverage」と呼ばれます。過去問では両方の表記が混在するため、どちらの言い方で出題されても同じ概念だと判断できるようにしておくと得点に直結します。
Q. 実務ではどのカバレッジ基準を使うのが一般的ですか?
業界や対象システムにより異なりますが、一般的なWebアプリケーション開発では「分岐網羅80%以上」を目標とするチームが多いです。航空宇宙・医療・自動車などのミッションクリティカル分野では、より厳しいMC/DC(改良条件判定網羅)が要求されることもあります。JenkinsやGitHub Actionsなどに組み込んで、JaCoCo(Java)やcoverage.py(Python)などのツールで自動計測するのが定番です。
Q. switch文やネストしたif文でも考え方は同じですか?
同じです。switch文の場合は各case(およびdefault)への分岐を、ネストしたif文の場合は内側・外側それぞれの判定の真偽を独立にカウントします。判定の数が増えるほどテストケースも増えるため、コードの分岐を減らすこと自体がテスト容易性を高める設計になります。複雑度を測る指標として「サイクロマティック複雑度」も一緒に押さえておくと理解が深まります。