mmjテスターいろいろ~状態遷移図編~

アバター画像
QAエンジニア 本郷
2019年10月24日

こんにちは。QAチームの本郷です。
今回はテスター目線での状態遷移図についてお話します。

状態遷移とは「あるイベントによって、システムがどういう状態からどういう状態に変化するか」のことで、これをテストするのが状態遷移テスト。そして状態遷移テストを行う際、漏れないテストケースを作成するために用いるのが状態遷移図(と、状態遷移表)です。

状態遷移図・状態遷移表って?

百聞は一見に如かず。実際に状態遷移図・状態遷移表を作ってみましょう。
今回は我が家の “うたこ” の食欲状態をモデルにしてみます。

~うたこのプロフィール~
犬種:ロングコートチワワ
性別:メス
年齢:推定15,6歳
趣味:パトロール

最近お手入れをさぼっていて小汚さ増し増しです。

ステップ1 仕様書から「状態」と「イベント」を取り出す
下記はうたこの食欲管理システムの仕様サンプルです。

・初期状態ではおなかがほどよく満たされている
・パトロールをすると空腹になる
・空腹状態でごはんを食べると、満腹になる
・食欲不振のとき、薬を飲むと回復して空腹になる
・満腹状態で寝ると、初期状態に戻る
(以下省略)

状態とイベントを取り出すとこんな感じ↓
[状態] 初期状態、満腹、空腹、食欲不振
[イベント] パトロールする、ごはんを食べる、薬を飲む、寝る

ステップ2 状態遷移図を書く
次に、上記のイベントと状態を状態遷移図で表してみます。省略部分の仕様も少し追加しました。

こうすると全体のイメージが直感的に把握しやすくなりました!遷移漏れやフローの不整合などがないか確認することができます。

ステップ3 状態遷移表にしよう
状態遷移図で全体の流れを確認したら、「イベント」「遷移前の状態」「遷移後の状態」の組み合わせを整理するために状態遷移表に落とし込みます。

あり得ない組み合わせは今回「N/A」で表しています。ここでは、組み合わせがOKかどうかだけでなく、あり得ない組み合わせが本当にあり得ないのかどうか確認することも大切です。

例えば「うたこは、空腹状態のときしかごはんを食べないの(?_?)」
⇒残念ながら、実際は満腹状態でも食べます。仕様漏れが発覚しました。

このように図があることによって、文章だけでは理解し辛かった仕様が分かりやすくなり、考慮漏れにも気付くことができるのです。これぐらいの情報が揃うと状態遷移テストのテストケースが作れる段階になります。

仕様を理解しやすくするために図や表を活用しよう

状態遷移図は上流工程で書かれることがほとんどですが、仕様レビューの際にQAが必要に応じて何かしらの図や表を用意することもあります。私は誰かと共有する必要がない場合はちゃちゃっと手書きしたりします。
仕様書とのにらめっこに疲れたらぜひ図や表を書いてみてください。

この記事を書いた人

アバター画像

QAエンジニア 本郷

京都在住でフルリモート勤務のQAエンジニア。元Web系エンジニアでJava使い。子育てのために、より自由度の高い働き方を目指してQAエンジニアへ転職。

投稿者の記事一覧を見る

2019年10月24日

記事のカテゴリ:

« »
Webエンジニア・プログラマー募集中
このページのトップへ