Skip to content

問題21

以下のアクティビティ図を考えます。

アクティビティ図の画像

このアクティビティ図が定義するすべてのシナリオを実行するために必要な最小テストケース数はいくつか?

  • a) 2
  • b) 3
  • c) 6
  • d) 4

この図には以下の要素が含まれています。

要素説明
開始ノードフロー開始
Receive order注文を受け付ける
フォーク(Fork) 太線バー2つのフローを並行して開始する(両方が同時に実行される)
左フローFill order → 決定ノード → 配送手配
右フローSend invoice → Receive payment
決定ノード[priority] または [regular] のいずれかに分岐
ジョイン(Join) 太線バー両フローが完了するまで待機してから次へ進む
終了ノードフロー終了

フォーク(Fork) は、1つのフローを複数の並行フローに分割します。分割されたすべてのフローは同時に実行されます。

ジョイン(Join) は、すべての並行フローが完了するまで待機し、その後に続きを実行します。

このアクティビティ図でのシナリオ数は、各フローにおける独立した経路の数の積で求められます。

フロー経路経路数
左フローFill order → [priority] → Arrange priority delivery2
Fill order → [regular] → Arrange regular delivery
右フローSend invoice → Receive payment1
シナリオ数 = 左フローの経路数 × 右フローの経路数
= 2 × 1 = 2

シナリオ1:優先配送(priority)

Receive order
├─ Fill order → [priority] → Arrange priority delivery
└─ Send invoice → Receive payment
→ (両フロー完了)→ 終了

シナリオ2:通常配送(regular)

Receive order
├─ Fill order → [regular] → Arrange regular delivery
└─ Send invoice → Receive payment
→ (両フロー完了)→ 終了

右フロー(Send invoice → Receive payment)は両シナリオで同じ経路を通るため、左フローの分岐が唯一のバリエーションです。

選択肢件数検討
a)2シナリオ数(2)と一致 ✓
b)3右フローに分岐がないため3通りにはならない ✗
c)6過剰。決定ノードの分岐は2つのみ ✗
d)4過剰。並行フローの組み合わせは 2×1=2 ✗

a) 2


並行フロー(フォーク)はシナリオを増やさない

Section titled “並行フロー(フォーク)はシナリオを増やさない”

フォークで分割された並行フローは両方が必ず実行されます。どちらかを「実行しない」という選択肢はありません。シナリオ数に影響するのは決定ノード(分岐)の数と選択肢のみです。

並行フローが2つある場合のシナリオ数の計算:

シナリオ数 = フロー1の経路数 × フロー2の経路数 × ...

決定ノードの分岐がシナリオを決める

Section titled “決定ノードの分岐がシナリオを決める”

この図では決定ノードが1つあり、2つの経路([priority]・[regular])を持ちます。すべてのシナリオをカバーするには、各経路を少なくとも1回実行するテストケースが必要です。

決定ノードの数各ノードの分岐数シナリオ数(上限)
1個2分岐2
2個(独立)各2分岐4
2個(直列)各2分岐4

ジョインが存在する場合、テストでは両フローが正しく同期して終了するかも確認します。どちらかのフローが完了しない場合にジョインでブロックされるケースは、別途障害テストとして設計する対象になります。