【ISTQB /JSTQB FL 4.0解説】State Transition Testing(状態遷移テスト)のわかりやすい解説|CTFL試験対策

JSTQB Fundation Level 4.0

はじめに

こんにちは。今回は ISTQB Foundation Level 4.0(CTFL) の第4章「テスト分析と設計」から、ブラックボックステスト技法の最後の1つ「状態遷移テスト(State Transition Testing)」 をわかりやすく解説します。

このテクニックは、「システムや機能が“状態”によって振る舞いを変える」ような要件に対して非常に有効です。

たとえば、「カードを挿入 → PINコード入力 → メニュー表示」といった、順番(状態) に依存する処理などがその代表例です。


状態遷移テストとは?

● 定義

State Transition Testing(状態遷移テスト) とは、

システムが持つ 状態(state) と、それらをつなぐ 遷移(transition) を表す図を用いて、

有効な遷移(valid transition)無効な遷移(invalid transition) を明確にし、テストケースを導き出す技法です。

このとき用いるのが、状態遷移図(State Transition Diagram: STD) です。

● 特徴

  • システムを「状態」と「遷移」の組み合わせで表現する

  • 有効な遷移のみを図に示す(無効な遷移は省略)

  • 無効遷移も考慮すると、テストカバレッジを高められる

  • ブラックボックステストの代表的技法の1つ


例①:ATMのカード認証

もっともイメージしやすい例が「ATMでのカード認証」です。

1️⃣ カード挿入 → 「PIN入力待ち」状態へ

2️⃣ 正しいPINを入力 → 「メインメニュー」へ進む

3️⃣ PIN入力ミス(1回目・2回目) → 再入力ループへ

4️⃣ PINを3回連続で間違える → 「カードロック」状態へ移行(以後、利用不可)

この流れを図で表すと、

  • 「PIN入力待ち」→「メニュー」

  • 「PIN入力待ち」→「再入力」

  • 「再入力」→「カードロック」

    などの 有効な状態遷移 が見えてきます。

もし「カードロック状態」から「メニュー」に戻れるような遷移が描かれていたら、それは明らかに無効な遷移です。

このように、図から 正しい状態遷移と誤った遷移 を洗い出すことで、抜け漏れのないテストケースを設計できます。

例②:水の状態変化(シンプルな物理例)

もうひとつの例として、水の三態(固体・液体・気体) を考えてみましょう。

現在の状態

条件(アクション)

次の状態

有効/無効

氷(Ice)

加熱(Heat)

水(Water)

✅ 有効

水(Water)

冷却(Freeze)

氷(Ice)

✅ 有効

水(Water)

加熱(Boil)

蒸気(Vapor)

✅ 有効

蒸気(Vapor)

冷却(Condense)

水(Water)

✅ 有効

氷(Ice)

直接蒸発(Sublimation)

蒸気(Vapor)

❌ 無効

蒸気(Vapor)

凝結せずに氷へ(Deposition)

氷(Ice)

❌ 無効

このように、通常条件では発生しない遷移(氷→蒸気など) は「無効」と判断できます。

これにより、4つの有効遷移 + 2つの無効遷移 が存在することがわかります。


状態遷移図の基本構造

状態遷移図(State Transition Diagram)は、

丸で状態(State)を表し、矢印で遷移(Transition)を表す 図です。

例(簡略化):

この図では以下のように読み取ります:

  • S1→S2→S3→S2→S1 が有効なループ

  • もし S1→S3 の矢印がなければ、その遷移は 無効

このように「どの状態からどの状態へ遷移できるか」を確認し、全遷移ペアの網羅性をチェックします。


ISTQB試験での出題ポイント

ISTQB Foundationレベルでは、

「図を読み取って、有効または無効な遷移を選択する問題」が出題されます。

例題①:

スイッチの状態遷移図が与えられています。次のうち無効な遷移はどれですか?

状態遷移図(簡略):

  • OFF → ON

  • ON → OFF

  • ON → FAULT

  • FAULT → FAULT(ループ)

選択肢:

A. OFF → ON

B. ON → OFF

C. FAULT → ON

D. ON → FAULT

正解:C(FAULT → ON)

→ 図にその遷移が存在しないため「無効」と判断します。


例題②:

次の状態遷移表に基づき、S1→S0→S1→S2→S0 の遷移をカバーするテストケースを選びなさい。

選択肢の中から、与えられた遷移の並び(S1→S0→S1→S2→S0)を満たすものを選びます。

Foundationレベルでは、図や表の読み取り力 が求められるのが特徴です。


状態遷移テストのメリット

メリット

説明

✅ シナリオベースでの網羅的テストが可能

実際のユーザー操作の流れを再現できる

✅ 状態依存バグの早期発見

特定条件下でしか発生しない不具合を防止

✅ 有効・無効遷移の明確化

不正操作や例外系の検証に有効

✅ 設計段階での仕様漏れを防ぐ

状態遷移図を使うことで仕様の曖昧さを発見できる

状態遷移テストが有効なシステム例

  • ATMやログインシステム(PIN認証、アカウントロック)

  • 交通信号制御システム(赤→青→黄)

  • IoT機器のモード切替(待機→動作→スリープ)

  • チケット販売や予約システム(状態:空席・予約中・完売)

これらのように「状態が変わる」システムでは、

状態遷移図を使うことで テスト抜けを減らす ことができます。


まとめ

  • 状態遷移テスト(State Transition Testing) は、状態変化を伴うシステムでの不具合防止に有効。

  • 状態遷移図(STD) を用いて、有効遷移と無効遷移を整理し、テストケースを導出する。

  • ISTQB試験 では、図や表を読み取って「どの遷移が有効/無効か」を判断する問題が多い。

このテクニックは、単に試験対策だけでなく、実務でのテスト設計スキルを大きく向上させる力になります。


💡ワンポイント

「状態遷移テスト」は、“ユーザーの操作順序やシステムの応答パターン”を可視化するテスト。

仕様の曖昧さや例外処理の漏れを早期に発見する強力なツールです。

コメント

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