Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drools 测试用例公式的流口水_Drools - Fatal编程技术网

Drools 测试用例公式的流口水

Drools 测试用例公式的流口水,drools,Drools,我正在测试一个相当复杂的系统,它根据一些业务规则(以半正式文本形式编写)运行 我们的目标是创建测试用例,它覆盖了系统尽可能多的状态。我希望通过以下方式自动化此任务: 1) 在Drools中形式化业务规则 2) 然后使用一些机制创建所有可能情况的列表(需要测试) 例如,我有以下包含两个规则的业务规则包(这只是一个示例,实际业务规则要复杂得多): 条件1、条件2和条件3是输入。 outErrorCode是输出 也就是说,condition1、condition2和condition3描述了特定情况,

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

我们的目标是创建测试用例,它覆盖了系统尽可能多的状态。我希望通过以下方式自动化此任务:

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

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

条件1、条件2和条件3是输入。 outErrorCode是输出

也就是说,condition1、condition2和condition3描述了特定情况,outErrorCode描述了该特定情况下系统的预期行为

我想创建一种机制,根据规则中的逻辑自动创建所有可能元组(条件1、条件2、条件3、外部错误代码)的列表。每个元组表示系统的一个状态

然后,这些元组将被用作创建实际测试用例的基础

流口水有可能吗?如果是的话-如何

非常感谢


Dmitri

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


不利的一面(我认为您不会用任何解决方案来解决这个问题)是您正在测试业务逻辑。考虑到这一点,您可以生成所需的所有测试数据,但如果不运行业务逻辑(您正在测试的业务逻辑),就无法生成测试输入和预期结果。只是说,如果您开始自动生成业务逻辑的输入,您实际上无法在不破坏测试完整性的情况下知道预期结果。

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

不利的一面(我认为您不会用任何解决方案来解决这个问题)是您正在测试业务逻辑。考虑到这一点,您可以生成所需的所有测试数据,但如果不运行业务逻辑(您正在测试的业务逻辑),就无法生成测试输入和预期结果。只是说,如果您开始自动生成业务逻辑的输入,您实际上无法在不破坏测试完整性的情况下知道预期结果

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