
【初心者向け】状態遷移図と状態遷移表について
本記事ではテスト技法の一つの「状態遷移図と状態遷移表」について解説していきます。
1. 状態遷移図とは
例えば、扇風機であれば待機(電源OFF)の状態から電源ONがあり風量変更する事ができます。
この電源のオン・オフや風量の切り替えが図中のイベントに当たり、切り替わったあとの扇風機がどうなったかを示すのが状態となります。
これを図式化し、一目でわかりやすくしたのが状態遷移図です。

10. 最後に
状態遷移図は、図式によってソフトウェアの仕様を「見える化」することで、ひと目で全体像を把握することができます。
また、仕様の全体を感覚的に掴める状態遷移図に対し、感覚では掴みきれない細部を漏れなく拾ってくれるのが状態遷移表です。
仕様で盛り込んでいないことや起こると想定されていないことまでチェックすることができます。
状態遷移図と状態遷移表を組み合わせることで、正しく動作しているか、間違った動作がないかをカバーすることができて、状態遷移の全体の流れの把握、開発仕様書の抜け漏れの防止を行うことができます。
2. 状態遷移表とは
状態遷移図と比較すると、状態とイベントの組み合わせを網羅的に検討できます。

3. 状態遷移図のメリット
状態遷移図はどの状態からどの状態へ遷移できるかを「視覚的に把握できる」点です。
これにより、次のようなメリットが得られます。
・イベントと状態遷移の対応関係の妥当性を検証できる
・どこからも遷移できない状態や、どこへも遷移できない状態を発見可能
・テストケース作成時の仕様解釈の誤りや考慮もれの発生リスクを低減
・新しい担当者がシステム概要を素早く把握するための資料に使える
4. 状態遷移図のデメリット
状態遷移図のデメリットは仕様書で規定していない想定外の操作や無意味な操作については、図の中に表現されないので把握できないことです。
また、作成や更新に時間がかかってしまうことも挙げられます。
5. 状態遷移表のメリット
状態遷移表はシステムの状態遷移ルールを抜けもれなく把握できる点です。
これにより、次のようなメリットが得られます。
・状態遷移パターンの書き忘れに気づきやすく、網羅性に優れる
・正常系のパターンだけでなく、遷移できない異常系のパターンまで把握可能
・マトリクスはテストケース作成時の基礎資料としても利用できる
6. 状態遷移表のデメリット
状態遷移表のデメリットは二次元の表で書かれているため見た目がそっけなく、状態遷移の全体像をイメージでとらえることができません。
また、 複数回のイベント発生によって、どの状態にたどりつくかを分析することは困難です。
7. 状態遷移図と状態遷移表の関係
状態遷移図と状態遷移表はお互いの欠点を補いあう関係にあります。
このため、両者を併用するとシステムの状態遷移をより正確に把握することができます。
8. 状態遷移図の作成の仕方
扇風機の仕様書には以下の記載があったとします。
・電源ボタンと切替ボタンが付いている
・「待機」「送風(弱)」「送風(強)」の3つの状態がある
・「待機」状態で電源ボタンを押すと「送風(弱)」状態になる
・「送風(弱)」状態で切替ボタンを押すと「送風(強)」状態になる
・「送風(強)」状態で切替ボタンを押すと「送風(弱)」状態になる
・「送風(弱)」状態で電源ボタンを押すと「待機」状態になる
・「送風(強)」状態で電源ボタンを押すと「待機」状態になる
1.状態を書き出す
まずは状態を表す図形を配置します。状態は「待機」「送風(弱)」「送風(強)」の3つなので長方形を3つ配置します。

2.遷移を矢印でつなぐ
続いて、状態と変化した状態を矢印で結びます。矢印の部分が遷移と呼ばれる個所であり、変化の流れを可視化するために必要です。

3.イベントを矢印のそばに記入する
最後に矢印の近くにイベントを記載します。イベントとは、何が起きて状態遷移が発生するのか、そのきっかけとなる情報のことです。

状態遷移図の作成は完了です。
続いて状態遷移表を作成していきます。
9. 状態遷移表の作成の仕方
1.空の状態遷移表を作成する
まずは空の状態遷移表を作成します。状態遷移表には(状態の数+1)行、(イベントの数+1)列の表が必要です。
今回は状態が3つ、イベントは2つなので、4行3列の表を使います。

2.状態名の見出しを記入する
先程作成した状態遷移表の1列目に状態名を記入します。
3.イベント名の見出しを記入する
続いて状態遷移表の1行目にイベント名を記入します。
4.遷移先の状態名を記入する
最後に状態名とイベントが交わるところに遷移先の状態名を書き込み、完成です。埋まらなかった箇所は、システム的に状態遷移が許されない組み合わせです。
このような箇所には「-」を記入します。
