Loading
ただいま大変多くのお問い合わせをいただいており、ご連絡までにお時間を頂戴しております続きを読む
Salesforce フローを使用したビジネスプロセスの自動化
レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローの自動テスト

レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローの自動テスト

フローを有効化する前に、フローをテストして予期される結果を確認し、実行時エラーを特定します。自動フローテストは、レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローで使用します。

必要なエディション

サポートされているエディションを表示する。
必要なユーザー権限
Einstein for Flow や Agentforce for Flow など、Flow Builder で使用できるすべてのフロー タイプ、要素、機能を使用してフローを開く、編集、作成、有効化、または無効化する 「フローの管理」
Flow Builder でテスト実行の詳細を表示する 「すべてのデータの参照」

フローの自動テストにより、時間が節約され、フローの信頼性が向上します。フローをデバッグする場合、デバッグを開始するたびにデバッグパラメーターと入力を手動で設定します。フローテストでは、テストパラメーターと入力を 1 回設定します。テストを実行するたびに、同じ設定を使用してフローを評価します。また、フローごとに同じテストで停滞することはありません。さまざまなシナリオに応じてテストを編集したり、他のテストを作成したりできます。

フローが辿る可能性があるすべてのパスに対して、テストを作成することをお勧めします。有効なフローバージョンのフローテストが実行されます。フローバージョンが有効でない場合、フローテストは最新のフローバージョンで実行されます。

フローのテスト

Flow Builder では、レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローの自動フローテストを作成、保存、実行できます。必要に応じて、テストが組織データに影響しないように、分離されたテストデータを使用できます。フローを変更するたびにテストを実行できます。

ユーザーに影響する前にエラーを検出できるように、フロー経由の考えられるすべてのパスをテストすることをお勧めします。たとえば、ユーザーまたは入力でフローに必要なすべてのデータが提供されない場合、フローは失敗します。障害コネクタを追加して、データを修正するパスをユーザーまたはフローロジックに提供し、フローが正常に終了できるようにします。

  1. [フロー] リストビューを開きます。
    • [設定] で、[クイック検索] ボックスに「フロー」と入力して、[フロー] を選択します。
    • Automation アプリケーションから、[フロー] タブを選択します。
    • 任意の Lightning アプリケーションの [フロー] タブで、アクション メニューをクリックし、[フローを開く] を選択します。
  2. テストするフローバージョンを開きます。
    • [設定] のフロー リスト画面で、テストするフローの [アクションメニューアイコン] をクリックし、[詳細とバージョンを表示] を選択して、[開く] をクリックします。
    • オートメーションまたは任意の Lightning アプリケーションのフロー リスト画面で、フローの [関連] タブをクリックします。テストするフローバージョンで、[アクションメニューアイコン] をクリックし、[フローを開く] を選択します。
  3. [テストを表示] をクリックし、[作成] をクリックします。
  4. [テストの詳細、トリガー、パスの設定] ウィンドウで、テストを設定します。
    1. テストの表示ラベル、API 参照名、および説明を入力します。
    2. [レコードが次の場合にテストを実行] で、[作成済み] または [更新済み] を選択します。
    3. [テストするフローバージョン] で、[選択されたフローバージョン] 列にフローバージョンを追加します。
      Flow Builder で現在開いているフローバージョンのフローテストが実行されます。フローテストは、選択した各フローバージョンで使用できます。
      レコードトリガーフローの [新規テスト] ウィンドウ
  5. レコードトリガーフローと自動起動フローで分離されたテストデータを使用するには、[Test Setup (テストの設定)] をクリックし、[Run from Data Silo (データサイロから実行)] を選択して、@testSetupメソッドを持つ既存の Apex テストクラスを選択します。
    フローテストを作成する前に、テスト中に使用するレコードを挿入するテスト設定メソッドを含む Apex クラスを作成してリリースします。Apex クラスが表示されない場合は、テスト設定メソッドを使用する Apex クラスがありません。「分離されたテストデータを使用したテストフロー」セクションを参照してください。分離されたテストデータは、レコードトリガーフローと自動起動フローで使用できます。
  6. 自動起動フローの場合は、[Set Test Input Values (テスト入力値の設定)] をクリックし、レコード、テキスト、数値などの各入力変数の値を設定します。
  7. レコードトリガーフローと Data Cloud トリガーフローの場合は、[Set Initial Triggering Record] をクリックし、テストを最初にトリガーするレコードの値を入力します。
  8. 更新されたレコードがテストの実行をトリガーする場合は、[Set Updated Trigger Record] をクリックし、レコード値を入力します。
  9. [アサーションを設定] をクリックし、各アサーションの条件とカスタム失敗メッセージを設定します。
  10. 変更内容を保存して、[テストを表示] をクリックします。
    フローの所有者は、テストを最後に編集したユーザーに変更されます。
  11. 設定したテストを選択し、[実行] をクリックします。
    Flow Builder でテストが実行され、[結果] 列に結果が表示されます。

