【ISTQB /JSTQB FL 4.0対策】境界値分析・状態遷移・分岐網羅の実例解説|CTFL試験Part #27

JSTQB Fundation Level 4.0

ISTQB Foundation(CTFL)試験対策シリーズ、第27回目です。

今回の動画では、試験によく出る「境界値分析」「決定表」「状態遷移テスト」「ブランチテスト」「ホワイトボックスとブラックボックスの関係」など、テスト設計技法の核心を押さえた5問が解説されています。


質問1:二値境界値分析(Two-Value Boundary Value Analysis)

シナリオ:

開発者は以下のビジネスルールを実装するように依頼されました。

入力値は整数値。

値が100以下または200以上の場合、「value is incorrect」と出力。

それ以外(101〜199)の場合、「value is OK」と出力。

このとき、「二値境界値分析(Two-Value Boundary Value Analysis)」を使ってテスト設計を行う場合、

最も高いカバレッジを達成するテストデータの組み合わせはどれでしょうか?


選択肢

A. 100, 150, 200, 20

B. 99, 200, 201

C. 98, 99, 100, 101

D. 101, 150, 199, 200 ✅


解説

この仕様では、有効な値の範囲は「101〜199」。

よって、無効値は「100以下」と「200以上」です。

境界値:

  • 下側の境界:100, 101

  • 上側の境界:199, 200

二値境界値分析では、各境界の境界値とその隣接値をテストします。

したがって理想的なテストデータは 100, 101, 199, 200 です。

選択肢Dのセット「101, 150, 199, 200」は、

この中の 3つの境界値(101, 199, 200) を網羅しており、

最も高いカバレッジ(約75%)を達成します。

👉 正解:D

補足例:

もし「三値境界値分析(Three-Value)」を使うなら、各境界にもう1点追加して

「99, 100, 101, 198, 199, 200, 201」などをテストする形になります。


質問2:決定表テスト(Decision Table Testing)

シナリオ:

運転免許試験結果を分析するシステムのテスト設計を行っています。

次の決定表に基づいてテストデータを作成したところ、

矛盾するルール(Contradictory Rules)」が存在することがわかりました。

どのテストデータがその矛盾を示すでしょうか?


決定表ルール

条件

C1: 初回受験

C2: 学科試験合格

C3: 実技試験合格

結果

R1

T

T

T

免許発行

R2

T

F

T/F

再試験の案内

R3

T/F

T/F

F

追加講習の案内

選択肢

A. C1=T, C2=T, C3=F

B. C1=T, C2=F, C3=T

C. C1=T, C2=T, C3=T

D. C1=F, C2=F, C3=F ✅


解説

ルールR2とR3の両方が「C2=F, C3=F」で成立しており、

出力が異なるため 矛盾(Contradiction) が発生しています。

👉 正解:D

具体例:

たとえば「学科も実技も不合格」の場合、

「再試験の案内」と「追加講習の案内」という相反する指示が出てしまうのが矛盾です。


質問3:状態遷移テスト(State Transition Testing)

シナリオ:

宿泊予約システムの状態遷移は次のようになっています。

開始 → 部屋リクエスト → 「リクエスト中」状態 →

① 空室あり → 「確認済み」→ 支払い → 終了

② 空室なし → 「ウェイトリスト」→

 a) キャンセル → 終了

 b) 空室発生 → 「確認済み」→ 支払い → 終了

このとき、100%有効遷移カバレッジを達成するために必要な最小テストケース数は?


選択肢

A. 3 ✅

B. 4

C. 2

D. 5


解説

すべての有効遷移(Valid Transition)を網羅するためには、

以下の3つのシナリオが必要です。

  1. 空室あり → 直接予約・支払い・終了

  2. 空室なし → ウェイトリスト → キャンセル・終了

  3. 空室なし → ウェイトリスト → 空室発生 → 確認・支払い・終了

👉 正解:A


質問4:ブランチテスト(Branch Testing)

シナリオ:

次のコントロールフローグラフに対してブランチテストを適用します。

このとき、**テストすべきカバレッジ項目(branches)**は何個あるでしょうか?


選択肢

A. 6

B. 7

C. 8 ✅

D. 9


解説

ブランチテストでは、分岐(if/elseなど)ごとの経路をテスト対象とします。

フローチャート上で「分岐の線(矢印)」を数えると、合計で8本あります。

👉 正解:C(8本)

具体例:

もしコード中に「if文が3つ」あるなら、通常はそれぞれにTrue/Falseの2通りがあるため、

最大で6分岐(=6ブランチ)を確認します。


質問5:ホワイトボックスとブラックボックスの関係

問題:

「ホワイトボックステストはブラックボックステストの支援としてどのように役立つか?」


選択肢

A. ホワイトボックスのカバレッジ指標は、ブラックボックステストのコードカバレッジを評価するのに役立つ ✅

B. ホワイトボックス分析は、到達不能コードを特定できる

C. ブランチテストはブラックボックステスト技法を包含する

D. ホワイトボックステストはブラックボックス技法のテスト項目を提供する


解説

Aが正解です。

ブラックボックステストでは主に外部仕様を基準にテストしますが、

ホワイトボックスカバレッジを確認することで、

「どのくらいコードが実際にテストされているか」を定量的に評価できます。

つまり、ホワイトボックステストはブラックボックステストを裏側から補完します。

👉 正解:A


まとめ

問題

テーマ

正解

Q1

二値境界値分析

D

Q2

決定表の矛盾検出

D

Q3

状態遷移テスト

A

Q4

ブランチテスト

C

Q5

ホワイトボックスとブラックボックスの関係

A

💡 試験対策のポイント

  • 境界値分析:境界+隣接値を意識(100/101、199/200など)

  • 決定表:複数ルールが同時に成立していないかチェック

  • 状態遷移:すべての有効経路(Valid Transition)を洗い出す

  • ブランチテスト:分岐ごとのTrue/False経路を確認

  • ホワイト×ブラックの関係:仕様テスト+コード網羅の両輪で品質向上

 

コメント

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