【ISTQB /JSTQB FL 4.0解説】ブランチテスト(Branch Testing)とブランチ網羅率(Branch Coverage)をわかりやすく解説!

JSTQB Fundation Level 4.0

ソフトウェアテスト技法の中でも、「ホワイトボックステスト」の代表的な手法に「ブランチテスト(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 > 10True のケース

    • a > 10False のケース

      の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つの分岐があります。

  1. a > 10 → True

  2. a > 20 → True / False

  3. 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試験では、以下のような問題が出題されます。

  1. 定義問題

     例:「ブランチ網羅率とは何を測る指標ですか?」

     → 分岐(Branch)の実行割合をパーセンテージで表す指標。

  2. 関係問題

     例:「100%ステートメント網羅率を達成すれば、100%ブランチ網羅率も保証される。」

     → ❌ 誤り。逆(ブランチ→ステートメント)は正しい。

  3. 計算問題(シンプルな式ベース)

     → フローチャート上の分岐数と通過数からパーセンテージを算出。


💡まとめ:ブランチテストの重要性

  • すべての条件分岐(True/False)を検証するための手法

  • 100%ブランチ網羅 = 100%ステートメント網羅

  • **安全性・信頼性の高いシステム(車載・医療など)**では特に重要

  • ホワイトボックステスト技法の中でも、最も強力な部類


🧩 実務での活用例

例えば自動車のソフトウェア(エアバッグ制御やABS)などでは、

すべての条件分岐が正しく動作していることが生死に関わるため、

ブランチ網羅率100%を必須条件としているプロジェクトもあります。


📘まとめ

項目

内容

テクニック名

ブランチテスト(Branch Testing)

測定指標

ブランチ網羅率(Branch Coverage)

実行された分岐 ÷ 全分岐 × 100

特徴

ステートメントテストよりも強力

試験での狙われ方

定義・比較・計算式問題が中心

コメント

タイトルとURLをコピーしました