用于测试用例配方的Drools

时间:2011-03-02 08:50:27

标签: drools

我正在测试一个相当复杂的系统,它根据一些业务规则行事(写成半正式文本)。

目标是创建测试用例,其中包含尽可能多的系统状态。我想以下列方式自动执行此任务:

1)将Drools中的业务规则正式化 2)然后使用某种机制创建所有可能情况的列表(需要测试)

例如,我有以下业务规则包,其中包含两个规则(这只是一个示例,实际业务规则要复杂得多):

global List outErrorCodes;
global Boolean condition1;
global Boolean condition2;
global Boolean condition3;

rule "01"
    when
        eval( condition3 == false);     
    then 
        outErrorCodes.add("ERROR_CODE1");
end

rule "02"
    when
        eval((condition1 == true) && (condition2 == true));
    then
        outErrorCodes.add("ERROR_CODE2");
end

condition1,condition2和condition3是输入。 outErrorCode是输出。

即,condition1,condition2和condition3描述了某种情况,outErrorCode描述了该特定情况下系统的预期行为。

我想创建一种机制,根据规则中的逻辑自动创建所有可能元组(condition1,condition2,condition3,outErrorCodes)的列表。每个元组代表系统的状态。

这些元组将用作创建实际测试用例的基础。

Drools有可能吗?如果是这样 - 怎么样?

非常感谢提前

的Dmitri

1 个答案:

答案 0 :(得分:1)

我们成功地获取了规则集,使用drools-server将其部署为服务,然后编写脚本以使Web服务调用执行每个输入变量的每个可能值。在大约一个小时内,我们能够对我们的规则库进行5000多次调用,并查看每个案例的输出。

缺点(我认为你不会用任何解决方案解决这个问题)是你正在测试业务逻辑。考虑它时,您可以生成所需的所有测试数据,但如果不运行业务逻辑(您正在测试),则无法生成测试输入和预期结果。只是说如果你进入自动生成业务逻辑的输入,你实际上不能在不违反测试完整性的情况下知道预期的结果。