UMLモデルからテストケースを作ろう
3. ステートマシン図の抜け漏れを確認し、情報を洗練する
図2のステートマシン図は、イベントに対するタスク・オブジェクトの状態遷移を表しています。「付箋によるタスク管理」をソフトウエアとして実現した場合、完成したソフトウエアのタスク・オブジェクトは、図2で表した状態遷移の通りに動作しなければなりません。
もし、ステートマシン図で表した情報に過不足や誤りがあると、期待通りに動作しないソフトウエアができあがってしまいます。そのため、ステートマシン図で表した情報に抜け漏れがないことを確認し、情報を洗練する必要があります。その手段として、状態遷移表を用いる方法があります。状態遷移表とは、状態とイベントの相互関係を表した表です。図3が、図 2のステートマシン図をもとに作成した状態遷移表です。
図3:タスク・オブジェクトの状態遷移表(クリックで拡大) |
状態遷移表には大きく分けて2種類あります。1つは、縦軸、横軸にそれぞれすべての「状態」を記述した表です(図3上部の表)。
縦軸を現状態、横軸を次状態(現状態から1回遷移した状態)として、縦軸と横軸が交差するセルにイベントを記述します。この表を用いて、オブジェクトの状態遷移に抜け漏れがないことを確認できます。図3の上部の表では、現状態から次状態へ遷移するイベントがないことを「-」で表しています。
なお、先述の通り、終了状態(破棄する)に遷移できるのはDONE状態だけです。この表から、DONE状態以外の状態から終了状態へ遷移するイベントがないことを確認できます。
もう1つは、縦軸に全ての「状態」、横軸に全ての「イベント」を記述した表です(図3下部の表)。
縦軸と横軸が交差するセルには、縦軸の状態において横軸のイベントが起こった場合に、遷移する先の状態を記述します。この表で、縦軸の状態において横軸のイベントが「遷移を引き起こす」のか、「起こり得ない」のか、または「起こっても無視する」のか、を明確にできます。
このように、状態とイベントの対応関係を明確にすることで、ステートマシン図の情報を補足することができます。そして、実装したソフトウエアを対象に、例えば「起こっても無視する」としたイベントが該当の状態において確かに無視されることを、確認する必要があります。
図3の下部の表では、「起こり得ない」イベントを「×」、「起こっても無視する」イベントを「-」で表しています。
なお、「破棄する」イベントを受理するのは、先ほどと同じくDONE状態だけですので、それ以外の状態では「起こっても無視する(-)」としています。