ソフトウェアテスト技法の中でも、「ホワイトボックステスト」の代表的な手法に「ブランチテスト(Branch Testing)」があります。
このテクニックは、プログラムの分岐(branch)すべてをテストできているかを確認するためのものです。
この記事では、ISTQB Foundation 4.0シラバス(Chapter 4.3 White-box Test Techniques)の内容をもとに、
ブランチテストの基本から、ステートメントテストとの違い、実際の例、そしてブランチ網羅率の計算方法まで丁寧に解説します。
🔹ブランチテストとは?
**ブランチテスト(Branch Testing)とは、
プログラム内のすべての分岐(if文や条件式のtrue/false)**を網羅的にテストする手法です。
プログラムのフローを「フローチャート」として表現したとき、
黒い四角(ノード)は“実行文(ステートメント)”、
矢印(分岐線)は“条件分岐(branch)”を示します。
ブランチテストでは、すべての分岐線(true/falseの道)を少なくとも一度は通るようにテストケースを設計します。
🔸ステートメントテストとの違い
同じホワイトボックステストの一種である「ステートメントテスト」と混同されがちですが、両者には明確な違いがあります。
|
比較項目 |
ステートメントテスト |
ブランチテスト |
|---|---|---|
|
対象 |
すべての命令文(文)を実行する |
すべての条件分岐を通過する |
|
目的 |
各命令が実行されるか確認 |
各分岐パス(true/false)が実行されるか確認 |
|
網羅率100%で保証されるもの |
一部の条件分岐が未実行でもOK |
すべてのステートメントが実行される(より強力) |
✅ 結論:ブランチテストはステートメントテストより強力な手法です。
なぜなら、100%ブランチ網羅率を達成すると、自動的に100%ステートメント網羅率も達成できるからです。
しかし、逆は成り立ちません。
🔹具体例:if文による分岐のあるコード
例1:単純なif-else文
if a > 10:
print(“A is large”)
else:
print(“A is small”)
-
ブランチテストでは、
-
a > 10 が True のケース
-
a > 10 が False のケース
の2パターンをテストする必要があります。
-
👉 したがって、最低2つのテストケースが必要です。
Test1: a = 15 → “A is large”
Test2: a = 5 → “A is small”
例2:入れ子(Nested)条件がある場合
if a > 10:
if a > 20:
print(“A is very large”)
else:
print(“A is small”)
この場合、次の3つの分岐があります。
-
a > 10 → True
-
a > 20 → True / False
-
a > 10 → False
ブランチテストでは、すべての分岐(3通り)を通過する必要があるため、
少なくとも3つのテストケースが必要です。
Test1: a = 25 → a>10 True, a>20 True
Test2: a = 15 → a>10 True, a>20 False
Test3: a = 5 → a>10 False
一方、ステートメントテストであれば
「すべてのprint文を1回以上実行すれば良い」ため、
たった1つまたは2つのテストで済むこともあります。
このように、ブランチテストの方がより厳密で、条件の抜け漏れを防ぐことができます。
🔸ブランチ網羅率(Branch Coverage)の計算方法
ブランチ網羅率は、以下の式で計算します。

例:
もしプログラム内に 8個の分岐 があり、
テストによってそのうち 5個が実行された場合…

つまり、まだ3つの分岐が未実行であるため、100%網羅できていないということになります。
🔹ステートメント網羅率との比較例
同じコードでも、測定対象によって結果が異なります。
|
網羅タイプ |
対象 |
実行済みノード/分岐 |
網羅率 |
|---|---|---|---|
|
ステートメント網羅 |
8個のノードのうち6個実行 |
6/8 |
75% |
|
ブランチ網羅 |
8個の分岐のうち5個実行 |
5/8 |
62.5% |
👉 このように、ブランチ網羅はより厳しい指標であることが分かります。
✅ 試験対策ポイント(ISTQB Foundation 4.0)
ISTQB試験では、以下のような問題が出題されます。
-
定義問題
例:「ブランチ網羅率とは何を測る指標ですか?」
→ 分岐(Branch)の実行割合をパーセンテージで表す指標。
-
関係問題
例:「100%ステートメント網羅率を達成すれば、100%ブランチ網羅率も保証される。」
→ ❌ 誤り。逆(ブランチ→ステートメント)は正しい。
-
計算問題(シンプルな式ベース)
→ フローチャート上の分岐数と通過数からパーセンテージを算出。
💡まとめ:ブランチテストの重要性
-
すべての条件分岐(True/False)を検証するための手法
-
100%ブランチ網羅 = 100%ステートメント網羅
-
**安全性・信頼性の高いシステム(車載・医療など)**では特に重要
-
ホワイトボックステスト技法の中でも、最も強力な部類
🧩 実務での活用例
例えば自動車のソフトウェア(エアバッグ制御やABS)などでは、
すべての条件分岐が正しく動作していることが生死に関わるため、
ブランチ網羅率100%を必須条件としているプロジェクトもあります。
📘まとめ
|
項目 |
内容 |
|---|---|
|
テクニック名 |
ブランチテスト(Branch Testing) |
|
測定指標 |
ブランチ網羅率(Branch Coverage) |
|
式 |
実行された分岐 ÷ 全分岐 × 100 |
|
特徴 |
ステートメントテストよりも強力 |
|
試験での狙われ方 |
定義・比較・計算式問題が中心 |



コメント