ステップをループさせる

mablでステップのループを使用すると、アプリケーション内のより複雑なユーザージャーニーをコーディングなしでテストすることができます。

ループの概要

最高のテストとは、アプリケーションの変化に適応するものです。アプリに新機能を追加しても、テストが壊れないテストや、ドロップダウンの選択肢が新しく追加されても、一部のテストが失敗しないことが望ましいはずです。アプリケーションの実際のデータ(ドロップダウンの選択肢の数や、ページ上の特定の要素の数など)に基づいて、繰り返される一連のループを設定することで、アプリケーションのより多くの部分をカバーする複雑なテストを、より簡単に作成することができ、より堅牢で、作成と維持が迅速になります。

mablでステップのループを使用すると、アプリケーション内のより複雑なユーザージャーニーをコーディングなしでテストすることができます。

ユースケース

ループは次のような場合に特に有効です。

  • Date-picker要素での6ヶ月先の日付にスキップしたい
  • ドロップダウンのすべての要素の表示を保証したい
  • テストやデプロイメントの初期段階で作成されたテストデータのクリーンアップをしたい
  • 正しい項目が表示されるまで結果のリストをページングしたい
  • 複数のページにわたって一定の要素が表示されることを保証したい

既存のフローにTrainerのループを追加する

再利用可能な既存のフローには、編集するだけで簡単にループを追加することができます。ただし、ループはそのフローのインスタンスのみをループさせるので、他の場所で再利用する場合はループの設定をやり直す必要があることに注意してください。また、ループを削除する場合も同様です。

592

FLOWの設定からループ設定可能です。

フローをループさせる回数も設定可能です。ループ量を可変にする方法については後述します。

新しいループの追加

トレーナーにループを追加するには、以下の手順で行います。

  1. まず、Trainer画面下部のツールバーのプラスボタンをクリックします。
  2. Loopステップを選択します。FLOWを使ったループ設定を行う場合は、FLOWを新規作成して設定するか、既存のFLOWを選んでループ設定してください。

📘

既存のステップをループさせたい場合

ステップ番号にカーソルを合わせてクリックすると、複数のステップを一度に選択することができます。5、6、7、8のように連続したステップのグループを選択し、ツールバーに表示される「新規フロー」ボタンをクリックしてFLOWを作成し、ループの設定を行います。

  1. フローに名前を付けた後、「Looping」タブに切り替えるか、「Runs 1 time」をクリックして、ループの設定を開始します。
592
  1. ループを設定する際に、ループの反復回数を特定の数値で指定することができます。「Loop using a variable」を選び、変数を使用してループも可能です。
592
  1. ループの設定が完了したら、「OK」をクリックするだけで、新しいループの流れが保存されます。
  2. 繰り返し行う必要のあるステップを追加・削除したい場合は、FLOWの開始と終了の間で、追加・削除してください。

🚧

ループ回数の限界値

ループの最大許容数は500回です。

変数を使ったループの指定

ループの数を動的にしか決められない場合があります。例えば、以下のような場合です。

  • すべてのチェックボックスにチェックを入れるが、チェックボックスの数は実行ごとに異なる場合がある
  • 期待通りのデータが表示されるまで「更新」をクリックしたい

このような場合は、ループ回数を格納する変数を作成し、「変数を使用してループ」を選択することで対応できます。

592

ループ回数を変数で指定した場合、mabl runnerは各繰り返しの前に、実行されたループ回数が変数の値を超えたかどうかをチェックします。

ループの内側から条件付きで変数を変更することで、ループを延長したり、ループから抜け出したりすることができます。以下の例では、ループ回数の変数を50に初期化しています。しかし、チェックしたチェックボックスの数が5になった時点で、変数を0に変更し、ループを早期に終了させています。これはwhile ループに近い動作となります。

837

📘

ループをBreakする方法

ループの中に条件分岐を入れて、ループをBreakすることが可能です。
また、ループ回数を変数で設定し、その変数を上限値を超える数値(50回なら51回など)にすることで、Breakに似たような動きになります。

変数「run.loop_index」の使い方

特別な読み取り専用変数 run.loop_index は、ループ処理の際に自動的に注入されます。この変数の値は、現在のループ番号であり、1ベースの序列インデックスです。これは、CSS クエリや XPath で、あるタイプの要素の n 番目のインスタンスをターゲットにする場合に便利です。以下の例では、CSSクエリの div[role='radiogroup'] label:nth-of-type({{@run.loop_index}}) inputを使用して、各ラジオボタンを順番に選択しています。
Xpathだと //*div[{{@run.loop_index}}]のように配列の添えに利用できます。

800

📘

JavaScriptのステップでrun.loop_indexにアクセスする

Javascriptのステップでrun.loop_indexの値にアクセスしたい場合は、 mablInputs.variables.web.runtime.flow_run_ordinal_index からアクセスできます。

リプレイコントロール

mabl Trainer内のループを再生する場合、ループが途中で停止していても、mablは現在のインデックスでループの再生を再開しようとします。また、ループドロップダウンを使って、再生するループを選択することもできます。

600

Related resources