【じょうたいせんいてすと】

状態遷移テスト とは?

最終更新:
💡 今の状態と起きた出来事から、次の動きを確かめる

システムの状態と、イベントによって状態がどう変わるかをモデルにしてテストする技法。許可された遷移と、許可されない操作への応答を確認する。状態の網羅と遷移の網羅は区別する。

📌 このページのポイント
注文の状態とイベントを確かめる例:支払い前の発送を許可しないルール未払い支払済発送済支払発送未払いで「発送」を要求したら?拒否され、未払いのままになるか確認丸は状態、矢印のラベルはイベント
簡略化した注文仕様の例。有効な遷移だけでなく、許可されない操作への応答もテストする。すべての状態を通ることと、すべての遷移を通ることは異なる。
ひよこ ひよこ
画面を切り替えるテストのこと?
ペンギン先生 ペンギン先生
画面遷移も一例だけれど、注文の未払い・支払済・発送済のような業務の状態も対象になるよ。状態とイベントの組み合わせによって、次の状態や実行する処理が変わるシステムで役立つんだ。
ひよこ ひよこ
どうやってテストを作るの?
ペンギン先生 ペンギン先生
まず、状態とイベント、許可する遷移を図や表で整理するよ。必要なら条件や処理も書く。次に、初期状態からイベントを順に起こすテストケースを作り、期待した状態や処理になったか確認するんだ。
ひよこ ひよこ
許可されない操作はどう調べるの?
ペンギン先生 ペンギン先生
図の注文例は、支払い前の発送を許可しないルールだよ。未払いで発送を要求し、拒否されて未払いのままになることを確かめる。実際の仕様に基づいて期待結果を決めるので、どの注文システムにも同じルールがあるとは限らないよ。
ひよこ ひよこ
全部の状態を通れば十分?
ペンギン先生 ペンギン先生
すべての状態を訪れても、すべての遷移を通ったとは限らないよ。有効な遷移をすべて実行する基準は、0-switch coverageとも呼ぶ。一つのテストケースで複数の遷移を通ることもあるんだ。
ひよこ ひよこ
状態が5個、イベントが3個ならテストは15件?
ペンギン先生 ペンギン先生
15は表の組み合わせ欄の数で、テストケース数ではないよ。条件による分岐やイベントの順序も考える必要がある。どの網羅基準を使うかを決め、有効な遷移に加えて無効な操作への応答も確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「状態遷移テスト」って出てきたら「状態とイベントから、次の動きが正しいか確かめるテスト」と思えばだいたいOK!
📖 おまけ:英語の意味
「State Transition Testing」 = 状態遷移テスト
💬 state は「状態」、transition は「遷移・移り変わり」で、状態が別の状態に変わることをテストするんだよ

参考資料

← 用語集にもどる