第77章 Business Central でのテストシナリオ (レガシー) デザイナー
Red Hat Process Automation Manager は現在、新規の テストシナリオ デザイナーと以前の テストシナリオ (レガシー) デザイナーの両方をサポートします。デフォルトのデザイナー、新規のテストシナリオデザイナーで、ルールと DMN モデルのテストをサポートし、テストシナリオの全体的な使用感が改善されています。必要に応じて、レガシーのテストシナリオをそのまま使用することができますが、ルールベースのテストシナリオしかサポートされません。
77.1. テストシナリオ (レガシー) の作成および実行
ビジネスルールデータをデプロイする前に、Business Central にテストシナリオを作成して、その機能をテストできます。基本的なテストシナリオには、少なくても以下のデータが必要です。
- 関連するデータオブジェクト
- GIVEN (指定した) ファクト
- EXPECT (想定される) 結果
レガシーのテストシナリオデザイナーは、LocalDate
の java 組み込みデータタイプをサポートします。LocalDate
の java 組み込みデータタイプでは dd-mmm-yyyy
の日付形式を使用できます。たとえば、17-Oct-2020
の日付形式で設定できます。
テストシナリオでは、このデータを使用し、定義したファクトに基づいて、そのルールインスタンスに対して想定した結果と実際の結果の妥当性を検証できます。CALL METHOD と利用可能な globals をテストシナリオに追加することもできますが、これは必須ではありません。
手順
-
Business Central で、Menu
Design Projects に移動して、プロジェクト名をクリックします。 -
Add Asset
Test Scenarios (Legacy) の順にクリックします。 - テストシナリオ 名を入力し、適切な パッケージ を選択します。指定するパッケージは、必要なルールアセットが割り当てられている、またはこれから割り当てるパッケージと同じにする必要があります。データオブジェクトは、パッケージからアセットのデザイナーにインポートできます。
OK をクリックして、テストシナリオを作成します。
Project Explorer の Test Scenarios パネルに、新しいテストシナリオが追加されました。
- Data Objects タブをクリックして、テストするルールに必要なデータオブジェクトがすべてリストされていることを検証します。追加されていない場合は、New item をクリックして別のパッケージから必要なデータオブジェクトをインポートするか、パッケージに データオブジェクトを作成 します。
データオブジェクトをすべて配置したら、テストシナリオデザイナーの Model タブに戻り、利用可能なデータオブジェクトに基づいたシナリオに、GIVEN データと EXPECT データを定義します。
図77.1 テストシナリオデザイナー
GIVEN セクションには、テストする入力ファクトを定義します。たとえば、プロジェクトの
Underage
ルールで、ローン申請者の年齢が 21 歳未満であれば承認しない場合は、テストシナリオの GIVEN ファクトで、Applicant
のage
に、21 より小さい数字に設定する必要があります。EXPECT セクションには、GIVEN に入力したファクトに基づいて想定される結果を定義します。つまり、入力ファクトを GIVEN (指定) すると、その他のファクトが有効であること、またはルール全体が有効であることを EXPECT (想定) します。たとえば、このシナリオで、申請者が 21 歳未満の場合に 想定される 結果は、(申請者の年齢が基準を満たさないため)
LoanApplication
のapproved
がfalse
になるか、Underage
ルール全体が有効になります。必要に応じて、CALL METHOD と globals をテストシナリオに追加します。
- CALL METHOD: ルールの実行を開始する際に、別のファクトからメソッドを呼び出します。CALL METHOD をクリックし、ファクトを選択し、 をクリックして呼び出すメソッドを選択します。(可能な場合は) プロジェクトに対してインポートした Java ライブラリー、または JAR から (ArrayList のメソッドなどの) Java クラスメソッドを呼び出すことができます。
- globals: テストシナリオで妥当性を確認するプロジェクトにグローバル変数を追加します。globals をクリックして、妥当性を確認する変数を選択し、テストシナリオデザイナーでグローバル名をクリックして、グローバル変数に適用するフィールド値を定義します。グローバル変数が利用できない場合は、Business Central に新しいアセットとして作成する必要があります。グローバル変数はデシジョンエンジンに表示されますが、ファクトに対するオブジェクトとは異なるオブジェクトの名前です。グローバルのオブジェクトを変更しても、ルールの再評価は行われません。
- 必要に応じて、テストシナリオデザイナーの下部で More をクリックし、同じシナリオファイルに別のデータブロックを追加します。
- シナリオに対して、GIVEN、EXPECT、その他のデータをすべて定義したら、テストシナリオデザイナーで Save をクリックして、設定した内容を保存します。
右上の Run scenario をクリックして、この
.scenario
ファイルを実行します。プロジェクトパッケージに.scenario
ファイルが複数ある場合にすべて保存している場合は、Run all scenarios をクリックして、すべてのシナリオを実行します。Run scenario オプションでは、個々の.scenario
ファイルを保存する必要はありませんが、Run all scenarios オプションを使用する場合は、すべての.scenario
ファイルを保存する必要があります。テストに失敗したら、ウィンドウ下部の Alerts メッセージに記載されている問題に対応し、シナリオの全コンポーネントを見直し、エラーが表示されなくなるまで妥当性確認を行います。
- 変更がすべて終了したら、テストシナリオデザイナーで Save をクリックして、設定した内容を保存します。
77.1.1. テストシナリオ (レガシー) への GIVEN ファクトの追加
GIVEN セクションには、テストする入力ファクトを定義します。たとえば、プロジェクトの Underage
ルールで、ローン申請者の年齢が 21 歳未満であれば承認しない場合は、テストシナリオの GIVEN ファクトで、Applicant
の age
に、21 より小さい数字に設定する必要があります。
前提条件
- テストシナリオに必要なデータオブジェクトがすべて作成、またはインポートされていて、テストシナリオ (レガシー) デザイナーの Data Objects タブにリストされている。
手順
テストシナリオ (レガシー) デザイナーで、GIVEN をクリックして、利用可能なファクトが含まれる New input ウィンドウを開きます。
図77.2 テストシナリオへの GIVEN 入力の追加
リストには以下のオプションが含まれます。表示されるオプションは、テストシナリオデザイナーの Data Objects タブで利用可能なデータオブジェクトによって異なります。
- Insert a new fact: ファクトを追加して、フィールド値を修正します。Fact name にファクトの変数を入力します。
- Modify an existing fact: 別のファクトが追加される場合に限り表示されます。 これを使用して、シナリオの実行間でデシジョンエンジンで変更される前に挿入されたファクトを指定します。
- Delete an existing fact: 別のファクトが追加される場合に限り表示されます。 これを使用して、シナリオの実行間でデシジョンエンジンで削除される前に挿入されたファクトを指定します。
- Activate rule flow group: そのグループ内にあるすべてのルールをテストできるように、有効にするルールフローグループを指定します。
-
目的の入力オプションに対するファクトを選択し、Add をクリックします。たとえば、Insert a new fact: に Applicant を設定し、Fact name に対して
a
またはapp
、もしくは別の変数を入力します。 テストシナリオデザイナーのファクトをクリックし、修正するフィールドを選択します。
図77.3 ファクトフィールドの修正
編集アイコン ( ) をクリックし、以下のフィールド値を選択します。
- Literal value: 特定のリテラル値を入力するオープンフィールドを作成します。
- Bound variable: このフィールドの値を、選択した変数にバインドするファクトに設定します。フィールドタイプが、バインドした変数型に一致する必要があります。
- Create new fact: 新しいファクトを作成し、そのファクトを親ファクトのフィールド値として割り当てます。テストシナリオデザイナーで子ファクトをクリックし、同じようにフィールド値を割り当てるか、別のファクトをネストできます。
- 続いて、シナリオに別の GIVEN 入力データを追加し、テストシナリオデザイナーで Save をクリックして、設定した内容を保存します。
77.1.2. テストシナリオ (レガシー) への EXPECT 結果の追加
EXPECT セクションには、GIVEN に入力したファクトに基づいて想定される結果を定義します。つまり、入力ファクトを GIVEN (指定) すると、その他のファクトが有効であること、またはルール全体が有効であることを EXPECT (想定) します。たとえば、このシナリオで、申請者が 21 歳未満の場合に 想定される 結果は、(申請者の年齢が基準を満たさないため) LoanApplication
の approved
が false
になるか、Underage
ルール全体が有効になります。
前提条件
- テストシナリオに必要なデータオブジェクトがすべて作成、またはインポートされていて、テストシナリオ (レガシー) デザイナーの Data Objects タブにリストされている。
手順
テストシナリオ (レガシー) デザイナーで、EXPECT をクリックして、利用可能なファクトが含まれる New expectation ウィンドウを開きます。
図77.4 テストシナリオへの EXPECT 結果の追加
リストには以下のオプションが含まれます。表示されるオプションは、GIVEN セクションのデータや、テストシナリオデザイナーの Data Objects タブで利用可能なデータオブジェクトによって異なります。
- Rule: プロジェクトに、GIVEN に指定した内容に対して有効になることが想定される特定のルールを指定します。ルールの名前を入力するか、ルールリストから選択します。次に、テストシナリオデザイナーで、ルールが有効になるべき回数を指定します。
- Fact value: ファクトを選択し、GIVEN セクションに定義したファクトに対して有効になることが想定される値を定義します。ファクトは、GIVEN の入力に対して事前に定義した Fact name でリストされます。
- Any fact that matches: GIVEN に指定した内容に対して、指定した値を持つファクトが最低 1 つ存在するかどうかの妥当性を確認します。
-
(Fact value:
application
などの) 期待される結果のファクトを選択し、Add または OK を選択します。 テストシナリオデザイナーでファクトをクリックし、追加または修正するフィールドを選択します。
図77.5 ファクトフィールドの修正
フィールド値に、GIVEN に指定した内容に対して、有効になると想定される値 (
approved
|equals
|false
など) を設定します。注記レガシーのテストシナリオデザイナーでは、EXPECT フィールドに
["value1", "value2"]
の文字列形式を使用して文字列の一覧を検証できます。- 続いて、シナリオに別の EXPECT 入力データを追加し、テストシナリオデザイナーで Save をクリックして、設定内容を保存します。
シナリオに GIVEN、EXPECT、その他のデータを定義して保存したら、右上の Run scenario をクリックしてこの
.scenario
ファイルを実行するか、(複数の場合は) Run all scenarios をクリックして、プロジェクトパッケージに保存したすべての.scenario
を実行します。Run scenario オプションでは、個々の.scenario
ファイルを保存する必要はありませんが、Run all scenarios オプションを使用する場合は、すべての.scenario
ファイルを保存する必要があります。テストに失敗したら、ウィンドウ下部の Alerts メッセージに記載されている問題に対応し、シナリオの全コンポーネントを見直し、エラーが表示されなくなるまで妥当性確認を行います。
- 変更がすべて終了したら、テストシナリオデザイナーで Save をクリックして、設定した内容を保存します。