レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローの自動テスト
フローを有効化する前に、フローをテストして予期される結果を確認し、実行時エラーを特定します。自動フローテストは、レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローで使用します。
必要なエディション
| サポートされているエディションを表示する。 |
| 必要なユーザー権限 | |
|---|---|
| Einstein for Flow や Agentforce for Flow など、Flow Builder で使用できるすべてのフロー タイプ、要素、機能を使用してフローを開く、編集、作成、有効化、または無効化する | 「フローの管理」 |
| Flow Builder でテスト実行の詳細を表示する | 「すべてのデータの参照」 |
フローの自動テストにより、時間が節約され、フローの信頼性が向上します。フローをデバッグする場合、デバッグを開始するたびにデバッグパラメーターと入力を手動で設定します。フローテストでは、テストパラメーターと入力を 1 回設定します。テストを実行するたびに、同じ設定を使用してフローを評価します。また、フローごとに同じテストで停滞することはありません。さまざまなシナリオに応じてテストを編集したり、他のテストを作成したりできます。
フローが辿る可能性があるすべてのパスに対して、テストを作成することをお勧めします。有効なフローバージョンのフローテストが実行されます。フローバージョンが有効でない場合、フローテストは最新のフローバージョンで実行されます。
フローのテスト
Flow Builder では、レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローの自動フローテストを作成、保存、実行できます。必要に応じて、テストが組織データに影響しないように、分離されたテストデータを使用できます。フローを変更するたびにテストを実行できます。
ユーザーに影響する前にエラーを検出できるように、フロー経由の考えられるすべてのパスをテストすることをお勧めします。たとえば、ユーザーまたは入力でフローに必要なすべてのデータが提供されない場合、フローは失敗します。障害コネクタを追加して、データを修正するパスをユーザーまたはフローロジックに提供し、フローが正常に終了できるようにします。
-
[フロー] リストビューを開きます。
- [設定] で、[クイック検索] ボックスに「フロー」と入力して、[フロー] を選択します。
- Automation アプリケーションから、[フロー] タブを選択します。
- 任意の Lightning アプリケーションの [フロー] タブで、アクション メニューをクリックし、[フローを開く] を選択します。
-
テストするフローバージョンを開きます。
- [設定] のフロー リスト画面で、テストするフローの [
] をクリックし、[詳細とバージョンを表示] を選択して、[開く] をクリックします。 - オートメーションまたは任意の Lightning アプリケーションのフロー リスト画面で、フローの [関連] タブをクリックします。テストするフローバージョンで、[
] をクリックし、[フローを開く] を選択します。
- [設定] のフロー リスト画面で、テストするフローの [
- [テストを表示] をクリックし、[作成] をクリックします。
-
[テストの詳細、トリガー、パスの設定] ウィンドウで、テストを設定します。
- テストの表示ラベル、API 参照名、および説明を入力します。
- [レコードが次の場合にテストを実行] で、[作成済み] または [更新済み] を選択します。
-
[テストするフローバージョン] で、[選択されたフローバージョン] 列にフローバージョンを追加します。
Flow Builder で現在開いているフローバージョンのフローテストが実行されます。フローテストは、選択した各フローバージョンで使用できます。
![レコードトリガーフローの [新規テスト] ウィンドウ](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-262-0-0-production-jajp/9caf04f0-8c90-406b-a974-830c29613bb3/platform_automation/images/flow/automate_flow_test_set_test_details.png)
-
レコードトリガーフローと自動起動フローで分離されたテストデータを使用するには、[Test Setup (テストの設定)] をクリックし、[Run from Data Silo (データサイロから実行)] を選択して、
@testSetupメソッドを持つ既存の Apex テストクラスを選択します。フローテストを作成する前に、テスト中に使用するレコードを挿入するテスト設定メソッドを含む Apex クラスを作成してリリースします。Apex クラスが表示されない場合は、テスト設定メソッドを使用する Apex クラスがありません。「分離されたテストデータを使用したテストフロー」セクションを参照してください。分離されたテストデータは、レコードトリガーフローと自動起動フローで使用できます。 - 自動起動フローの場合は、[Set Test Input Values (テスト入力値の設定)] をクリックし、レコード、テキスト、数値などの各入力変数の値を設定します。
- レコードトリガーフローと Data Cloud トリガーフローの場合は、[Set Initial Triggering Record] をクリックし、テストを最初にトリガーするレコードの値を入力します。
- 更新されたレコードがテストの実行をトリガーする場合は、[Set Updated Trigger Record] をクリックし、レコード値を入力します。
- [アサーションを設定] をクリックし、各アサーションの条件とカスタム失敗メッセージを設定します。
-
変更内容を保存して、[テストを表示] をクリックします。
フローの所有者は、テストを最後に編集したユーザーに変更されます。
-
設定したテストを選択し、[実行] をクリックします。
Flow Builder でテストが実行され、[結果] 列に結果が表示されます。
分離されたテストデータを使用したフローのテスト
テスト設定メソッドを含むApexクラスからの再利用可能な専用テスト・データを使用して、レコード・トリガー・フローと自動起動フローのフロー・テストを実行します。実行の終了後、テストはApex単体テストのようにロールバックされるため、組織のライブ・データは元の状態に保たれます。
組織データをテストに使用すると、誰でもそのデータを変更し、テストが失敗する可能性があります。Sandbox と本番ではレコード ID が異なるため、ある環境で合格したテストを別の環境にリリースすると失敗する可能性があります。Apex テストの設定で実行時にデータを作成するのと同じように、テストの実行時に分離されたテストデータを作成します。フローテストデータは一貫性が維持されるため、複数の環境にリリースできます。
-
@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メソッドで、すべての主要なフィールドに入力します。重要な項目は、後の手順で選択します。 - Flow Builder で、フローを開いて [テストを表示] をクリックし、[作成] をクリックするか、既存のフローテストを編集します。
-
[Test Setup (設定のテスト)] をクリックし、[Run from Data Silo (データサイロから実行)] を選択して、作成した Apex テストクラスを選択します。
フローテストでは、データソースとして Apex クラスが使用されます。このテストでは、ロールバックで分離されたテストデータが使用されるため、組織データは変更されません。
-
テストで使用する各オブジェクトの主要な項目を選択します。
分離されたオブジェクトの外部キー項目は、分離されたテストデータの一意のレコードを識別します。テストレコード ID は毎回実行後に変更されるため、これらの主要な項目はテスト実行時に入力レコードを分離されたテストデータと照合します。たとえば、
Phoneフィールドを取引先レコードを識別するキーフィールドとして使用します。
- 分離されたテストデータの入力変数値を設定します。
-
アサーションやその他のテストの詳細を設定し、フローテストを保存して実行します。
フローテストは、ライブ組織のデータではなく、データサイロ内の分離されたテストデータに対して実行されます。
エラー処理のためのフローのテスト
フローテストで、計画どおりにいかないフローパスを意図的にテストするネガティブアサーションを設定し、フローでエラーが正常に処理されることを確認します。
レコードトリガーフロー、自動起動フロー、または Data Cloud トリガーフローで、[レコードを作成]、[レコードを更新]、[レコードを削除]、および [アクション] 要素のネガティブアサーションを設定します。
- フローテストを作成します。
- アサーションを設定するときに、レコードの作成、レコードの更新、レコードの削除、またはアクション要素のリソースを選択します。
- [演算子] で、[エラーあり] を選択します。
- 値を選択し、フローテストを保存します。
顧客データを処理するフローについて考えてみます。必須項目の欠落など、無効な入力がフローで処理されていることを確認するためのテストを作成できます。
フローテスト結果の解釈
フローテスト実行の完了後にフローテストの結果を解釈する方法を理解します。
フローをテストした後に結果を解釈し、さまざまな条件下でフローが意図したとおりに動作することを確認することをお勧めします。分離されたテストデータを使用する場合、テスト実行の詳細に同じアサーションとパス情報が表示されます。テストは、組織データではなく、分離されたテストデータに対して実行されました。
-
テスト実行の詳細を表示するには、[
] をクリックし、[Run Test and View Details (テスト実行と詳細の表示)] を選択します。
[Test Run Details (テスト実行の詳細)] の [All Details (すべて詳細)] タブには、テスト実行全体の結果が表示されます。フローが失敗した場合は、フローエラーをトラブルシューティングします。 -
フローテストの状況を確認するには、[テスト実行の詳細] で [アサーション] タブを選択し、各アサーションを展開します。
Flow Builder では、テスト実行のパスが強調表示されます (1)。[Test Run Details (テスト実行の詳細)] では、各アサーションが探している条件 (2)、それらの条件がチェックされた値 (括弧内) (3)、そのアサーションに定義したカスタムエラーメッセージ (4) が示されます。 -
失敗したフローテストを解釈します。
-
失敗したアサーションの条件と条件評価を確認します。
この例では、[優先度を高に設定] 要素で、失敗したアサーションは [$Record’s Priority ($Record の優先度)] 項目の値を [高] に設定します。
-
値を変更するには、要素をクリックし、[要素を編集] をクリックします。
この例では、失敗したアサーションを修正するには、[優先度を高に設定] 要素を編集し、$Record の優先度を [高] に変更します。
- フローを保存し、失敗したフローテストを実行します。
-
失敗したアサーションの条件と条件評価を確認します。
このテストでは、オブジェクトが更新され、フローが即時実行パスを辿る場合に、フローを検証します。
テストには、トリガーレコードの初期値および更新値を設定する項目が含まれます。このレコードは、フローの実行をトリガーするレコードと同じレコードです。テストでは、テストでのみ使用されるレコードのコピーが作成されます。このレコードはデータベースには保存されません。
テストでは、各アサーションを評価して、フローが期待どおりに実行されていることを検証します。テストで評価できるのは、フロー要素が実行されたかどうかと、フローリソース値が期待どおりに設定されているかどうかのみです。このテストでは、Salesforce データベースの既存のデータと、ルールや制限などのカスタマイズに基づいてフローが評価されます。
フローにテストが含まれる場合、[テスト] リストビューには、フローのすべてのテストと、関連付けられたテスト結果が表示されます。
テストの実行が完了すると、[テスト実行の詳細] には各アサーションがどのように評価されたかが表示されます。条件が false に評価されると、アサーションとテストは失敗します。すべてのアサーションが合格すると、テストは合格します。
[すべての詳細] タブには、テスト実行全体の結果が表示されます。アサーションはテスト実行の終了時に評価されます。
フローが期待どおりに機能することを確信できたら、テストしたバージョンを有効化して、フローを配布します。
フローテストの制限
フローごとに作成できるテストの数とフローテストの制限について説明します。
制限
フローあたりのテストの最大数は 200 です。
制限事項
- フローテストは、レコードトリガーフロー、自動起動フロー、Data Cloud トリガーフローで使用できます。
- 分離されたテストデータは、レコードトリガーフローと自動起動フローで使用できます。
- 自動起動フローのフローテストは、コールアウト要素または待機要素を含むフローではサポートされません。
- フローテストではレコードの削除時に実行されるフローはサポートされません。
- フローテストでは、非同期に実行されるフローパスはサポートされません。
- フローテストは、フローテストカバー率要件には含まれません。
- テストデータの設定では数式はサポートされていません。固定値を使用します。たとえば、日付項目が相対日付である
Todayに設定されていることを検証するフローテストでは、テストの実行前に項目を手動で更新する必要があります。たとえば、2022 年 8 月 3 日にテストを作成して実行すると、日付は相対日付であるAugust 3, 2022に設定されます。同じテストを明日実行しても、日付項目の値はAugust 3, 2022のままです。
