ネストされたフローを使用すると、フローを別のフロー内にインポートして、最大4階層の再利用可能な階層を作成できます。この記事では、ネストが適切なアプローチとなる一般的なパターンと、フローをフラットに保つ方が適している状況について説明します。
ネストを使用するタイミング
階層化されたフローの構成
複数のテストが、より小さな再利用可能なパーツで構成された共通のワークフローを共有している場合、ネストを使用することでステップを重複させることなくそれらのパーツを組み合わせることができます。
例えば、「カートに商品を追加する」フローと「支払い情報を入力する」フローがあり、それぞれが複数のテストで単独で使用されているとします。両方を「チェックアウトを完了する」フロー内にネストすることで、チェックアウトの全シーケンスを表現できます。支払いフォームが変更された場合、「支払い情報を入力する」フローを一度更新するだけで、チェックアウトフローを使用するすべてのテスト、または支払いフロー単体を使用するすべてのテストに変更が反映されます。
このパターンが最も効果的なのは、次の場合です。
- 内部フローが親フローの外でも真に再利用可能である
- 親フローが、単なるステップをグループ化するためのコンテナではなく、実際のユーザーワークフローを表している
データグリッドのテスト
ネストされたフローは、複数のレベルでループを組み合わせることで、テーブルやグリッドなどの複雑なデータ構造を反復処理できます。
例えば、テーブルの行をループする外部フローを作成し、各行内の列またはドロップダウンの値をループする内部フローをネストすることができます。このアプローチは次のようなシナリオに対応します。
- 結果テーブルの各行に期待される値が含まれていることを確認する
- フォームの各行のドロップダウンからオプションを選択する
- 複数列のグリッド全体でデータを解析および検証する
認証チェーン
階層化された認証ステップを持つアプリケーションでは、各層がログインプロセスの一部を処理するネストされたフローが役立ちます。
例:
- 「多要素認証 (MFA) 検証」フローが多要素認証プロンプトを処理する
- 「ログイン」フローがクレデンシャルの入力をラップし、「多要素認証 (MFA) 検証」フローをネストする
- 「セッションセットアップ」フローが「ログイン」フローをネストし、セッション設定ステップを追加する
各レイヤーは独立してメンテナンスできます。多要素認証 (MFA) プロバイダーが変更された場合、ログインやセッション設定のロジックに触れることなく「MFA verification」フローを更新できます。複数のログイン方法をサポートするチームは、チェーン全体を再構築することなく、個々のレイヤーを入れ替えたり再設定したりできます。
繰り返しを含む条件ロジック
条件付きステップ内にネストされたフローを使用して、ブランチロジックを複製することなくテスト全体で繰り返される分岐ワークフローを作成できます。
たとえば、ログインフローには、ユーザーが管理者か標準ユーザーかを確認する条件付きステップを含めることができます。フロー内の各シナリオには、ロール固有のアクションを含むネストされたフローが含まれます。条件付き構造とネストされたフローは一緒に再利用できるため、ロールベースの動作を処理するすべてのテストで分岐ロジックを再構築する必要はありません。
ネストを使用しない場合
ネストは強力ですが、複雑さが増します。3レベル深い箇所での失敗は、フラットなフローでの失敗よりもトレースが困難です。ネストする前に、以下の点を検討してください。
内部フローは単独で再利用できますか? フローが1つの親フロー内にのみ存在し、他の場所で使用する予定がない場合、それらのステップは親フローに直接含めた方がよい場合があります。ネストが最も効果的なのは、内部フローが独自の用途を持つ場合です。
整理のためにネストしていますか、それとも再利用のためですか? 関連するステップを読みやすさのためにグループ化することが目的であれば、ステップグループはより軽量なオプションです。ステップグループは、フローに伴うバージョン管理やパラメータ管理のオーバーヘッドなしに、折りたたみ可能なラベルを提供します。
深さの上限に近づいていますか? フローとステップグループは、4レベルのネスト深さ制限を共有しています。すでに3レベルにいて、さらにもう1レベル追加することを検討している場合は、一歩引いて考えてみてください。深いネストは、テストが多くのことをやりすぎているサインである可能性があります。テストを、それぞれ特定のシナリオに焦点を当てた複数のテストに分割することを検討してください。