状態遷移図

状態遷移図(State Transition Diagram)とは、システムやオブジェクトが取りうる状態と、状態間の遷移をグラフィカルに表現した図です。状態遷移テストのテストケース設計における基盤となります。

構成要素

要素記法説明
初期状態黒丸 → 状態システム起動時の開始点
状態(State)角丸の四角形(ノード)システムが特定の時点でとる安定した条件や状況
遷移(Transition)矢印(エッジ)ある状態から別の状態への変化
イベント(Event)矢印のラベル(上段)遷移を引き起こすきっかけ(例:ボタンクリック、タイムアウト)
ガード条件(Guard)矢印のラベル([条件]遷移が発生するために満たすべき条件
アクション(Action)矢印のラベル(/ 処理遷移時に実行される処理
終了状態二重丸システム終了・処理完了の終端

例:ログイン機能の状態遷移図

現在の状態イベント次の状態アクション
未ログインログイン成功ログイン済みセッション生成
未ログインログイン失敗エラー表示エラーメッセージ表示
エラー表示再試行未ログインエラーリセット
ログイン済みログアウト未ログインセッション削除
ログイン済みタイムアウト未ログインセッション削除

状態遷移表との関係

状態遷移図を表形式にしたものが状態遷移表です。
図は全体の流れを把握しやすく、表は網羅性の確認(テストケース漏れの検出)に優れています。両方を併用するのが効果的です。

カバレッジ基準

基準別名説明テストケース数の目安
全状態カバレッジ全ての状態を少なくとも1回通過する少ない
全遷移カバレッジ0スイッチカバレッジ全ての遷移(矢印)を少なくとも1回通過する中程度
全遷移ペアカバレッジ1スイッチカバレッジ連続する2つの遷移の全組み合わせを網羅する多い

JSTQB AL TAのシラバスでは、全遷移カバレッジ(0スイッチ) の達成が推奨されています。

0スイッチと1スイッチ

Nスイッチカバレッジとは、連続するN+1個の遷移の全組み合わせをカバーするという考え方です。

0スイッチカバレッジ(全遷移カバレッジ)

すべての個別の遷移を少なくとも1回実行します。

ログイン機能の例では、以下の5遷移を全てカバーするテストケースが必要です。

#遷移テストシナリオ例
T1未ログイン → ログイン済み正しい認証情報でログイン
T2未ログイン → エラー表示誤った認証情報でログイン
T3ログイン済み → 未ログインログアウトボタンを押す
T4ログイン済み → 未ログイン一定時間操作せずタイムアウト
T5エラー表示 → 未ログインエラー画面から再試行

最低3テストケースで全5遷移をカバーできます。

TC1: [開始] → T1(ログイン成功) → T3(ログアウト)
TC2: [開始] → T1(ログイン成功) → T4(タイムアウト)
TC3: [開始] → T2(ログイン失敗) → T5(再試行)

1スイッチカバレッジ(全遷移ペアカバレッジ)

連続する2つの遷移の組み合わせを全てカバーします。0スイッチより多くの欠陥(特定の遷移の後にのみ発生する不具合)を検出できます。

ログイン機能での遷移ペア一覧:

遷移ペアシナリオ
T1 → T3ログイン成功 → ログアウト
T1 → T4ログイン成功 → タイムアウト
T2 → T5ログイン失敗 → 再試行(→ 未ログインへ戻る)
T3 → T1ログアウト後 → 再ログイン成功
T3 → T2ログアウト後 → ログイン失敗
T4 → T1タイムアウト後 → 再ログイン成功
T4 → T2タイムアウト後 → ログイン失敗
T5 → T1再試行後 → ログイン成功
T5 → T2再試行後 → ログイン失敗

0スイッチと1スイッチの選択基準:リスクが低いシステムは0スイッチ、ログインや決済など状態依存のバグが起きやすい機能は1スイッチが推奨されます。

テスト設計への活用

  1. 状態遷移図(または遷移表)を作成する
  2. カバレッジ基準を決める(例:全遷移カバレッジ)
  3. 各遷移を1回以上通過するテストシナリオを設計する
  4. 無効な遷移(仕様上存在しない遷移)も否定テストとして追加する

ポイント:状態遷移テストは、ログイン・注文フロー・デバイスの動作モードなど、有限の状態を持つ系に対して特に効果的です。