分離されたテストデータを使用したフローのテスト

テスト設定メソッドを含むApexクラスからの再利用可能な専用テスト・データを使用して、レコード・トリガー・フローと自動起動フローのフロー・テストを実行します。実行の終了後、テストはApex単体テストのようにロールバックされるため、組織のライブ・データは元の状態に保たれます。

組織データをテストに使用すると、誰でもそのデータを変更し、テストが失敗する可能性があります。Sandbox と本番ではレコード ID が異なるため、ある環境で合格したテストを別の環境にリリースすると失敗する可能性があります。Apex テストの設定で実行時にデータを作成するのと同じように、テストの実行時に分離されたテストデータを作成します。フローテストデータは一貫性が維持されるため、複数の環境にリリースできます。

  1. @isTest 注釈と、フローテスト中に使用するレコードを挿入する @testSetup メソッドを使用して、Apex クラスを作成します。

    たとえば、次の Apex クラスはテストアカウントを作成します。「Using Apex Test Setup Methods」を参照してください。

    @isTest
    global class CommonTestSetup {
      @testSetup
      global static void setup() {
        List<Account> accts = new List<Account>();
        for (Integer i = 1; i <= 2; i++) {
          accts.add(new Account(Name = 'Test Account ' + i));
        }
        insert accts;
      }
    }

    分離されたテストデータに一致するレコードが存在しないフローはテストできません。入力レコードは、分離されたテストデータにすでに存在するレコードを参照する必要があるため、このデータソースを使用して「レコードが見つかりません」パスをテストすることはできません。組織データを使用するテストとは異なり、分離されたテストデータの入力レコードの項目値はカスタマイズできません。分離されたテストデータでは、そのレコードが主要な項目によって選択され、そのまま使用されます。Apex @testSetupメソッドで、すべての主要なフィールドに入力します。重要な項目は、後の手順で選択します。

  2. Flow Builder で、フローを開いて [テストを表示] をクリックし、[作成] をクリックするか、既存のフローテストを編集します。
  3. [Test Setup (設定のテスト)] をクリックし、[Run from Data Silo (データサイロから実行)] を選択して、作成した Apex テストクラスを選択します。
    フローテストでは、データソースとして Apex クラスが使用されます。このテストでは、ロールバックで分離されたテストデータが使用されるため、組織データは変更されません。
    [データソースから実行] オプション
  4. テストで使用する各オブジェクトの主要な項目を選択します。
    分離されたオブジェクトの外部キー項目は、分離されたテストデータの一意のレコードを識別します。テストレコード ID は毎回実行後に変更されるため、これらの主要な項目はテスト実行時に入力レコードを分離されたテストデータと照合します。たとえば、Phone フィールドを取引先レコードを識別するキーフィールドとして使用します。
    主要な項目を選択する [一意のレコードを設定] タブ
  5. 分離されたテストデータの入力変数値を設定します。
  6. アサーションやその他のテストの詳細を設定し、フローテストを保存して実行します。
    フローテストは、ライブ組織のデータではなく、データサイロ内の分離されたテストデータに対して実行されます。

エラー処理のためのフローのテスト

フローテストで、計画どおりにいかないフローパスを意図的にテストするネガティブアサーションを設定し、フローでエラーが正常に処理されることを確認します。

レコードトリガーフロー、自動起動フロー、または Data Cloud トリガーフローで、[レコードを作成]、[レコードを更新]、[レコードを削除]、および [アクション] 要素のネガティブアサーションを設定します。

  1. フローテストを作成します。
  2. アサーションを設定するときに、レコードの作成、レコードの更新、レコードの削除、またはアクション要素のリソースを選択します。
  3. [演算子] で、[エラーあり] を選択します。
  4. 値を選択し、フローテストを保存します。
選択した [エラーあり] 演算子が表示されているフローテストアサーション
例

顧客データを処理するフローについて考えてみます。必須項目の欠落など、無効な入力がフローで処理されていることを確認するためのテストを作成できます。

フローテスト結果の解釈

