第3章 テストシナリオ
Red Hat Decision Manager のテストシナリオでは、ビジネスルールを実稼働環境にデプロイする前に、(ルールベースのテストシナリオの場合) ビジネスルールの機能とデータの妥当性、および (DMN ベースのテストシナリオの場合) DMN モデルを検証できます。このテストシナリオでは、プロジェクトのデータを使用して、指定した条件と、定義した 1 つ以上のビジネスルールで想定される結果を設定できます。シナリオを実行する際は、想定した結果と、ルールのインスタンスから実際に得られた結果を比較します。想定される結果が実際の結果と一致すると、テストは成功します。想定された結果が実際の結果と一致しないと、テストは失敗します。
テストシナリオデザイナーでは、.scesim
ファイルからすべてのシナリオを一度に実行できますが、レガシーのテストシナリオデザイナーでは、一度に 1 つずつ、またはグループ単位での実行になります。グループで実行する場合は、1 つのパッケージに含まれるすべてのシナリオが対象になります。テストシナリオは独立しているため、別のシナリオに影響を及ぼしたり修正したりすることはありません。テストシナリオは、Business Central のプロジェクト開発時にいつでも実行できます。テストシナリオを実行するために、デシジョンサービスをコンパイルまたはデプロイする必要はありません。
別のパッケージからのデータオブジェクトは、テストシナリオと同じプロジェクトパッケージにインポートできます。同じパッケージに含まれるアセットはデフォルトでインポートされます。必要なデータオブジェクトとテストシナリオを作成したら、テストシナリオデザイナーの Data Objects タブを使用して、必要なデータオブジェクトがすべてリストされていることを検証するか、アイテムを追加 して既存のデータオブジェクトをインポートします。
3.1. テストシナリオを使用した交通違反のテスト
Business Central のテストシナリオデザイナーを使用して DMN 意思決定要件図 (DRD) をテストし、交通違反プロジェクトのデシジョン論理を定義します。
図3.1 交通違反の例のテストシナリオ
前提条件
- Business Central で交通違反プロジェクトを作成している。
手順
- traffic-violation プロジェクトのホーム画面で Add Asset をクリックして Add Asset 画面を開きます。
Test Scenario をクリックして Create new Test Scenario ダイアログを開きます。
-
Test Scenario フィールドに
Violation Scenarios
と入力します。 -
Package リストから
org.kie.example.traffic.traffic_violations
を選択します。 -
Source type で
DMN
を選択します。 - Choose DMN asset リストから DMN アセットへのパスを選択します。
- Ok をクリックして、Test Scenarios デザイナーで Violation Scenarios テストシナリオを開きます。
-
Test Scenario フィールドに
- Driver 列サブヘッダー下で、State、City、Age、および Name の値のセルを右クリックし、コンテキストメニューから Delete column を選択してそれらを削除します。
- Violation 列サブヘッダー下で Date と Code の値のセルを右クリックし、Delete column を選択してそれらを削除します。
以下の情報をテストシナリオの 1 行目に入力します。
-
Scenario description:
Above speed limit: 10km/h and 30 km/h
-
Points (Given 列ヘッダー下):
10
-
Type:
"speed"
-
Speed Limit:
100
-
Actual Speed:
120
-
Points (Expect コラムヘッダー下):
3
-
Amount:
500
Should the driver be suspended?:
"No"
1 行目を右クリックし、Insert row below を選択して新たな行を追加します。
-
Scenario description:
以下の情報をテストシナリオの 2 行目に入力します。
-
Scenario description:
Above speed limit: more than 30 km/h
-
Points (Given 列ヘッダー下):
10
-
Type:
"speed"
-
Speed Limit:
100
-
Actual Speed:
150
-
Points (Expect コラムヘッダー下):
7
-
Amount:
1000
Should the driver be suspended?:
"No"
2 行目を右クリックし、Insert row below を選択して新たな行を追加します。
-
Scenario description:
以下の情報をテストシナリオの 3 行目に入力します。
-
Scenario description:
Parking violation
-
Points (Given 列ヘッダー下):
10
-
Type:
"parking"
-
Speed Limit:
-
-
Actual Speed:
-
-
Points (Expect コラムヘッダー下):
1
-
Amount:
100
Should the driver be suspended?:
"No"
3 行目を右クリックし、Insert row below を選択して新たな行を追加します。
-
Scenario description:
以下の情報をテストシナリオの 4 行目に入力します。
-
Scenario description:
DUI violation
-
Points (Given 列ヘッダー下):
10
-
Type:
"driving under the influence"
- Speed Limit: 空白のまま
- Actual Speed: 空白のまま
-
Points (Expect コラムヘッダー下):
5
-
Amount:
1000
Should the driver be suspended?:
"No"
4 行目を右クリックし、Insert row below を選択して新たな行を追加します。
-
Scenario description:
以下の情報をテストシナリオの 5 行目に入力します。
-
Scenario description:
Driver suspended
-
Points (Given 列ヘッダー下):
15
-
Type:
"speed"
-
Speed Limit:
100
-
Actual Speed:
140
-
Points (Expect コラムヘッダー下):
7
-
Amount:
1000
-
Should the driver be suspended?:
"Yes"
-
Scenario description:
- Save をクリックし、Confirm Save ダイアログボックスで Save を再度クリックします。
再生ボタンをクリックして、テストシナリオが合格するかどうかを確認します。
図3.2 交通違反の例のテストシナリオ実行結果
失敗した場合は、エラーを修正してサイドテストシナリオを実行します。