ソフトウェアでは同様の操作を実行しても、そのときの状態によって処理結果に違いが生じることがあります。ソフトウェアテストでは、これら状態ごとの処理結果が想定通りかチェックしなければなりません。

状態遷移テストとは、ソフトウェアの「状態」とそれを遷移させる「イベント」に着目したテストです。この記事では状態遷移テストの概要や、テストで使われる「状態遷移図」「状態遷移表」について具体例をまじえて解説します。

状態遷移テストとは

状態遷移テストとは、イベントによってソフトウェアが想定した状態に正しく遷移するか確かめるためのテストです。ソフトウェアを操作する際、イベントによって状態がかわる上に、状態によってイベントの結果がかわります。状態遷移テストでは、これらのイベント・状態の全組み合わせを「状態遷移図」「状態遷移表」にまとめて、テストケースを作成するのです。

状態遷移とはどういったものか、以下アクションゲームの例をもとに考えてみましょう。

【条件】
・主人公がバリアーを張る
・モンスターから攻撃を受けるとバリアーが破壊される
・バリアーがない状態でモンスターから攻撃を受けると主人公は瀕死状態になる
・瀕死状態ではバリアーが使えない
・薬草を使うとキャラクターが回復する

上記例では主人公がバリアーを張ったり攻撃を受けたりすることで、主人公の状態が変化します。状態遷移テストでは、このようなイベントによって、状態が想定した通りに遷移するかをテストするわけです。

なお状態遷移テストを行う際は、これらイベントや状態の変化を「状態遷移図」「状態遷移表」にまとめます。次の項では、上記例をもとに「状態遷移図」「状態遷移表」とはどんなものかみていきましょう。

状態遷移図と状態遷移表

ソフトウェアの状態とイベントの組み合わせをまとめたものが、状態遷移図や状態遷移表です。状態遷移図や状態遷移表をまとめることで、テストの漏れを予防できます。

以下、それぞれの詳細についてみていきましょう。

状態遷移図とは

状態遷移図とは、イベントによって変化するソフトウェアの状態を図形や矢印でまとめた図です。状態遷移図をみることによって、ソフトウェアがイベントによってどのように変化するか全体的な流れを、ビジュアル的に把握できます。

上記アクションゲームの条件をもとに状態遷移図を作ると、以下のようになります。

状態遷移図の例

状態遷移表とは

以下は、紹介したアクションゲームの例をもとに作成した「状態遷移表」です。状態遷移表とは、状態やイベントの組み合わせを表形式でまとめたものを指します。

状態遷移表の例

ビジュアル的には状態遷移図の方が分かりやすいですが、状態遷移表では「遷移できない組み合わせ(上記表では「N/A」)」も表現可能です。ソフトウェアテストでは、このように本来遷移できないはずの組み合わせに関してもテストが必要となります。万が一、想定に反して遷移が発生したら修正が必要となるからです。

ソフトウェアの仕様書には「どのように遷移するか」はまとめられているものの、遷移できない条件は書かれていないことも少なくありません。状態遷移図とあわせて状態遷移表を作成することによって、遷移できない条件も洗い出せるわけです。

状態遷移図と状態遷移表まとめ

状態遷移図と状態遷移表は、以下の比較表でまとめた通り、それぞれメリットが異なります。両方を作成することでそれぞれのメリットが活かされ、ソフトウェアテストの品質を高められるのです。

 状態遷移図状態遷移表
概要イベントと状態の組み合わせを図形や矢印で表現したものイベントと状態の組み合わせを表形式でまとめたもの
メリット各イベントによって状態がどのように変化するか、全体的な流れをビジュアル的に把握できる状態とイベントの組み合わせを抜けなく網羅できる

状態遷移テストのテストレベル

状態遷移テストは、どのテストレベルでも行われます。単一のモジュールごとに行われる単体テストから最後のシステムテストまで、ソフトウェアの状態をテストする際に適用可能です。

※テストレベルとは
開発の各段階に応じ、実施されるソフトウェアテストの段階がかわります。この段階がテストレベルです。

状態遷移テストのカバレッジ

ソフトウェアテストでは、考えられる限りの全パターンでテストが行われるわけではありません。予算や納期、求められるクオリティを総合的に考慮し、テストを実行する範囲が決められるのです。ソフトウェアテストにおけるカバレッジとは、このようなテストを実行する(実行した)範囲・割合を指します。

状態遷移テストにおいてカバレッジは、以下2種類の基準が一般的です。

・0スイッチカバレッジ
テストケースで全イベントを網羅することです。これによって、状態遷移テストにまとめた全イベント・状態に対してテストが行われます。

・1スイッチカバレッジ
0スイッチカバレッジの上位にあたる基準です。前の状態から今の状態を経て次の状態まで遷移するには、2回イベントが必要となります。1スイッチカバレッジでは、2回のイベントで遷移する3つの状態を全て網羅するようテストケースを作成するのです。

まとめ

状態遷移テストとは、ソフトウェアの状態が想定した通りイベントによって変化(遷移)するか確かめるためのテストです。状態遷移テストでは、ソフトウェアのイベントと状態遷移の関係をまとめた状態遷移図や状態遷移表を使います。

状態遷移図は、イベントによってソフトウェアの状態がどのように変化するかビジュアル的に把握するのに有効です。一方、状態遷移表を使えば「本来ありえない遷移」も含め状態とイベントの組み合わせを抜け目なく網羅できます。