【ISTQB /JSTQB FL 4.0対策】状態遷移テストとカバレッジ問題の攻略法(Part #19 解説)

JSTQB Fundation Level 4.0

ISTQB Foundation(CTFL)試験の過去問題やサンプル問題を分析しているシリーズ第19回です。

今回のテーマは「状態遷移テスト(State Transition Testing)」「ステートメントカバレッジ」「ブランチカバレッジ」といった、試験で頻出の構造ベーステスト設計技法に関する問題です。

試験だけでなく、実際のテスト設計にも応用できる内容ですので、ぜひ最後まで読んで理解を深めてください。


質問1:状態遷移テストで最大の有効遷移カバレッジを達成するテストケースは?

問題の概要

あるストレージシステムは「最大3つの要素」を格納できます。

状態遷移図は次のように表されます:

  • 変数 n:現在格納されている要素数(0〜3)

  • 状態

    • Start

    • Not Full(n < 3)

    • Full(n = 3)

遷移のルールは以下の通りです。

  • Start → Not Full(要素を追加:add)

  • Not Full → Full(3個目を追加)

  • Full → Not Full(要素を削除:remove)

ここで問われるのは、

👉「有効な遷移(Valid Transitions)」を最も多くカバーするテストケースのシーケンスはどれか?

というものです。


選択肢(イベントのシーケンス)

A. add, remove

B. add, add, add

C. add, add, add, remove, remove

D. add, add, add, remove, add


分析と解説

  • Aaddremove は「Not Full」状態内の遷移のみ。

    → カバレッジは限定的。

  • B:3回addを実行すると「Full」に到達。

    ただし「Full」状態でさらにaddするのは無効な遷移

    → 無効なので不正解。

  • Cadd, add, add, remove, remove

    → すべての有効な遷移(Start→Not Full→Full→Not Full→Not Full)を完全にカバー

    最も高い有効遷移カバレッジを達成

  • Dadd, add, add, remove, add

    → 一部の遷移をカバーできるが、すべてではない。


✅ 正解:C

「add, add, add, remove, remove」

すべての有効な状態遷移を網羅するため、最も高い有効遷移カバレッジを達成します。


💡補足:状態遷移テストのポイント

  • 各状態(State)と遷移(Transition)を理解する。

  • 「有効遷移」「無効遷移」を区別する。

  • 網羅率を高めるには、可能な遷移パスをすべてテストケースに含めること。


質問2:2つのテストケースのステートメントカバレッジ

次の2つのテストケースを実行しました。

  • T1:ステートメントカバレッジ 40%

  • T2:ステートメントカバレッジ 65%

ここで問われるのは、

「次のうち必ず正しい文はどれか?」です。


選択肢

A. テストスイート全体で105%のカバレッジを達成する。

B. T1とT2の両方で少なくとも1つの文が実行されている。

C. テスト対象コードの少なくとも5%が実行不可能な文である。

D. テストスイート全体で完全なブランチカバレッジを達成する。


分析

  • A:カバレッジは100%を超えることはない → ❌

  • C:問題文からは非実行文の存在は判断できない → ❌

  • D:ステートメントカバレッジの情報からブランチカバレッジは判断できない → ❌

  • B:T1で40%、T2で65%。合計すると105%だが、

    実際には100%を超えないため、重複(共通部分)があるとわかる。

    → ✅ 正解:B


✅ 正解:B

「T1とT2の両方で少なくとも1つのステートメントが実行されている。」


💡補足:ステートメントカバレッジとは?

プログラム中の文(statement)が実行された割合を示します。

ただし、異なるテストケース間でのカバレッジを単純に加算してはいけません。

なぜなら、同じ文が複数のテストで実行されることがあるためです。


質問3:ブランチカバレッジの計算式

次の定義が与えられています:

Branch Coverage = (X / Y) × 100

ここで、XY はそれぞれ何を表すでしょうか?


選択肢

A. X=実行された決定結果の数、Y=決定結果の総数

B. X=実行された条件分岐の数、Y=条件分岐の総数

C. X=実行された分岐の数、Y=分岐の総数

D. X=実行された条件分岐の数、Y=決定結果の総数


分析と解説

  • A:決定結果(decision outcomes)は「条件カバレッジ」の概念に近い → ❌

  • B/D:「条件付き分岐(conditional branch)」に限定している → 不完全 → ❌

  • C:分岐(branch)全体に対して、実行された数を割合で示している

    ブランチカバレッジの定義そのもの


✅ 正解:C

X=実行された分岐の数、Y=分岐の総数


💡補足:ブランチカバレッジとは?

条件分岐(if, else, switchなど)における**すべての経路(True/False)**を少なくとも1回通ることを確認する指標。

テストの網羅率をより正確に測定できます。


まとめ

問題

テーマ

正解

ポイント

Q1

状態遷移テスト

C

add, add, add, remove, remove

Q2

ステートメントカバレッジ

B

両テストで共通実行文がある

Q3

ブランチカバレッジ

C

実行分岐数 / 総分岐数

🧭 学習のヒント

  • 状態遷移テストでは、全ての状態遷移を網羅できるテストケース設計を意識する。

  • ステートメント/ブランチカバレッジの違いを明確に理解しておく。

  • カバレッジ計算式や定義は暗記ではなく概念理解が重要。

コメント

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