第 77 章 业务中心测试场景(传统)
Red Hat Decision Manager 目前支持新的 测试场景 设计人员和之前的 测试方案(Legacy) 设计人员。默认设计器是新的测试场景设计器,它支持测试规则和 DMN 模型,并提供测试场景增强的整体用户体验。如果需要,您可以继续使用旧的测试场景程序,该设计只支持基于规则的测试场景。
77.1. 创建并运行测试场景(传统)
您可以在 Business Central 中创建测试场景,在部署前测试商业规则数据的功能。基本测试场景必须至少包含以下数据:
- 相关数据对象
- GIVEN facts
- EXPECT 结果
传统的测试场景设计器支持 LocalDate
java 内置数据类型。您可以使用 dd-mmm-
yyy date 格式中的 LocalDate
java 内置数据类型。例如,您可以使用 17-Oct-2020
日期格式设定此设置。
通过这些数据,测试场景可以根据定义的事实验证该规则实例的预期和实际结果。您还可以将 CALL METHOD 和任何可用的 全局 添加到测试场景,但这些场景设置是可选的。
流程
-
在 Business Central 中,前往 Menu
Design Projects 并点项目名称。 -
点 Add Asset
Test Scenarios(Legacy)。 - 输入信息 性 Test Scenario 名称并选择相应的 软件包。您指定的软件包必须是分配或分配必要规则资产的同一软件包。您可以将任何软件包中的数据对象导入到资产的设计程序中。
点 Ok 创建测试场景。
新的测试场景现在列在 Project Explorer 的 Test Scenarios 面板中,
- 点 Data Objects 选项卡,验证是否列出了您要测试的规则所需的所有数据对象。如果没有,请单击 New item 以从其他软件包导入所需的数据对象,或者在您的软件包中创建 数据对象。
在所有数据对象都就位后,返回测试场景设计器的 Model 选项卡,并根据可用数据对象定义场景的 GIVEN 和 EXPECT 数据。
图 77.1. 测试场景设计器
GIVEN 部分定义测试的输入事实。例如,如果项目的下限规则拒绝了 21 日期为 applicants 的 applicants,那么测试情景中的 GIVEN 事实可能是设置为小于 21 的
年龄
。EXPECT 部分根据 GIVEN 输入事实定义预期的结果。也就是说,GIVEN 输入事实 EXPECT 其他事实是有效的或整个要激活的规则。例如,在情景中,在 21 年龄下给定应用程序的事实将 EXPECT 结果为
LoanApplication
,并带有approved
set 为false
(因为相关不足导致的不足),也可以是整体激活Underage
规则。可选:将 CALL METHOD 和任何 全局 添加到测试场景:
-
CALL METHOD: 使用这个方法在发起规则执行时从另一事实调用方法。点 CALL METHOD,选择一个事实,然后点击
来选择要调用的方法。您可以从 Java 库或通过为项目导入的 JAR 调用任何 Java 类方法(如 ArrayList 中的方法)。
- globals: 使用它来在测试场景中验证的项目中添加您要验证的任何全局变量。单击 globals 以选择要验证的变量,然后在测试场景设计器中点击全局名称并定义要应用到全局变量的字段值。如果没有可用的全局变量,则必须将其创建为 Business Central 中的新资产。全局变量命名对象,它们对决策引擎可见,但与对象与事实上的对象不同。全局对象中的更改不会触发规则重新评估。
-
CALL METHOD: 使用这个方法在发起规则执行时从另一事实调用方法。点 CALL METHOD,选择一个事实,然后点击
- 点测试场景设计器底部的更多内容,根据需要将其他数据块添加到相同的场景文件中。
- 定义了所有 GIVEN、EXPECT 和其他用于情境数据后,点击测试场景设计器中的 Save 来保存您的工作。
点击右上角的 Run scenario 以运行此
.scenario
文件,或者点击 Run all scenarios 运行项目软件包中的所有已保存的.scenario
文件(如果有多项)。虽然 Run scenario 选项不需要保存单独的.scenario
文件,但 运行所有场景 选项都需要保存所有.scenario
文件。如果测试失败,解决窗口底部的 Alerts 消息中描述的任何问题,查看该方案中的所有组件,然后再次尝试验证该场景直到情况通过为止。
- 在所有更改后,单击测试场景设计器中的 Save,以保存您的作业。
77.1.1. 在测试场景中添加 GIVEN 事实(传统)
GIVEN 部分定义测试的输入事实。例如,如果项目的下限规则拒绝了 21 日期为 applicants 的 applicants,那么测试情景中的 GIVEN 事实可能是设置为小于 21 的 年龄
。
先决条件
- 您的测试场景需要的所有数据对象已创建或导入,并列在 Test Scenarios(Legacy) 设计人员 的数据对象 选项卡中。
流程
在 Test Scenarios(Legacy) designer 中,单击 GIVEN 以通过可用事实打开 New input 窗口。
图 77.2. 在测试场景中添加 GIVEN 输入
该列表包括以下选项,具体根据测试场景设计器 的数据对象 选项卡中的数据对象:
- 插入新事实: 使用这个事实并修改其字段值。输入事实的变量 作为事实 名称。
- 修改现有事实: (仅在添加另一事实后应用)。 使用此选项指定之前插入的事实,以便在执行情景期间在决策引擎中修改。
- 删除现有事实: (仅在添加另一事实后应用)。 使用此选项指定之前插入的事实,以便在执行场景之间的决策引擎中删除。
- 激活规则流组: 使用这个指定要激活的规则流组,以便可以测试该组中的所有规则。
-
为所需输入选项选择事实,然后单击添加。例如,将 Insert a new facts: to Applicant 设置为
Applica
nt,并为 事实名称 输入或任何其他变量。 单击测试场景设计器中的事实,再选择要修改的字段。
图 77.3. 修改 fact 字段
点击编辑图标(
)并从以下字段值中选择:
- 字面值: 创建一个打开字段,在其中输入一个特定字面值。
- bound variable: 将字段的值设置为绑定到所选变量的事实。字段类型必须与 bound 变量类型匹配。
- 创建新事实: 使您能够创建新事实并将其分配为父事实的字段值。然后,您可以单击测试场景设计中的子事实,并同样地分配字段值或嵌套其他事实。
- 继续为场景添加任何其他 GIVEN 输入数据,并在测试场景器中点击 Save 来保存您的工作。
77.1.2. 添加 EXPECT 结果会导致测试场景(传统)
EXPECT 部分根据 GIVEN 输入事实定义预期的结果。也就是说,GIVEN 输入事实 EXPECT 其他指定的事实是有效的或整个要激活的规则。例如,在情景中,在 21 年龄下给定应用程序的事实将 EXPECT 结果为 LoanApplication
,并带有 approved
set 为 false
(因为相关不足导致的不足),也可以是整体激活 Underage
规则。
先决条件
- 您的测试场景需要的所有数据对象已创建或导入,并列在 Test Scenarios(Legacy) 设计人员 的数据对象 选项卡中。
流程
在 Test Scenarios(Legacy) designer 中,单击 EXPECT 以打开 New expectation 窗口及可用事实。
图 77.4. 在测试场景中添加 EXPECT 结果
这个列表包括以下选项,具体取决于 GIVEN 部分中的数据,以及测试场景设计器的 Data Objects 选项卡中可用的数据对象:
- rule : 使用这个方法,在项目中指定预期作为 GIVEN 输入时应激活的特定规则。键入应激活的规则的名称,或者从规则列表中选择,然后在测试场景设计器中指定应激活规则的次数。
- 事实值: 使用它来选择事实,并为它定义值,以作为 GIVEN 部分中定义的事实。事实由之前为 GIVEN 输入定义的事实 名称 列出。
- 匹配的任何事实: 使用此项来验证由于 GIVEN 输入而至少存在具有指定值的事实。
-
为所需的预期(如 事实值:
应用程序
)选择事实,然后单击添加 或 确定。 单击测试场景设计器中的事实,再选择要添加的字段并进行修改。
图 77.5. 修改 fact 字段
将字段值设置为当 GIVEN 输入后(如
已批准
|等于
|false
)后,应该有效。注意在旧的测试场景设计器中,您可以在 EXPECT 字段中使用
["value1", "value2"]
字符串格式来验证字符串列表。- 继续为场景添加任何其他 EXPECT 输入数据,并在测试场景器中点击 Save 来保存您的工作。
在定义并保存了所有 GIVEN、EXPECT 和其他情境数据后,点击右上角的 Run scenario 以运行此
.scenario
文件,或者点击 Run all scenarios 在项目软件包中运行所有已保存的.scenario
文件(如果存在多个)。虽然 Run scenario 选项不需要保存单独的.scenario
文件,但 运行所有场景 选项都需要保存所有.scenario
文件。如果测试失败,解决窗口底部的 Alerts 消息中描述的任何问题,查看该方案中的所有组件,然后再次尝试验证该场景直到情况通过为止。
- 在所有更改后,单击测试场景设计器中的 Save,以保存您的作业。