状態遷移テストとは?じょうたいせんいてすと
状態遷移テストとは、対象を状態と遷移の集まりとして捉え、遷移を網羅するようにテストケースを設計する技法。正しい経路を通すだけでなく、その状態では起こり得ないイベントを与えて弾かれることも確かめる。DBでは状態列のCHECK制約が現在値しか見られないため、遷移が妥当かどうかは遷移表かトリガで守ることになる。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
受注や予約のように「次に何ができるか」が今の状態で決まる業務は、画面が経路を隠してしまう。ボタンが出ないから通れない、はテストの根拠にならない——APIやバッチは同じ制約を通らないからだ。だから状態と遷移の側から網羅する技法が要る。DBは複数の経路から同時に更新されるので、最後の砦としてここに制約を置く判断が出てくる。
具体例
申請を「作成中・申請済・差戻し・承認済・取消」の5状態とし、許される遷移だけを並べた遷移表テーブル(from_status と to_status が主キー)を作って外部キーで参照させる。承認済からの再申請のように画面には出ない経路も、この表に無ければDBの側で拒否される。
試験での引っ掛け
全状態を一度訪れただけで網羅したと誤解しやすいが、単位は状態ではなく遷移で、必要なケース数は状態数より多くなるのが普通。同時実行も落とし穴で、既定がREAD COMMITTEDのPostgreSQLやOracleでは2つのトランザクションが同じ行を申請済から承認済へ遷移させても両方が通る。SELECT ... FOR UPDATE で行を押さえるか、version列で弾く。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。