条件分岐機能を使って実行結果に応じたテスト手順を作成する
はじめに
本チュートリアルでは、基本的な「もし」構文から、「もし~そうでないとき」を使った分岐、実行結果の確認方法を説明します。
条件分岐を使うと、テスト実行中に「ボタンが表示されているか」「エラーが出ているか」「検索結果があるか」などの結果に応じて、次に実行する操作を切り替えることができます。
たとえば、「検索結果が表示された場合は詳細画面を確認し、表示されなかった場合は別の操作を行う」といった、状況に応じたテストケースを作成できます。
本チュートリアルでは、「テスト自動化の学習用の練習サイト」を例にして説明します。
参考サイト:https://hotel-example-site.takeyaqa.dev/ja/index.html
ゴール
- テストケースに条件分岐ブロックを挿入できること
- 「もし」を使ったテスト手順を作成できること
- 「もし~そうでないとき」を使った、条件成立時と不成立時の処理を作成できること
- 条件分岐の中に条件分岐を入れた構造を理解できること
- 編集画面で、条件分岐ブロックの範囲を確認できること
- 実行結果画面で、条件成立・条件不成立・実行・スキップの状態を確認できること
前提
- 条件として使う動作が決まっていること
- テストケースを作成できること
- テスト実行後に実行結果画面を確認できること
もくじ
詳細
条件分岐とは
条件分岐では、条件の判定結果に応じて、実行するテスト手順を切り替えられます。
新T-DASH では、以下の2つのパターンを作成できます。
- 「もし」を使って、条件が成立した場合のみ操作を実行するパターン
- 「もし~そうでないとき」を使って、条件成立時と不成立時で操作を分けるパターン
また、条件分岐の中に別の条件分岐を入れることで、複数の条件を組み合わせたテストケースも作成できます。
条件分岐では、「もし」の条件が成立しなかった場合、条件分岐ブロック内のテスト手順はスキップされます。
基本構文
「もし」
「もし」は、条件が成立した場合にのみ、「もし動作が成功したとき」~「条件分岐終了」内で指定したテスト手順を実行できる条件分岐です。
条件が成立しなかった場合、「もし動作が成功したとき」~「条件分岐終了」内のテスト手順はスキップされます。
「もし~そうでないとき」
「もし〜そうでないとき」は、条件が成立した場合のテスト手順に加えて、条件が成立しなかった場合のテスト手順を指定することができます。
条件が成立した場合、「もし動作が成功したとき」~「そうでないとき」内で指定したテスト手順を実行し、条件が成立しなかった場合、「そうでないとき」~「条件分岐終了」内で指定したテスト手順を実行できる条件分岐です。
作成方法
「もし」を使ったテスト手順の作成
例として、宿泊プラン一覧画面でプラン「本日限り」が表示されている場合、そのプランの予約画面へ進むというテストケースを作成します。

1. 「制御命令」から「もし」を選択します。

2. 「もし」の条件として使用する検証動作を選択します。

3. テキストボックスに動作名を入力すると、部分検索できます。
動作「要素のテキストが一致することを検証する」を選択します。

4. 「画面名/要素名/設定値」を入力し、「追加」をクリックします。

5. 「もし」と「条件分岐終了」がテスト手順に追加されました。
追加された「もし」から「条件分岐終了」までの範囲を条件分岐ブロックと呼びます。
条件分岐ブロックはハイライト表示されます。

6. 条件を設定したら、「もし」と「条件分岐終了」の間に、条件成立時に実行するテスト手順を追加します。
右クリックし、行を追加します。

7. 動作を設定し、「追加」をクリックします。

8. 条件成立時に実行されるテスト手順が追加されました。
この構造では、宿泊プラン一覧に「本日限り」が表示されている場合に、「このプランで予約」ボタンをクリックするテスト手順が実行されます。
「本日限り」が表示されていない場合は、このテスト手順はスキップされます。

9. 「プレビュー」では、「もし」の条件分岐を設定したテスト手順の先頭に「IF」が表示されます。
条件成立時に実行されるテスト手順は、インデント(条件分岐ブロック内のテスト手順を字下げ表示)されます。

「もし~そうでないとき」を使ったテスト手順の作成
宿泊プラン一覧画面でプラン「本日限り」が表示されている場合、そのプランの予約画面へ進みます。
「本日限り」が表示されていない場合、「出張ビジネスプラン」の予約画面へ進むテストケースを作成します。

1. 「制御命令」から「もし~そうでないとき」を選択します。

2. 「もし」の条件として使用する検証動作を選択します。

