状態遷移テストについて

状態遷移テストとは

状態遷移テストとは、仕様通りにイベントによってソフトウェアが挙動するかを確認するテストのことを言います。

状態遷移とは、ある状態から別の状態に変化することを指します。例えば、定常状態で水が100℃で蒸気になったり、0℃で氷になったりするようなことです。

そして、状態遷移テストでは、状態遷移図や状態遷移表(あわせて状態遷移モデルと呼びます)に基づきテストケースが作成されます。

状態遷移図とは

状態遷移の変化を図形や矢印で表現したものです。状態を四角、変化を矢印、その変化を起こすイベントを矢印のそばに書きます。

上で例に挙げた水の状態遷移を状態遷移図にすると下記のようになります。

状態遷移図

状態遷移表とは

状態遷移の変化をマトリクス表で表したものです。様々な種類がありますが、状態とイベントの2軸で構成されたものが多いです。

下の状態遷移表は水の状態遷移を表したものです。”ー” は遷移が起こらない状態とイベントの組み合わせを表します。N/Aと表されることもあります。

状態遷移表

状態遷移モデルのメリットとデメリット

上では簡単に水の状態遷移を考えましたが、ソフトウェアではどうでしょうか。様々な状態とイベントが想定されますし、水の状態遷移とは違い、より複雑になるでしょう。

そのような場合、直観的にソフトウェアの全体像や動作の流れを把握することができなくなります。そうなってしまうと、テストの抜け漏れが発生し、不具合を見逃してしまうことになりかねません。

このような時に状態遷移モデルが役に立ちます。特に、状態遷移図はテスト対象の状態遷移を見える化し、全体像を視覚的に判断するのに役立ちます。そして、状態遷移表は、遷移する場合だけではなく、遷移しない場合も把握することができ、想定しない不具合を検出することができます。また、開発側とテスト側のメンバー間で、ソフトウェア全体のイメージを共有しやすくなります。

一方で、状態遷移図や状態遷移表の作成には手間がかかります。ソフトウェアの挙動から起こる状態をすべて、それらを引き起こすトリガーとなるイベントをすべて書き出していかなければなりません。多くの場合、テストケースが膨大になりかねないので、状態遷移モデルはシンプルな作りにすることが求められます。同値分割法などを用いて、テストケースの数を絞りこむ必要があるかも知れません。

状態遷移図と状態遷移表の特徴

状態遷移図と状態遷移表はどちらもソフトウェアの仕様の全体像を把握することに役立ちますが、考慮している側面が違います。

状態遷移図は、ソフトウェアの全体像を俯瞰的にみることができ、各状態とイベントが矢印で結ばれているので、流れを把握することに役立ちます。しかし、状態ごとのイベントの処理についてはわかりづらくなっています。

状態遷移図

状態遷移表は、ソフトウェアやシステム全体を俯瞰することには向きませんが、各状態での動きを細かく把握することができます。例えば、下の状態遷移図の青で丸く囲われた部分は組み合わせとして無効の場合ですが、これらは状態遷移図では確認できない、組み合わせについて検証するきっかけになります。

このように、状態遷移図と状態遷移表を使うとソフトウェアやシステム全体の仕様を俯瞰しつつ、開発中のソフトウェアの不十分な点などを早期に発見することができるようになります。状態遷移図と状態遷移表を用いて、より効率的な開発、テストが可能になっていきます。

まとめ

状態遷移テストは、仕様通りにソフトウェアが挙動するか確認します。また、無効な状態遷移が行われないかも確認されます。

そして、状態遷移図はシステム全体を俯瞰するのに役立ち、状態遷移表は状態とイベントの細かな組み合わせまで考慮することができます。状態遷移テストを用いて、より効率的な開発やテストを行うことができるようになります。

お問い合わせはこちら