この記事は筆者の学習をまとめたものです。
ソフトウェアテストテストを学ぼう
- 開発者も積極的にテストをしよう
- テスト専門家とコミュニケーションできるようになろう
という考えでソフトウェアテスト技法について学んでいきます。
- 同値分割法と境界値分析
- デシジョンテーブル
- 状態遷移テスト(本記事)
- 組み合わせテスト
テスト技法:状態遷移テスト
状態遷移テストとは、ソフトウェアの状態に注目し、発生したイベントによって想定した状態に遷移することをテストします。
状態とイベントの組み合わせを状態遷移図や状態遷移表としてまとめ、テストケースを作成していきます。
状態遷移図
状態遷移図は、状態から状態への遷移を図として表現したもので、UMLではステートマシン図として標準化されています。
この図ではイベントであるスイッチのON/OFFにより、状態が運転中や停止中に遷移することが示されています。
状態遷移表
状態遷移表はイベントと状態の組み合わせを表形式にしたものです。ある状態でイベントが発生した時にどの状態に遷移するかがまとめられています。
状態/イベント | スイッチON | スイッチOFF |
---|---|---|
停止中 | 運転中 | - |
運転中 | - | 停止中 |
先程の状態遷移図を状態遷移表で表しました。例えば、状態が停止中の時にスイッチONイベントが発生すると運転中に遷移することが示されています。また、停止中にスイッチOFFイベントが発生しても、状態は遷移しません。
Nスイッチカバレッジ
状態遷移の経路を網羅するテストで、スイッチとは「事前状態と事後状態の間にある状態」を示すようです。
例えば0スイッチだと間にある状態が0なのでA→Bのように1回のイベントで遷移する経路をテストし、1スイッチだとA→B→Cのように状態を1つ経由する経路を網羅します。
例)ストップウォッチ
例えば上のようなストップウォッチの状態遷移図から0スイッチカバレッジの表を作成してみます。
0スイッチカバレッジ
事前状態/事後状態 | 待機中 | 計測中 | 停止中 |
---|---|---|---|
待機中 | - | スタート | - |
計測中 | - | - | スタート |
停止中 | - | スタート | リセット |
1つの状態遷移(間の状態が無い=0スイッチ)を網羅するので、左の事前状態からイベントが起きると上の事後状態になる、という形で表していきます。
1スイッチカバレッジ
次に1スイッチカバレッジの表を作成してみます。
事前状態/事後状態 | 待機中 | 計測中 | 停止中 |
---|---|---|---|
待機中 | - | - | スタート、スタート |
計測中 | スタート、リセット | スタート、スタート | - |
停止中 | - | リセット、スタート | スタート、スタート |
こちらは間に状態が1つある遷移を網羅するので、イベントが2回起こります。例えば待機中からスタート、スタートとイベントが起きると停止中になります。
1スイッチは0スイッチに比べてテストケースが増えてしまいますが、「停止中からリセット、スタートとすると新しくカウントが開始される」のようなケースをテストしたい場合に使えそうです。
まとめ
- 状態遷移テストとは、発生したイベントによる状態の遷移に注目したテスト
- 状態とイベントの関係は状態遷移図や状態遷移表で表すことができる
- スイッチカバレッジで状態遷移の経路を網羅したテストを行う
- 0スイッチではカバーできないケースもあるので、スイッチを増やしたテストも検討する
参考