状態遷移図・表の書き方&考え方

はじめに

状態遷移図の話を書こうと思いながら前回のブログから1ヶ月経ってしまっているので徒然と書くことにする。

状態遷移図とは

本を読んだ内で一番分かりやすかったのはテスト会社がやっていた有償のセミナーでエッセンスを聞いたのが非常に分かりやすかったんだが色々問題が歩きがするので、今回もwikipedia先生に解説していただく。

状態遷移図 - Wikipedia

Wikipediaを読んで分かったが自分が知っている状態遷移図というのはUML図におけるステートマシン図(state machine diagram、状態機械図)というものがルーツにあってそれを簡略化しているということが分かった。
今回はふんわり分かれば良いので簡略した書き事を書く。

書き方のルール

正しいお作法についてはwiki参照(UML)
今回はふんわり分かれば良いので下記のルールで書いた。(差分は赤文字)

  • 塗りつぶされた円が START(開始)を意味する。必須ではない。
  • 中抜きの円は STOP(停止)を意味する。必須ではない。
  • で状態を表す。
  • 矢印が操作・振る舞いを表す。

実際に書いてみる

テーマ

腕時計のストップウォッチ機能

f:id:riririusei99:20180921005935p:plain
※便宜的に上のボタンをA、下のボタンをBとする。

振る舞い(仕様)

  • 初期状態は針が0を指している状態
  • 初期状態でAボタンを押すと針が動き出し、計測開始する
  • 計測開始状態でAボタンを押すと針が止まり、一時停止する
  • 一時停止状態でAボタンを押すと針が再度動き出し、計測開始する
  • 一時停止状態でBボタンを押すと針が0を指し、初期状態へリセットされる

状態遷移図

振る舞いに書かれた情報を元に、状態遷移図を書くと下記のような図になるはず。
この時計にはAボタンには3つの機能があることがわかる。(計測開始、一時停止、計測再開)

f:id:riririusei99:20180921014221p:plain

状態遷移表とは

状態遷移図をもとに今度は操作の一覧を表に落とし込むのが状態遷移表である。 もしかしてこれもwikiありそう…と思ったらやっぱりあった。

状態遷移表 - Wikipedia

すご~くざっくり書くと

書き方のルール

  • 縦軸に現在の状態
  • 横軸に操作
  • 交わる場所に操作後の状態を書く

実際に書いてみる

STEP1:図から表に落とし込む

書き方のルールに基づいて図を表に落とし込むと下記の様になる。

状態/操作 Aボタン Bボタン
初期状態 計測開始
計測開始 一時停止
一時停止 計測開始 初期状態

交わったセルが状態遷移テストにおける一つのテストケースになる。
表では空白が2つできているため、想定結果がわからない状態(もしくは仕様が決まっていない状態)なのできちんと仕様を確認することが重要。
ここらへんの考慮漏れとかを早い段階で指摘するのがテスト設計での腕の見せどころかもしれない。

STEP2:足りない部分を落とし込む

足りない部分を追記したバージョン

状態/操作 Aボタン Bボタン
初期状態 計測開始 初期状態※1
計測開始 一時停止 計測開始※2
一時停止 計測開始 初期状態

※1: ボタンは押せるが、状態遷移しない
※2: ボタンがロックされるため、状態遷移しない

この状態で初めてすべての表が埋まりテス実施できるようになった。
今回は物理的な時計の話なのでどの状態でも常に2つのボタンを押すことができたが、そもそも操作ができない場合などは「N/A(not available)」と書いたりする。

まとめ

状態遷移図・表の書き方を書いてみた。
実際の業務では操作が複数の状態を起因にして違ったり、操作の数が多いとかあるので図や表が複雑になりがち。
本当はNスイッチの話もしたかったんだけどまた次の機会かなぁ。

おわり