19.知识包测试

简介

我们知道,在URule Pro当中定义好各种类型的规则文件后,需要将要调用的规则文件通过规则项目的“知识包”节点将文件打包后才可以被业务系统调用。规则包在调用前需要对定义好的知识包进行各种测试,在URule Pro中就提供了两种不同类型的针对知识包的测试方法,分别是“快速测试”和“仿真测试”,如下图所示:

所谓的快速测试,可以在弹出的窗口中输入相关业务数据后提交到后台即可对当前知识包进行的测试,选中一个知识包,点击工具栏上的“快速测试”按钮,就可以打开如下图所示的测试窗口。

在这个快速测试的窗口分左右两个部分,左边部分是当前知识包中用到的所有的变量及参数信息,点击具体的变量及参数名后就会在窗口右边显示具体的变量值及参数值。

我们可以在这里把规则需要的相关输入数据(变量或参数)填入右边窗口中,然后点击工具栏上的“测试决策包”或“测试决策流”按钮即可对当前知识包进行快速测试。知识包运行结果里有对当前变量或参数进行赋值的话,那么就可以在测试后通过个这窗口看到值回写后的效果。

在进行快速测试时,如果当前知识包中没有规则流,那么就可以点击工具栏上的“测试决策包”按钮来对当前知识包进行测试;如果当前知识包里有规则流,那么则需要点击工具栏上的“测试决策流”按钮,在弹出的窗口里选择要测试的规则流即可。

可以看到,快速测试非常的简单,这里不再赘述。在本小节当中将重点介绍对知识包的仿真测试功能,仿真测试是一个基于方案的、复杂的、可生成测试报告的、批量测试功能。

仿真测试

选中一个知识包,点击工具栏上的“仿真测试”按钮,就可以进入针对当前知识包的仿真测试页面,如下图所示:

在这个页面中,可以通过工具栏上的“添加新的测试方案”按钮为当前知识包添加若干个仿真测试方案,点击该按钮后效果如下图所示:

对于一个仿真测试方案,需要有一个名称及描述信息,接下来可以点击“Excel模版配置与下载”按钮,对当前知识包的输入与输出数据进行配置,如下图所示:

如上图所示,在这个窗口中,有两大块内容,分别是输入数据定义和输出数据定义,这两块内容都把当前知识包中采用的变量及参数罗列出来,对于我们来说只需要选择相关的参数及变量即可。

在输出数据定义里,可以看到每一项后面都有一个比较操作符选择列表,它的作用是用来将Excel里输入的预期结果与知识包里运行结果进行比较的,从而判断我们在Excel里的定义预期结果是否正确,从而达到仿真测试目的。

勾选好输入和输入字段后就可以点击窗口下面的“下载Excel模版”按钮,下载后的Excel有两个Sheet页,分别显示输入和输出数据,我们需要做的就是填写对应的数据就好,下图向我们展示了下载后的Excel模版的输入数据页与输出数据页。

从截图上可以看出,生成的Excel严格按照我们配置的字段生成。

在“场景”这个sheet页中,定义了所有的输入数据信息,对每条输入数据都需要定义一个“方案标识”与“描述”信息。一般来说“方案标识”我们直接采用数字标识即可,要保证每条“方案标识”的唯一性;而“描述”则是一段文字 描述,可以根据这条数据定义情况加以描述;这两个字段后面就是我们定义的输入数据。

在“预期结果”sheet页中,定义了知识包计算完成后某些字段的预期结果。可以看到每条预期结果也有一个“方案标识”字段,这个“方案标识”字段与“场景”这个sheet页 中“方案标识”字段一一对应,也就是说只有“场景”sheet页里定义好的“方案标识”这里才可以使用,不能随意定义。下图中是个定义了三条场景数据的Excel模版:

在上图中,要特别注意红框标记的部分,在这里“客户”对象“拥有的卡”属性实际上是一个List集合,所有这里在Excel中对于这种类型的数据定义采用的是JSON的格式,对于URule Pro来说,复杂对象的输入可以采用标准的JSON格式,URule Pro会自动进行解析并填充。上图中List 类型的JSON内容如下所示:

[{"name":"卡","fields":[{"name":"no","value":"21412234"},{"name":"name","value":"卡名称"},{"name":"limit","value":20000}]}]

在这段List类型的JSON表达式中,因为要表达的是一个List集合类型的数据,所以需要用[]将内容包裹,然后里面的每个对象都必须要有一个名为“name”的属性,比如这里的name属性值为“卡”,需要注意的是“卡”这个对象必须要在当前知识包引用的变量库里已定义好,否则会产生错误;然后对于“卡”对象的属性要通过名为“fields”的 属性名指定;每个属性名必须要有"name"和"value"两个属性,分别用于标识属性名和该属性的值。

JSON的每个属性名都需要有双引号包裹,这是JSON格式规范,这点很关键,否则系统将无法解析。

我们知道了List类型值通过JSON填充的方式,那如果对应属性是单个对象又该如何处理呢?其实看看List类型的JSON我们就应该明白了,把List类型JSON外面[]去掉,里面就是一个个的对象, 拿出其中一个对象,就是我们需要的单个对象的JSON格式,比如上面的“卡”对象:

{"name":"卡","fields":[{"name":"no","value":"21412234"},{"name":"name","value":"卡名称"},{"name":"limit","value":20000}]}

“场景”这个sheet页定义完后,就可以来看看“预期结果”sheet页定义情况,如下图:

可以看到,预期结果的数据定义中,“方案标识”字段完全与“场景”数据定义的一致,同时第2个方案“贷款信息”对象的两个字段都没有定义值,那么就表示规则运行完成后对这两个字段的预期结果为null。

Excel模版定义完成后,就可以在“测试方案配置”窗口中将其上传并保存,如下图:

配置好测试方案后,就可以点击方案记录上的测试按钮,对当前方案进行测试,如下图:

在弹出的窗口中点击“运行”按钮,运行完成后即可查看测试报告,如下图所示:

点击每条报告的“明细”链接,可查看测试结果的详情,如下图:

从测试报告中可以看到每条场景的用时、与预期结果的匹配情况以及其它明细信息,如果需要我们可以将这个报告的HTML直接保存到本地随时查看。

results matching ""

    No results matching ""