はじめに
こんにちは。今回は 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試験 では、図や表を読み取って「どの遷移が有効/無効か」を判断する問題が多い。
このテクニックは、単に試験対策だけでなく、実務でのテスト設計スキルを大きく向上させる力になります。
💡ワンポイント
「状態遷移テスト」は、“ユーザーの操作順序やシステムの応答パターン”を可視化するテスト。
仕様の曖昧さや例外処理の漏れを早期に発見する強力なツールです。



コメント