3. テキストボックスに動作名を入れると部分検索できます。
動作「要素のテキストが一致することを検証する」を選択します。

4. 「画面名/要素名/設定値」を入力し、「追加」をクリックします。

5. 「もし」と「そうでないとき」と「条件分岐終了」がテスト手順に追加されました。
追加された「もし」から「条件分岐終了」までの範囲を条件分岐ブロックと呼びます。
条件分岐ブロックはハイライト表示されます。

6. 条件を設定したら、「もし」と「そうでないとき」の間に、条件”成立”時に実行するテスト手順を追加します。
右クリックし、行を追加します。

7. 「動作/画面名/要素名/設定値」を設定し、「追加」をクリックします。

8. 条件”成立”時に実行されるテスト手順が追加されました。
この構造では、宿泊プラン一覧に「本日限り」が表示されている場合に、本日限りの「このプランで予約」ボタンをクリックするテスト手順が実行されます。
「本日限り」が表示されていない場合、このテスト手順はスキップされ「そうでないとき」のテスト手順が実行されます。

9. 「そうでないとき」と「条件分岐終了」の間に、条件”不成立”時に実行するテスト手順を追加します。
右クリックし、行を追加します。

10. 「動作/画面名/要素名/設定値」を設定し、「追加」をクリックします。

11. 条件”不成立”時に実行されるテスト手順が追加されました。
この構造では、「もし」が不成立時(「本日限り」が表示されていない場合)に、「このプランで予約(出張ビジネスプラン)」ボタンをクリックするテスト手順が実行されます。

12. 「プレビュー」では、「もし」の条件分岐を設定したテスト手順の先頭に「IF」が表示されます。
「そうでないとき」のテスト手順の先頭に「ELSE」が表示されます。
条件成立時・不成立時に実行するテスト手順は、インデント(条件分岐ブロック内のテスト手順を字下げ表示)されます。

補足
条件分岐ブロック外に追加したテスト手順は、ドラッグ&ドロップで条件分岐ブロック内に移動できます。


条件分岐の中に条件分岐を追加する
条件分岐ブロック内に、さらに「もし」や「もし~そうでないとき」を追加できます。
このように、条件分岐の中に別の条件分岐を入れる構造をネストと呼びます。
ネストを使うと、条件分岐ブロック内でさらに別の条件を判定できます。
ネストは3階層まで作成できます。
ネストした条件分岐を作成する
例として、以下のようなテストケースを作成します。
このテストケースでは、1つ目の条件として「本日限り」が表示されているかを判定します。
「本日限り」が表示されている場合は、そのプランの予約画面へ進み、2つ目の条件として「朝食バイキング」が表示されているかを判定します。
「朝食バイキング」が表示されている場合は、「朝食バイキング」を選択します。
表示されていない場合は、「朝食バイキング」を選択するテスト手順がスキップされます。
1つ目の条件である「本日限り」が表示されていない場合は、「そうでないとき」で指定した「このプランで予約(出張ビジネスプラン)」を選択します。
この場合、2つ目の条件は判定されません。

1. 「もし~そうでないとき」を使ったテスト手順の作成方法で作成したテスト手順の3行目と4行目の間に、2つ目の条件を追加します。
まず、「制御命令」から「もし」を選択します。

2. 「もし」の条件として使用する「検証動作/画面名/要素名/設定値」を入力し、「追加」をクリックします。

3. 7~8行目に2つ目の条件が追加されました。
ネストになるように行を並べ替えます。
1つ目の条件分岐の「条件分岐終了」が最終行になるように、ドラッグ&ドロップで並べ替えます。必ず最初に「条件分岐終了」行を並べ替えてください。
「条件分岐終了」行を並べ替えてからでないと、並べ替え制限により、他の行を移動できないためです。


4. 続いて、1つ目の条件分岐の「そうでないとき」のテスト手順を、2つ目の条件分岐の「条件分岐終了」の後ろに並べ替えます。

5. 1つ目の条件分岐ブロック内に、2つ目の「もし」と「条件分岐終了」が配置されました。

6. 2つ目の「もし」と「条件分岐終了」の間に、条件が成立した場合に実行するテスト手順を追加します。

7. 条件分岐の中に条件分岐を作成できました。
ネストの階層に応じて条件分岐ブロックごとにハイライト(塗りつぶし)で色分けされます。

8. プレビューでは、条件分岐を設定したテスト手順の先頭に「IF」が表示されます。
また、「そうでないとき」のテスト手順には「ELSE」が表示されます。
ネストした条件分岐では、内側の条件分岐が外側の条件分岐よりもさらにインデントされます。

