WRブログ

システムの状態遷移テスト

システムの状態遷移テスト

ソフトウェアテストにおいて、入力するテストデータが同じだからといって、テスト対象のシステムが常に同じ結果を返すとは限りません。
そのような、システムの状態によって出力がことなるもののテストはどのようにおこなうのでしょうか?
ここでは、状態遷移テストについて解説します。

■状態遷移テストとは
通常、同じテストデータを流した場合、システムは同じ動作をします。
しかし、システムによっては、その状態によって全く違う動作をするものがあります。
このようなシステムをテストすることを「状態遷移テスト」といいます。
このとき状態遷移図や、状態遷移表を用いてテストをおこないます。

■「状態遷移図」と「状態遷移表」
・状態遷移図:
状態遷移があるシステムの場合、必ず複数の状態を持っています。
その状態がどのように遷移するのかを表現したものが「状態遷移図」です。
このとき、イベント(状態が遷移する条件)も記載しておくと分かりやすいです。
一般的に、システムの状態を丸や四角でかこい、イベントを矢印で記載します。

・状態遷移表:
状態とイベントを表にしたものが「状態遷移表」です。
状態遷移表は、システムの状態とイベントをマトリクスで表現できるため、テストケースを抜け漏れなく抽出することができます。

■要求分析モデリングのプロセス
ここからは実際に、仕様書から状態遷移表を作るまでのプロセスを、アラームの例を使って解説していきます。

まず、仕様書からイベントを抽出します。
次に、考えられる状態を抽出します。ここで一度、遷移漏れをチェックしておきましょう。

image_02101

イベントと状態が抽出できたら、それを状態遷移図へと落とし込んでいきます。


image_02102

状態遷移図ができたら、次はそれを状態遷移表に変換していきます。


image_02103

これで完成です。


■状態遷移テストのカバレッジ
状態遷移テストには複数のカバレッジが存在します。
ここでは、「0スイッチカバレッジ」、「1スイッチカバレッジ」についてご紹介します。

0スイッチカバレッジ:
上記のモデリングをおこなった後、全てのイベントを網羅するようにテストケースを作成する。
すると、結果的に状態遷移図で記載した全ての状態とイベントがテストできます。

1スイッチカバレッジ:
前述した0スイッチカバレッジの上位カバレッジ基準になります。3つの状態を、2回のイベントで遷移する経路をすべて網羅します。
0スイッチカバレッジと違い、組み合わせを考慮する必要があります。

■状態遷移テストのデメリット
状態遷移テストの問題点に、テストケースを作るまでの手間があげられます。
要求分析モデリングのプロセスでも解説しましたが、
仕様書からイベントを抽出→状態を抽出→遷移漏れをチェック→状態遷移図へ変換→状態遷移表へ変換→テストケースの作成と、
かなり多くの工程が必要なため、それだけ多くの手間がかかってしまいます。

まとめ

●状態遷移テストとは、複数の状態をもつシステムに対しておこなうテスト
●システムが持つ状態とイベントを図にした「状態遷移図」と、それを表にまとめた「状態遷移表」
●状態遷移テストは工程が多く、手間がかかる

ここまでで、状態遷移テストについて詳しく解説してきました。
状態遷移テストは通常、統合テストやシステムテストでよく使われています。


【参考文献】:
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』

【参考URL】:
http://gihyo.jp/dev/serial/01/test_up/0004,(参照 2016年7月30日)
http://www.weblio.jp/content/%E7%8A%B6%E6%85%8B%E9%81%B7%E7%A7%BB%E3%83%86%E3%82%B9%E3%83%88,(参照 2016年7月30日)
http://codezine.jp/article/detail/8359,(参照 2016年7月30日)
http://gihyo.jp/dev/serial/01/test_up/0004,(参照 2016年7月30日)
http://monoist.atmarkit.co.jp/mn/articles/1212/20/news002.html,(参照 2016年7月30日)
http://monoist.atmarkit.co.jp/mn/articles/1204/06/news001_3.html,(参照 2016年7月30日)
http://monoist.atmarkit.co.jp/mn/articles/1207/11/news001.html,(参照 2016年7月30日)