mablでは、同じプラン内のテスト間で変数を共有できます。共有変数は、データ駆動型の変数をテスト実行間で渡すシナリオを設定するのに最適です。例えば、次のような場合です。
- 認証Cookieを変数に保存し、他の実行に渡す
- 1つのテストで動的なテストデータを作成し、それを別のテストに渡して検証する
- ユーザーIDや電子メールなど、ランダムに生成された変数を使用してテストデータを作成し、プランの最後に行われる別のテストでそれらのテストデータを削除する。
この記事では、プラン内でテスト間の変数共有を設定する方法を説明します。
前のテストを設定して変数を共有する
変数の共有は、以下のソースから作成された変数を含む、すべてのテスト生成変数でサポートされています:
- 文字列テンプレート
- エレメントプロパティ
- mabl メールボックス
- JavaScriptスニペット
- データベースクエリ
- Cookie
- UIテストとAPIテストからのAPIレスポンス
たとえば、認証Cookieの値を抽出して後続のテストと共有したい場合は、Cookie値から変数を作成します:{x} > 変数を作成 > Cookie値、そして変数名を覚えておいてください。変数名がcookie_authの場合、その変数を共有する後続のテストでは、その正確な変数名を使用する必要があります。
共有したい変数を生成するテストを作成した後、変数の共有を有効にします:
- テスト詳細ページで、編集ペンシルをクリックします。
- 共有変数をオンに切り替えます。
- 変更内容を保存します。
変数共有の有効化
制限事項
- データテーブルシナリオの値などのデータ駆動型変数は、テスト間で共有できません。
- テストで共有されるテスト生成変数の結合サイズは、1MBを超えてはなりません。
- パフォーマンステストは、他のテストと変数を共有できません。
プレースホルダー値を使用して後続のテストをトレーニングする
次のステップは、共有変数を受け取るテストを作成することです。テストは渡したい変数を認識していないため、プレースホルダー値を使用してデータ駆動変数を設定する必要があります。変数名は、前のテストの変数名と正確に一致する必要があります。
Cookieの例に戻ると、後続のテストでcookie_authの値を使用するには、次の手順が必要です:
-
cookie_authという名前のデータ駆動変数をプレースホルダー値で追加します。 -
set cookieステップを追加して、
{{@cookie_auth}}を使用します:+ (ステップを追加) > Cookie > Set cookie。このステップは、認証されたセッションを復元するためにCookieを明示的に設定します。
トレーニング中およびアドホック実行中、mablはプレースホルダー値を使用します。クラウドでのプラン実行中、mablは前のテストから共有変数の値を渡します。
トレーナー内
mablトレーナーでプレースホルダー値を作成するには、データ駆動変数を追加します:{x} > 変数を管理 > データ駆動変数。
Trainerでデータドリブン変数を追加する
APIテストエディター内
APIテストエディターで、{x} 変数パネルを展開し、プレースホルダー値を持つ変数を追加します。この編集セッション後も値が保持されるように、デフォルトセクションに値を追加してください。
APIテストエディターでデータ駆動型変数を追加する
テストをプランに追加する
最後のステップは、同じプランにテストを追加することです。プランを設定して、共有変数が有効になっているテストが、プレースホルダー変数を持つテストの前に実行を終了するようにします。これを設定する方法は2つあります。
- 順次実行: すべてのテストを順次ステージに配置して、指定された順序でテストを実行します。
- ステージを使用する:変数を共有するテストを1つのステージに配置し、それらの変数を必要とするテストを後続のステージに配置するようにプランを設定します。
クラウドでプランを実行する
プランをトリガーしてクラウドで実行します。mablは、前のテストから後続のテストに共有変数を渡し、プレースホルダーの値を上書きします。Cookieの例では、最初のテストからの実際のcookie_authの値がプレースホルダーを置き換え、Cookieを設定するステップが共有変数を参照してセッションを復元します。
テスト実行からすべての変数の値を表示する
すべてが期待通りに動作したことを確認するには、テスト出力ページで各テスト実行の変数を確認できます。すべて表示 > 変数 をご覧ください。
テスト実行からすべての変数を表示する
変数名の競合の解決
テストの同じ変数に複数の値が渡される場合、優先順位は次のとおりです。
- データテーブル・シナリオ
- 共有変数
- 環境変数
- テストデータ駆動型変数(デフォルト値)
- フローのデータ駆動型変数(デフォルト値)
データテーブルのシナリオの値は、他の値を上書きします。
プラン設定は変数の共有に影響を与える可能性があります
変数の共有が有効になっている場合、一部のプラン設定により予期しない結果が生じる可能性があります。
- 複数の実行: 複数のテスト実行が同じ変数を生成して共有するものの、異なる値を持つ場合、最後に完了したテスト実行が、先行するテスト実行によって設定された変数値を上書きします。このため、複数のブラウザ、データテーブルシナリオ、または同時実行数を使用するプランでは、共有変数の使用を推奨しません。
- 失敗したテストの再実行: 失敗したテストのみを再実行するように設定されたプランは、新たな失敗を引き起こす可能性があります。これは、再実行時に元の実行で成功したテストからの重要なセットアップが含まれない場合があるためです。