フローテスト実行の完了後にフローテストの結果を解釈する方法を理解します。

フローをテストした後に結果を解釈し、さまざまな条件下でフローが意図したとおりに動作することを確認することをお勧めします。分離されたテストデータを使用する場合、テスト実行の詳細に同じアサーションとパス情報が表示されます。テストは、組織データではなく、分離されたテストデータに対して実行されました。

  1. テスト実行の詳細を表示するには、[アクションメニューアイコン] をクリックし、[Run Test and View Details (テスト実行と詳細の表示)] を選択します。
    [Test Run Details (テスト実行の詳細)] の [All Details (すべて詳細)] タブには、テスト実行全体の結果が表示されます。フローが失敗した場合は、フローエラーをトラブルシューティングします。
  2. フローテストの状況を確認するには、[テスト実行の詳細] で [アサーション] タブを選択し、各アサーションを展開します。
    レコードトリガーフローのテスト実行の詳細
    Flow Builder では、テスト実行のパスが強調表示されます (1)。[Test Run Details (テスト実行の詳細)] では、各アサーションが探している条件 (2)、それらの条件がチェックされた値 (括弧内) (3)、そのアサーションに定義したカスタムエラーメッセージ (4) が示されます。
  3. 失敗したフローテストを解釈します。
    1. 失敗したアサーションの条件と条件評価を確認します。
      この例では、[優先度を高に設定] 要素で、失敗したアサーションは [$Record’s Priority ($Record の優先度)] 項目の値を [高] に設定します。
    2. 値を変更するには、要素をクリックし、[要素を編集] をクリックします。
      この例では、失敗したアサーションを修正するには、[優先度を高に設定] 要素を編集し、$Record の優先度を [高] に変更します。
    3. フローを保存し、失敗したフローテストを実行します。
例

このテストでは、オブジェクトが更新され、フローが即時実行パスを辿る場合に、フローを検証します。

サンプルテスト設定が表示されている [新規テスト] ウィンドウ。

テストには、トリガーレコードの初期値および更新値を設定する項目が含まれます。このレコードは、フローの実行をトリガーするレコードと同じレコードです。テストでは、テストでのみ使用されるレコードのコピーが作成されます。このレコードはデータベースには保存されません。

テストでは、各アサーションを評価して、フローが期待どおりに実行されていることを検証します。テストで評価できるのは、フロー要素が実行されたかどうかと、フローリソース値が期待どおりに設定されているかどうかのみです。このテストでは、Salesforce データベースの既存のデータと、ルールや制限などのカスタマイズに基づいてフローが評価されます。

アサーションとその値が表示されている [アサーションを設定] セクション

フローにテストが含まれる場合、[テスト] リストビューには、フローのすべてのテストと、関連付けられたテスト結果が表示されます。

作成されたテストが表示されている [テスト] リストビュー

テストの実行が完了すると、[テスト実行の詳細] には各アサーションがどのように評価されたかが表示されます。条件が false に評価されると、アサーションとテストは失敗します。すべてのアサーションが合格すると、テストは合格します。

[テスト実行の詳細] の下にある [アサーション] タブが表示されている Flow Builder

[すべての詳細] タブには、テスト実行全体の結果が表示されます。アサーションはテスト実行の終了時に評価されます。

[すべての詳細] タブが表示されている [テスト実行の詳細] セクション

フローが期待どおりに機能することを確信できたら、テストしたバージョンを有効化して、フローを配布します。

フローテストの制限

フローごとに作成できるテストの数とフローテストの制限について説明します。

制限

フローあたりのテストの最大数は 200 です。

制限事項

  • フローテストは、レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローで使用できます。
  • 分離されたテストデータは、レコードトリガーフローと自動起動フローで使用できます。
  • 自動起動フローのフローテストは、コールアウト要素または待機要素を含むフローではサポートされません。
  • フローテストではレコードの削除時に実行されるフローはサポートされません。
  • フローテストでは、非同期に実行されるフローパスはサポートされません。
  • フローテストは、フローテストカバー率要件には含まれません。
  • テストデータの設定では数式はサポートされていません。固定値を使用します。たとえば、日付項目が相対日付である Today に設定されていることを検証するフローテストでは、テストの実行前に項目を手動で更新する必要があります。たとえば、2022 年 8 月 3 日にテストを作成して実行すると、日付は相対日付である August 3, 2022 に設定されます。同じテストを明日実行しても、日付項目の値は August 3, 2022 のままです。
 
読み込み中
Salesforce Help | Article