测试目的
本文档为对 IBM 公司、RedHat 公司、旗正公司的规则产品进行综合评估而制定的测试方案。各家厂商需要根据本文档的要求制定各自的方案,测试过程和测试结果需要客观公平的展现各厂商规则产品的能力。
测试情况概述
测试对象
厂商 产品名称
IBM IBM WebSphere ILOG BRMS JRules V7.1.1
RedHat JBoss BRMS Platform 5.1
旗正 VisualRules3.11.2
测试方法
功能测试中采用灰盒测试方法,在验证被测产品对功能点的支持情况后,进一步查看具体的场景设 计和代码,了解其实现机制;同时辅助以检查文档的方式进行产品兼容性和产品文档方面的测试,从而实现对被测产品的整体功能进行多方面的评估和掌握。
性能测试中首先进行代码检查和功能验证,并分别采用构造大量测试数据、使用压力测试工具LoadRunner模拟大批量用户并发等方式,获得被测产品的性能指标。
测试约束
本次测试整体测试约束如下:
所有同类测试都基于相同的测试环境(包括主机、操作系统、数据库等)、测试数据(包括业务规则、租金架构数据、财务预测的Sales数据等);
测试方案适当简化业务过程,重点关注与规则引擎产品直接相关的业务环节;
测试方案在参考实际业务规则的基础上,对业务规则进行了适当规整;
测试报告基于本次被测试软件版本。
另外,针对性能测试,设定了详细测试约束如下:
性能业务场景中使用的数据库结构统一由江苏润和制定;
在进行压力测试时,压力测试场景的负载加载速率由江苏润和统一定制;
进行压力测试时,日志级别都调至最低;
非功能性约束如下:
并发要求要达到20;
数据量在200万~400万之间;
测试场景
按照8000家店的租金结构和Sales,测算3年的租金类型以及变动租金。对各厂商的产品的软件能力、处理能力进行评估。
场景1
并发数为5的时候,计算租金类型。
场景2
并发数为10的时候,计算租金类型。
场景3
并发数为15的时候,计算租金类型。
场景4
并发数为20的时候,计算租金类型。
场景5
并发数为5的时候,计算变动租金。
场景6
并发数为10的时候,计算变动租金。
场景7
并发数为15的时候,计算变动租金。
场景8
并发数为20的时候,计算变动租金。
测试环境
硬件环境
表格 1 硬件环境表
硬件配置
规则引擎、应用服务器 数据库服务器
内存 处理器 磁盘容量 内存 处理器 磁盘容量
16G 2.66GHz * 4 32G 4G 2.66GHz * 4 100G
软件环境
表格 2软件环境表
软件配置
规则引擎、应用服务器 数据库服务器
操作系统 JDK Web服务器 数据库
Windows Server 2008 Standard 64 bit jdk-6u21-windows-x64 jboss-4.2.2.GA SQL Server 2005 SP2
测试拓扑图
本次测试网络环境为测评中心内部以太网,连接速率为 1000Mbps。
功能测试拓扑
采用规则引擎与业务应用集中部署的方式,如下:
图表 1 基本功能测试拓扑图
测试用例
. 表结构
租金架构表(T_FINANCE_FCST_RENT_ALL)
字段中文名 英文名
店号 HYPERION_CODE
业主编号 LEASE_NO
租约开始时间 STARTING_DATE
租约结束时间 ENDING_DATE
变动租金抽成点 BREAK_POINT
月固定租金 FIXED_AMOUNT
AND_OR AND_OR
抽成比例 RENT_PER
COMPUTE_METHOD COMPUTE_METHOD
BILL_CODE BILL_CODE
Sales预测表(T_FINANCE_FCST_AOP_ALL)
字段中文名 英文名
店号 HYPERION_CODE
年 YEAR
1月份 P2
2月份 P3
3月份 P4
4月份 P5
5月份 P6
6月份 P7
7月份 P8
8月份 P9
9月份 P10
10月份 P11
11月份 P12
12月份 P13
规则测试
月租金类型规则
规则粒度:店号、业主编号、月份
1.0 租金架构表.BILL_CODE等于(RENP,CREP) 之一或者两者的组合 则租金类型等于固定;
1.1 租金架构表.BILL_CODE等于(RENS,REDS,PAYA)之一或者三者的组合 则租金类型等于抽成;
1.2 租金架构表.BILL_CODE等于(RENP,CREP) 、(RENS,REDS,PAYA)的组合 并且 租金架构表.AND_OR 等于 AND 则租金类型等于固定+抽成;
1.3 租金架构表.BILL_CODE等于(RENP,CREP) 、(RENS,REDS,PAYA)的组合 并且 租金架构表.AND_OR 等于 OR 则租金类型等于两者取高;
规则粒度:店号、月份
2.0 当规则组1.x计算的结果.租金类型全部一致则月租金类型维持不变;
2.1 当规则组1.x计算的结果.租金类型等于固定、(抽成,固定+抽成)的组合 则 月租金类型等于固定+抽成;
2.2 当规则组1.x计算的结果.租金类型等于固定、两者取高的组合 则 月租金类型等于两者取高;
2.3 当规则组1.x计算的结果.租金类型等于抽成、固定+抽成的组合 则 月租金类型等于固定+抽成;
2.4 当规则组1.x计算的结果.租金类型等于抽成、两者取高的组合 则 月租金类型等于两者取高;
2.5当规则组1.x计算的结果.租金类型等于固定+抽成、两者取高的组合 则 月租金类型等于两者取高;
计算要求
计算2010、2011、2012三年的租金架构
计算结果
月租金类型
店号 年月 租金类型
变动租金计算规则
计算变量
计算中用到的变量
年Sales 规则1.0
年固定租金 规则1.1
Break Point Start 将Break Point 展开成区间段
Break Point End
Max Rent Per 规则1.2
年Sales规则
规则粒度:店号、年份
1.0 相同店号、Sales预测表.Sales根据租金架构的区间段求和;
年固定租金规则
规则粒度:店号、业主编号、年份
1.1相同店号、业主编号的租金架构表.月固定租金根据租金架构的区间段求和;
Max Rent Per规则
规则粒度:店号、业主编号、月份
1.2 相同店号、月份、业主编号 并且租金架构表.COMPUTE_METHOD 等于4 取年Sales大于租金架构表.最大抽成点所对应的租金架构表.抽成比例;
抽成点规则
规则粒度:店号、业主编号、月份
1.3 如果租金架构表.AND_OR 等于OR 并且 租金架构表.抽成点 等于 0 或者 等于NULL 则 租金架构表.抽成点 等于 年固定租金 / 租金架构表.抽成比例;
计算规则
规则粒度:店号、业主编号、月份
1.4相同店号、月份、业主编号 并且租金架构表.COMPUTE_METHOD 等于2 取年Sales大于租金架构表.最大抽成点所对应的记录
变动租金 =(Break Point End - Break Point Start) * Rent Per
如果达到租金架构表.最大抽成点
变动租金 = (年Sales - Break Point Start) * Rent Per;
1.5 相同店号、月份、业主编号 并且租金架构表.COMPUTE_METHOD 等于4 取年Sales大于租金架构表.最大抽成点所对应的记录
变动租金 =(Break Point End - Break Point Start) * Max Rent Per
如果达到租金架构表.最大抽成点
变动租金 = (年Sales - Break Point Start) * Max Rent Per;
计算要求
计算2010、2011、2012三年的变动租金。
计算结果
月租金类型
店号 年月 变动租金
软件能力测评
规则表达能力
功能点
IBM
RedHat 旗正
可视化操作界面 支持(采用嵌入Eclipse的插件编辑) 支持(采用嵌入Eclipse的插件编辑) 支持(采用独立的应用软件编辑)
自然语言方式规 则编辑 支持(采用TRL以及BRL语言编辑,可支持中文) 部分支持(采用DSL语言编辑,中文支持较差) 支持(采用全配置化编辑,中文支持具有优势)
决策表 支持(提供单独的决策表规则配置) 支持(提供在Excel中编辑决策表) 支持(提供3种类型的决策表编辑)
决策树 支持(通过流程配置定制决策树) 不支持 支持(通过规则集实现决策树的控制)
流程图方式编辑
规则 支持(通过流程图方式配置决策树) 支持(通过流程图方式配置Rule Flow) 支持(通过流程图方式配置规则流)
用Office维护规则
支持(通过Excel中直接配置规则) 支持(支持在Excel中配置决策表) 支持(可在Excel中配置规则、决策表、计算表格数据)
IBM采用Eclipse插件来实现规则配置器,采用TRL以及BRL语言来实现规则编辑,BRL支持中文化。
RedHat采用Eclipse插件来实现规则配置器,采用DSL语言来实现规则编辑,对中文支持较差。
旗正采用独立的应用程序来实现规则配置,采用全配置方式来实现规则编辑,对中文支持较好。
接口能力
功能点
IBM
RedHat 旗正
调用外部接口能 力 支持(通过XOM调用外部提供的接口) 支持(支持调用程序语言的接口) 支持(支持调用程序语言的接口)
引擎提供接口类
型 支持(通过API,WS,Servlet) 支持(通过API) 支持(通过API,Rule Socket,Rule Servlet,Rule Soap四种方式调用)
IBM通过XOM来定义外部可以调用的程序类,通过BOM来映射可供调用的XOM,TRL以及BRL可以直接调用BOM中映射的外部程序类。
RedHat可以直接采用DSL语言来调用外部的程序类。
旗正通过对象库映射外部可供调用的程序类,规则可以直接配置可供调用的程序类。
流程控制、嵌套
功能点
IBM
RedHat 旗正
流程控制 支持(通过决策树实现流程控制) 支持(通过规则流实现流程控制) 支持(通过规则集以及优先级进行流程控制,也可采用规则流实现控制)
流程嵌套 支持(在决策树中实现流程控制) 支持(在规则流中实现流程控制) 支持(通过规则集的从属关系,支持嵌套方式的流程控制)
IBM采用决策树来实现流程控制和嵌套。
RedHat采用规则流来实现流程控制和嵌套。
旗正采用规则集以及规则流来实现流程控制和嵌套。
规则调试
功能点
IBM
RedHat 旗正
支持规则逻辑验 证 支持 支持 支持
规则调试和追踪 支持 支持 部分支持(支持轨迹跟踪,不支持调试)
调试日志 支持 支持 支持
IBM提供嵌入Eclipse的规则编辑器,并且采用TRL以及BRL语言来定义规则,可在Eclipse调试以及跟踪规则执行。
RedHat也提供Eclipse的规则编辑器,采用DSL语言来定义规则,可在Eclipse中调试以及跟踪规则执行。
旗正采用独立的应用程序来提供规则编辑器,并且采用全配置式的方式来定义规则,不提供直接的语言编辑功能。因此提供轨迹跟踪以及调试或者日志输出功能来实现追踪的目的。不提供调试功能。
规则包、规则流
功能点
IBM
RedHat 旗正
规则包创建 支持 支持 支持
规则流创建 支持 支持 支持(规则包中嵌入了流程控制)
通过规则流实现 复杂规则 支持 支持 支持(从属关系规则集实现了复杂规则流转)
规则流实现并发 规则 不支持 支持 支持(规则中可以异步调用其他规则包)
规则流实现条件
控制 支持 支持 支持(通过规则集支持条件控制)
规则流中实现循
环控制 支持 支持 支持(通过规则集进行循环控制)
IBM采用决策树的方式来实现流程控制,因此不支持并发规则。
RedHat采用规则流来实现流程的控制,因此规则流的功能全部支持。
旗正采用规则集以及子规则的方式,并且基于顺序执行的规则引擎算法,来实现对流程的控制。
规则包维护
功能点
IBM
RedHat 旗正
客户端工具进行
规则管理 支持 支持 支持
规则注释 支持 支持 支持
冲突规则优先级 支持 支持 支持
单条规则增加 支持 支持 支持
单条规则删除 支持 支持 支持
规则修改和保存 支持 支持 支持
单规则包删除 支持 支持 支持
规则包间迁移 支持 支持 支持
规则存储 支持(文件或数据库) 部分支持
不支持决策树方式 支持(文件或数据库)
规则保存方式 支持(IDE存文件,客户端存数据库) 支持 支持(支持单独文件存储规则包、多文件和目录存储规则以及对象库、数据库存储规则包三种方式)
多规则库管理
支持 支持 支持(通过规则工程实现多规则库的管理)
规则导入导出
功能点
IBM
RedHat 旗正
单条规则导出 支持 不支持 支持
规则包导出 支持 支持 支持
单条规则导入 支持 支持 支持
规则包导入 支持 支持 支持
规则库备份 支持 支持 支持
规则库恢复 支持 支持 支持
部分规则(包)
备份和恢复 支持 支持 支持
测试和仿真
功能点
IBM
RedHat 旗正
仿真功能
支持 支持 支持
审计功能
支持 支持 支持
测试数据维护
支持 支持 支持
KPI
支持 支持 不支持
规则版本
功能点
IBM
RedHat 旗正
规则包版本管理 不支持 支持 支持
规则库版本管理 支持 不支持 支持
版本历史记录 支持 支持 支持
规则版本比较
支持 支持 支持
规则更新部署管理
功能点
IBM
RedHat 旗正
支持规则的热部署 支持 支持 支持
支持规则在线更新 支持 支持 支持
规则服务版本
支持 支持 支持
规则执行监控和报告
支持 支持 支持
多平台支持
支持 支持 支持
.net支持
支持 不支持 支持
权限管理
功能点
IBM
RedHat 旗正
支持权限设置功能 支持 支持 支持
支持权限验证 支持 支持 支持
日志管理
功能点
IBM
RedHat 旗正
支持日志保存设置 部分支持
不支持时间保存设置
置 支持 支持
支持日志的完备性 部分支持
查询日志需要使用
API来实现 支持 支持
支持维护操作时的日志 记录 支持 支持 支持
支持生命周期的记录 支持 支持 支持
记录业务规则调用时的
日志 支持 支持 支持
支持系统管理的日志记 录 支持 支持 支持
兼容性
功能点
IBM
RedHat 旗正
支持多种操作系统 支持 支持 支持
支持多种中间件 支持 支持 支持
支持多种数据库 支持 支持 支持
支持平滑升级 支持 支持 支持
文档能力
功能点
IBM
RedHat 旗正
产品提供多种文档 支持 支持 支持
文档内容详细程度 支持 支持 支持
提供中文文档 支持 不支持 支持
集群部署、分离集中部署
功能点
IBM
RedHat 旗正
支持设置负载均衡 支持 支持 支持
支持在集群部署的 方式下的切换 支持 支持 不支持
支持规则引擎和数 据库分离部署 支持 支持 支持
支持规则引擎与规 则库集中部署 支持 支持 支持
与外围系统的松耦合部署和集成
功能点
IBM
RedHat 旗正
支持与外围系统的集成 支持 支持 支持
支持与外围系统的耦合部署 支持 支持 支持
支持引擎和外围应用系统分开部署 支持 不支持 支持
安装部署
功能点
IBM
RedHat 旗正
产品正常安装 支持 支持 支持
用户界面是否良好 支持 支持 支持
处理能力测评
处理效率
图一 租金类型判断规则处理效率
租金类型规则运算对比,从上图可以看到在计算租金类型时,在数据载入上旗正同RedHat所用时间相都比较短旗正3秒,RedHat5秒,IBM的规则引擎对给定的数据有所要求,需要预处理原始数据的时间,用时76秒;在数据处理阶段旗正耗时9秒,RedHat用时最长,为140秒,IBM用时最短4秒;在写入数据上旗正依然耗时最少,整个写入过程为30秒,RedHat为310秒,IBM为376秒;总体来看IBM同RedHat上相差无几,RedHat为455秒,IBM456秒,旗正用时最短整个过程用时42秒.
图二 变动租金规则处理效率
变动租金规则运算对比,在数据载入阶段,RedHat同旗正耗时一样都为10秒,IBM耗时180秒;数据处理阶段旗正耗时18秒,IBM耗时16秒,RedHat用时最长为343秒;数据写入阶段旗正用时22秒,RedHat用时387,IBM用时436秒;总处理时间旗正耗时50秒,IBM耗时632秒,RedHat耗时740秒.
处理正确性
图三 变动租金规则处理正确性
当并发用户在15个以内时,旗正,RedHat,IBM都能成功完成运算,当并发用户数增加到20个时,RedHat有一个用户会失败,旗正和IBM依然可以完成处理。
资源消耗
图四 变动租金规则资源消耗(CPU)
在20个用户并发环境下,旗正的最大CPU使用率为44%,平均CPU使用率为5%;RedHat最大CPU使用率为99%,平均使用率68%;IBM最大CPU使用率为34%,平均CPU使用率为3.1%.
图五 变动租金规则资源消耗(内存)
在20用户并发环境下,旗正的最大内存占用为4150M,平均内存占用为3341M;RedHat最大内存占用为11706M,平均内存占用为10589M;IBM最大内存占用为8806M,平均内存占用为6859M。