状態遷移図及び状態遷移表を用いたテスト手法とは

設計書によって状態遷移について文章表現のみであることや必要な情報がちりばめられていることが多く、ソフトウェア全体の状態遷移を把握することが困難なため、テスト実施時に状態遷移のテストパターン見落としをしてしまう場合が多いようだ。しかし、状態遷移図、状態遷移表を用いることで設計書のみでは把握しにくいソフトウェアの動きを網羅的に確認できるだろう。

状態遷移テストとは

状態遷移テストとは,ソフトウェアの動作中に様々に変化する状態(一定の動作を続ける、または動作後に異なる動作を開始しないこと)に着目するテストのこと。状態遷移図と状態遷移表をもとに行うものであり、ソフトウェアテスト実施する際に、事前に状態遷移図や状態遷移表を作成して、ソフトウェアが設計仕様どおりに動くかどうかをテストする。

テスト実施時は正しく動作することを確認しなければならないため、網羅的にテストパターン作成する必要があるが、作成には多くの工数(コスト)がかかる。そのため、テスト工数を削減するために有効なテスト手法として状態遷移テストが挙げられる。状態遷移図及び状態遷移表で設計を行うことにより、テストパターン見落としを防ぐだけでなく、テスト項目の効率的な抽出、効率の向上、工数削減に貢献できるだろう。

1.状態遷移図とは

図1.画面遷移の状態遷移図

時間の経過や動作によって変化する状況を図式化したもののこと。状態と状態の変化を上記のように図示する。タスクの状態変化を図式化する場合にも用いられる。

(出典:コトバンク https://kotobank.jp/word/%E7%8A%B6%E6%85%8B%E9%81%B7%E7%A7%BB%E5%9B%B3-4539)

状態遷移図とは図に描かれた矢印を遷移の経路として、その通りに動くかどうか確認する。ソフトウェアが遷移する際にとりうる、いろいろな経路の通り方のパターンをこの状態遷移図から作成することでテストケースを導き出して、ソフトウェアの動作の全体像を掴めるだろう。

2.状態遷移図作成の流れ

状態遷移図を作成にあたって、「イベント」と「状態」が抽出を行う。「イベント」については上記の図1を例として、「入力ボタン押下」「一時保存ボタン押下」「実行ボタン押下」「実行取消ボタン押下」を設定する。「状態」については「入力中」「一時保存」「実行」を設定する。

「イベント」と「状態」の抽出が終わったら、続いては状態遷移図に起こす作業に入る。まず「状態」については四角で表記する。そして「状態」同士を「遷移」の意味を表す矢印でつなぎ、矢印の横に「遷移」のきっかけとなる「イベント」を記載する。

状態遷移表とは

上記の通り状態遷移図が完成したら、続いてそれを状態遷移表へと落とし込んでいく。状態遷移表への適用していくのかの流れについて以下に記載する。

1.状態遷移表とは

表1.状態遷移表

コンピューターに何らかの入力がある場合に、状態がどのように変化するかを、表で示したものである。取り得る入力と状態のすべての組み合わせを確認できる。

(出典:コトバンク https://kotobank.jp/word/%E7%8A%B6%E6%85%8B%E9%81%B7%E7%A7%BB%E8%A1%A8-4540)

状態遷移表とは、状態とイベント(状態が遷移する条件)を表にしたもの。状態遷移があるシステムの場合必ず複数の状態を持っており、イベント(状態が遷移する条件)と状態を漏れなく確認が必要だろう。そのため、状態遷移表を用いてシステムの状態とイベントの関係をマトリクスで網羅的に表現することで、テストケースの漏れや抜けなく抽出することができるため、設計品質の向上つながる。

2.状態遷移表作成の流れ

上記の表1を例として、縦方向に「状態」を、横方向に「イベント」を並べて表形式で表現する。「状態」と「イベント」の交差するセルには「イベント」実行後の遷移先の「状態」を記載する。また、遷移できないもしくは組み合わせとしてあり得ない場合についてはセル内に「-」と記載することにより、「状態」と「イベント」の交差するセルの組み合わせで1つの流れを表せるだろう。

作成した状態遷移表は、システムの「状態」と「イベント」をマトリクスで表現されているため、正常な動作だけでなく不正な遷移について漏れなく可視化できることから、マトリクスを基にホワイトボックスレベルのテストに適用することができるだろう。

まとめ

状態遷移図、状態遷移表をテストに用いる場合は、ソフトウェアの動きを網羅的に確認する必要がある複数の状態をもつシステムに対して行うテストが多く、統合テストやシステムテストで使われることが多いようだ。状態遷移図、状態遷移表で設計を行うことで、テスト項目の効率的な抽出、効率の向上を行うことができるが、仕様書からイベント、状態を抽出→遷移漏れをチェック→状態遷移図の作成→状態遷移表の作成→テストケースの作成と、かなり多くの工程が必要なため、テストの組み合わせ次第では許されている工数などを踏まえて、現実的な範囲に収まるように組み合わせのパターンを考える必要があるだろう。


テクバンの品質ソリューション事業部 特設サイトでは、「ソフトウェアテスト」や「テスト自動化」に関するサービスのご紹介をしております。

「プロダクトやサービスの品質がなかなか上がらない…」

「テスト自動化の導入/運用をしたいがどう進めたらよいか分からない…」

などのお悩みをお持ちの方は、以下のリンクからぜひお気軽にご相談ください。

また、「ソフトウェアテスト」や「テスト自動化」のお役立ち資料も掲載しておりますので、こちらも合わせてご利用ください!