問題13:状態遷移テスト(2)READY状態のラウンドトリップ
問題 #13
Section titled “問題 #13”モバイルデバイスは、IDLE、STAND-BY、およびREADYの3つの状態のいずれかで動作します。その振る舞いは以下の遷移ルールによって示されます。

- IDLE → GPRS Attach → READY
- READY → GPRS Detach → IDLE
- READY → READY Timer Expired → STAND-BY
- STAND-BY → Paging Request → READY
- STAND-BY → STANDBY Timer Expired → IDLE
READY状態のみを考慮した場合、この状態に対する**ラウンドトリップカバレッジ(round-trip coverage)**を達成するために必要なテストケース数はいくつか?
- a) 3
- b) 4
- c) 6
- d) 7
a) 3
「ラウンドトリップカバレッジ」とは、特定の状態を起点とし、再びその状態に戻るまでの「単純なパス(同じ状態を2回通らないループ)」をすべて実行することを求める基準です。
READY状態を起点・終点とするパスを洗い出すと、以下の3つのルートが存在します。
- READY → IDLE → READY
- READY → (GPRS Detach) → IDLE → (GPRS Attach) → READY
- READY → STAND-BY → READY
- READY → (READY Timer Expired) → STAND-BY → (Paging Request) → READY
- READY → STAND-BY → IDLE → READY
- READY → (READY Timer Expired) → STAND-BY → (STANDBY Timer Expired) → IDLE → (GPRS Attach) → READY
これら3つの異なる「帰り道」をすべて網羅する必要があるため、最小テストケース数は「3」となります。
ラウンドトリップカバレッジは、システムが特定のイベントやエラーを経て、正しく元の安定した状態に戻れるかを検証するのに非常に有効な技法です。
- 実務での活用: 通信機器やモバイルアプリのように、接続断(Detach)やスリープ(STAND-BY)といった状態を頻繁に往復するシステムにおいて、メモリリークやフラグのリセット漏れを検出するのに役立ちます。
- パスの数え方: 特定の状態から出て、他の状態を「中継」して戻ってくる道筋を漏れなくリストアップします。ただし、同じパスを何度も通るような複雑なルート(非単純パス)はカバレッジの対象外として除外して考えます。