条件分岐の構造を確認する
条件分岐を作成すると、どのテスト手順がどの条件分岐ブロックに含まれているかを確認することが重要です。
編集画面では、以下の構造を確認できます。
インデント
条件分岐ブロック内のテスト手順は、字下げして表示されます。
1つ目の条件分岐に含まれるテスト手順は1段インデントされます。
2つ目の条件分岐に含まれるテスト手順は、さらにもう1段インデントされます。
インデントを見ることで、各テスト手順がどの階層に配置されているかを確認できます。

ブロックハイライト
条件分岐ブロックの範囲はハイライト(塗りつぶし)表示されます。
複数の条件分岐ブロックがある場合は、どこからどこまでが、どの条件分岐ブロックなのかを見分けることができます。

強調表示
条件分岐ブロックを選択(クリック)すると、条件分岐全体が青枠線で強調表示されます。

「もし~そうでないとき」の条件分岐では、以下の2つのブロックに分かれて強調表示されます。
(ア) (もし動作が成功したとき)~(そうでないとき)の上の行まで
(イ) (そうでないとき)~(条件分岐終了)
(ア)または(イ)のいずれかの行を選択している場合、選択行が属するブロックはアクティブブロックとなり、濃い青枠線で強調表示されます。
選択していない行が属するブロックは、非アクティブブロックとして、薄い青枠線で強調表示されます。

ネストの色分け
条件分岐がネストしている場合、ネストの深さに応じて条件分岐ブロックが色分けされます。
色分けを見ることで、ネスト階層ごとに区別でき、どの条件分岐がどの階層にあるかを視覚的に把握しやすくなります。

プレビュー
プレビューでは、テスト手順に実行順の番号が表示されます。
条件分岐を設定したテスト手順には「IF」、そうでないときには「ELSE」が表示されます。
また、ネストした条件分岐は階層に応じてインデントされるため、実行される順番と条件分岐の構造をあわせて確認できます。

条件分岐を編集するときの注意点
条件分岐を作成したあとに、テスト手順を削除したり並べ替えたりする場合は、条件分岐の構造が崩れないように注意が必要です。
条件分岐は、「もし」「そうでないとき」「条件分岐終了」などの制御行によって構成されています。
これらの制御行の対応関係が崩れると、どこからどこまでが条件分岐ブロックなのか判断できなくなります。
新T-DASH では、条件分岐の構造が意図せず壊れないように、以下の仕組みがあります。
ここでは、それぞれの注意点を確認します。
制御行を削除する場合
条件分岐ブロックの「もし」「そうでないとき」「条件分岐終了」などの制御行を削除しようとすると、確認ダイアログが表示されます。
これは、条件分岐ブロックの一部だけを削除して、構造が崩れることを防ぐためです。
たとえば、「もし」行だけを削除してしまうと、「条件分岐終了」だけが残ってしまい、条件分岐の開始位置が分からなくなります。
また、「条件分岐終了」だけを削除すると、条件分岐ブロックの終了位置が分からなくなります。
そのため、制御行を削除する場合は、ブロック全体を削除するかどうかを確認してから操作します。

行を並べ替える場合
条件分岐ブロック内の行は、ドラッグ&ドロップで並べ替えできます。
ただし、「もし」「そうでないとき」「条件分岐終了」の対応関係が壊れるような行の移動はできません。
実行前の構文チェック
テストを実行する前に、条件分岐の構文が正しいか自動でチェックされます。
「もし」「そうでないとき」「条件分岐終了」の対応関係に問題がある場合は、実行前にエラーとして検出されます。
エラーが表示された場合は、該当する条件分岐ブロックを確認し、制御行の位置を修正してください。
テストを実行して結果を確認する
条件分岐を作成したら、テストを実行し、意図したとおりに処理が分岐しているか確認します。
実行結果画面では、条件分岐の判定結果、実行されたテスト手順、スキップされたテスト手順を確認できます。
また、条件が成立しなかった場合は、「詳細」から判定が不成立となった理由を確認できます。
条件が成立しなかった場合やスキップは、必ずしも異常ではありません。
条件分岐では、条件に応じて実行する処理を切り替えることが目的のため、想定どおりにスキップされていれば正常です。


Tips – 条件分岐を動作セットで使用する
条件分岐は、動作セットの中にも追加できます。
複数のテストケースで共通して使う分岐処理は、動作セットにしておくと再利用しやすくなります。
テストケースから動作セットを呼び出すと、動作セット内の条件分岐も含めて実行されます。
動作セットについては、「動作セットを作成しよう」をご確認ください。
