针对规则流的测试用例生成装置、方法和系统与流程

文档序号:11829431阅读:313来源:国知局
针对规则流的测试用例生成装置、方法和系统与流程

本发明涉及计算机领域,尤其涉及一种针对规则流的测试用例生成装置、方法和系统。



背景技术:

在业务规则管理系统(BRMS,Business Rule Management System)中,业务逻辑是通过规则的形式来表示的。BRMS使得用户可以通过修改规则而不是修改代码来改变业务逻辑。由于业务规则相对于代码来说更便于业务专家理解和修改,因此BRMS相对于传统软件来说更加灵活。通过将实例(facts)与规则的条件进行模式匹配,BRMS规则引擎可以找出满足条件的实例和相应的规则,并在解决冲突后执行规则。其中,Rete算法是规则引擎中的模式匹配算法之一,它通过在节点之间共享部分匹配结果来提高模式匹配的效率。

对于BRMS来说,其中一个问题是如何对这些规则进行测试以保证这些规则的正确性、完整性和一致性。目前,针对规则流(rule flow),没有一种方法可以自动地生成测试用例。规则流中包含多组(group)规则。只有当这个组处于被激活的状态,这组规则才能被执行。而这组规则也可能会创建并往工作内存(working memory)中插入实例,这些实例也可以作为后续规则组的输入。因此,传统的测试用例生成方法,包括基于Rete遍历的方法,都不再适用。

应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。



技术实现要素:

为了解决背景技术指出的问题,本发明实施例提供一种针对规则流的测试用例生成装置、方法和系统。

根据本发明实施例的第一方面,提供了一种测试用例生成装置,其中,所述装置包括:

解析单元,其解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

提取单元,从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合;

确定单元,其根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合;

生成单元,其根据所述实例集合、以及所述第二范围集合生成所述规则流的测试用例。

根据本发明实施例的第二方面,提供了一种测试用例生成方法,其中,所述方法包括:

解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合;

根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合;

根据所述实例集合、以及所述第二范围集合生成所述规则流的测试用例。

根据本发明实施例的第三方面,提供了一种计算机系统,其中,所述计算机系统被配置为:

解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合;

根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合;

根据所述实例集合、以及所述包含显式取值范围和/或所述隐式取值范围的第二范围集合生成所述规则流的测试用例。

本发明的有益效果在于:通过本实施例的装置、方法和系统,解决了现有的测试用例生成方法不能识别应该被包含于产生的测试用例中的精确的实例集合的问题。

参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。

针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。

应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。

附图说明

所包括的附图用来提供对本发明实施例的进一步的理解,其构成了说明书的一部分,用于例示本发明的实施方式,并与文字描述一起来阐释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是实施例1的测试用例生成装置的一构成示意图;

图2是实施例1的测试用例生成装置的解析单元的组成示意图;

图3是图2的解析单元的解析流程示意图;

图4是实施例1的测试用例生成装置的提取单元的组成示意图;

图5是利用AST解析器提取取值范围和关系的一个例子的示意图;

图6是实施例1的测试用例生成装置的确定单元的组成示意图;

图7是确定单元确定隐式取值范围的流程图;

图8是确定单元确定隐式取值范围的一个例子的流程图;

图9是实施例2的测试用例生成方法的流程图;

图10是图9的方法中确定规则流的实例集合的一个实施方式的流程图;

图11是图10的方法中步骤1004的一个实施方式的流程图;

图12是图9的方法中确定第一范围集合和关系集合的一个实施方式的流程图;

图13是图12的方法中步骤1202的一个实施方式的流程图;

图14是图9的方法中确定第二范围集合的一个实施方式的流程图;

图15是图14的方法中步骤1401的一个实施方式的流程图;

图16是实施例3的计算机系统的组成示意图。

具体实施方式

参照附图,通过下面的说明书,本发明的前述以及其它特征将变得明显。在说明书和附图中,具体公开了本发明的特定实施方式,其表明了其中可以采用本发明的原则的部分实施方式,应了解的是,本发明不限于所描述的实施方式,相反,本发明包括落入所附权利要求的范围内的全部修改、变型以及等同物。

实施例1

本发明实施例提供了一种测试用例生成装置,图1是该装置的组成示意图。如图1所示,该装置100包括:解析单元101、提取单元102、确定单元103、以及生成单元104。其中,

解析单元101用于解析给定规则流以及该规则流中的规则,确定该规则流的实例集合。

提取单元102用于从该规则流中的规则中提取各规则所期望的实例的属性的显示范围和关系,得到第一范围集合和关系集合。

确定单元103用于根据该第一范围集合和该关系集合确定隐式取值范围,得到包含该显示范围和/或该隐式取值范围的第二范围集合。

生成单元104用于根据该实例集合和该第二范围集合生成该规则流的测试用例。

通过本实施例的测试用例生成装置,利用了规则流中不同规则组之间的顺序来进行实例识别,解决了现有的测试用例生成方法中不能识别应该被包含于产生的测试用例中的精确的实例集合的问题。

在本实施例中,解析单元101用于识别需要包含在测试用例中的实例,其可以利用基于RETE遍历的方法计算出规则流的每个规则组中的规则所期望的实例集合,然后对于每个规则组的实例集合,过滤掉其中已经被之前的规则组的实例集合所覆盖的实例,最终得到该规则流的实例集合。

图2是解析单元101的一个实施方式的组成示意图,如图2所示,在该实施方式中,该解析单元101包括:第一解析模块201、第二解析模块202、第一确定模块203、以及第二确定模块204。其中,第一解析模块201用于解析给定规则流,得到规则组之间的关系,第二解析模块202用于解析每一条规则,得到每一条规则的实例集合和 类型集合,第一确定模块203用于根据每一条规则的实例集合和类型集合,得到每一个规则组的实例集合和类型集合,第二确定模块204用于根据规则组之间的关系以及每一个规则组的实例集合和类型集合,得到所述规则流的实例集合。

在本实施方式中,第一解析模块201可以是一个规则流解析器,其通过解析规则流,将规则流解析成规则流模型,由此得到规则流中各个规则组之间的关系,例如各个规则组之间的先后顺序。

在本实施方式中,第二解析模块202通过解析每一条规则,可以得到每一条规则的实例集和和类型集合。其中,该第二解析模块202可以包含两部分,一部分为实例识别模块,其利用基于RETE遍历的方法,解析每条规则的条件部分(LHS),由此得到每条规则的实例集合,另一部分为AST(Abstract Syntax Tree,抽象语法树)解析器,其可以通过解析每条规则的动作部分(RHS)得到每条规则的类型集合。

在本实施方式中,第一确定模块203可以包含两个分组器,其中一个分组器通过对属于同一规则组的规则的实例集合进行合并,得到每个规则组的实例集合,类似的,另一个分组器通过对属于同一规则组的规则的类型集合进行合并,得到每个规则组的类型集合。

在本实施方式中,第二确定模块204用于最终确定规则流的实例集合。其中,由于在规则流中,规则以规则组的形式进行组织,即使条件满足,规则也只能在规则组处于被激活状态才能执行,因此,为了得到规则流的实例集合,如前所述,先通过Rete遍历的方法得到每个规则组的实例集合,然后将这些实例集合合并成规则流的实例集合。然而,在合并这些实例集合之前,有两点需要考虑:首先,在先规则组的输入实例可能作为后续规则组的输入实例;其次,在先规则组的输出实例可能作为后续规则组的输入实例。因此,考虑到这两点,该第二确定模块204可以包括:第一滤除模块2041、第二滤除模块2042、以及合并模块2043。其中,

第一滤除模块2041用于根据规则组之间的关系,滤除每一个规则组的实例集中、实例与所述规则组的在先规则组的实例集中的实例相同的实例,得到第一次过滤后的每一个规则组的实例集。

第二滤除模块2042用于根据规则组之间的关系,滤除所述第一次过滤后的每一个规则组的实例集中、实例的类型与所述规则组的在先规则组的类型集中的类型相同的实例,得到第二次过滤后的每一个规则组的实例集。

合并模块2043用于将所述第二次过滤后的每一个规则组的实例集合并,得到所述规则流的实例集。

其中,第一滤除模块2041可以是一个过滤器,其用于过滤在先驱规则组中被重用的输入实例。该过滤器可以利用第一解析模块201通过解析规则流得到的规则组之间的关系(顺序),在每个规则组的实例集合中过滤掉那些已经在之前的规则组的实例集合中出现过的实例。

其中,第二滤除模块2042也可以是一个过滤器,其用于过滤在先规则组创建并插入的实例。该过滤器可以在每个规则组的实例集合中过滤掉那些类型已经在之前的规则组的类型集合中出现过的实例。

其中,合并模块2043可以在第一滤除模块2041和第二滤除模块2042过滤掉一部分实例后,通过合并剩下的所有的实例集合,得到该规则流的实例集合。

图3是该解析单元101的解析过程示意图,通过图3,可以明确解析单元101的组成及其解析过程。其中,规则流解析器可以通过前述第一解析模块201来实现,基于RETE的实例识别模块和AST解析器可以通过前述第二解析模块202来实现,两个分组器可以通过前述第一确定模块203来实现,第一过滤器、第二过滤器、和合并器可以通过前述第二确定模块204来实现,其中,第一过滤器对应前述第一滤除模块2041,第二过滤器对应前述第二滤除模块2042,合并器对应前述合并模块2043。

在本实施例中,提取单元102用于从规则中提取每个属性的显式取值范围,以及属性和实例之间的关系,其中,提取的过程也可以分为条件部分和动作部分。

图4是提取单元102的一个实施方式的组成示意图,如图4所示,在该实施方式中,该提取单元102包括:第一提取模块401、第二提取模块402、以及组合模块403。其中,第一提取模块401用于从每一条规则的条件部分提取所述规则所期望的实例的属性的显式取值范围和/或关系;第二提取模块402用于从每一条规则的动作部分提取所述规则所期望的实例的属性的显式取值范围和/或关系;组合模块403用于将所述第一提取模块401和所述第二提取模块402提取的各规则所期望的实例的属性的显式取值范围和关系分别组成第一范围集合和关系集合。

在本实施方式中,并不限制该第一提取模块401如何从规则的条件部分提取该规则所期望的实例的属性的显式取值范围和/或关系,例如,其可以采用现有手段完成,也可以采用其它任何可实施的方式完成。

在本实施方式中,第二提取模块402用于从规则的动作部分提取该规则所期望的实例的属性的显式取值范围和/或关系。其中,在规则的动作部分,每一条记录(每个代码片段)可以表示一个取值范围或一个关系,因此,在本实施例中,可以通过多个表示取值范围或关系的模式来从规则的动作部分提取上述显式取值范围和/或关系。

表1列出了一些可以从动作部分提取上述显式取值范围和/或关系的模式。表1只是举例说明,为了更全面地表示取值范围和关系,可以利用更多的模式来抽取。在表1中,类型(type1、type2)是实例(fact1、fact2)所属的类型,而属性(field1、field2)分别是实例(fact1、fact2)的属性。例如tom的类型是Person,age是Person的一个属性。

表1:表示取值范围或关系的模式

在本实施方式中,如图4所示,该第二提取模块402可以包括:第三提取模块4021、匹配模块4022、第三确定模块4023、以及第四确定模块4024。其中,第三提取模块4021用于提取规则的动作部分的每一条记录;匹配模块4022用于根据预先设定的代表范围或关系的多个模式,将该记录与该多个模式进行匹配;第三确定模块 4023用于根据匹配结果确定该记录对应的范围或关系;第四确定模块4024用于根据每一条记录对应的范围或关系得到该规则所期望的实例的属性的显式取值范围和/或关系。

在本实施方式中,该匹配模块4022可以通过AST解析器来实现,图5示意了利用该AST解析器对从规则的动作部分提取出的一条记录(代码片段)进行解析和匹配的过程。在这个例子中,首先,代码片段hcmm40.setTargetWeightTo(49)被编译成一棵抽象语法树(AST),然后,该AST解析器通过解析该抽象语法树(AST),将其与预先设定的上述多个模式中的每一个进行对比,例如,对于某一个模式,从该模式的变量声明语句(VariableDeclarationStatement)中查找这条记录的实例“hcmm40”的类型,从该模式的方法调用(MethodInvocation)中判断这条记录的“targetWeightTo”是否是这个类型的一个属性。如果是,那么可以根据该方法调用的数字(NumberLiteral),得到该记录的“targetWeightTo”的字面值,也即49。最后,便得到了该记录的“targetWeightTo”属性的一个取值范围。如果这条记录的“targetWeightTo”不是这个类型的一个属性,那就说明这条记录不是当前模式,则继续将该记录与下一个模式进行对比,对比方式如前所述,此处不再赘述。

在本实施例中,确定单元103可以根据提取单元102提取得到的显式取值范围和关系,通过推理得到隐式取值范围,以弥补显式取值范围不足以覆盖所有条件的缺陷。

图6是该确定单元103的一个实施方式的组成示意图,如图6所示,在该实施方式中,该确定单元103包括:第一生成模块601、第一判断模块602、以及第一处理模块603。其中,第一生成模块601用于根据前述第一范围集合和前述关系集合生成隐式取值范围,得到第二范围集合;第一判断模块602用于判定该第二范围集合相对该第一范围集合是否增加了隐式取值范围;第一处理模块603在该第一判断模块602判断为否时,结束处理,在该第一判断模块602判断为是时,将第二范围集合作为新的第一范围集合,并提供给所述第一生成模块继续处理。

在本实施方式中,该第一生成模块601可以利用第一范围集合和关系集合生成第二范围集合。其中,该第一生成模块601可以包括:第二生成模块6011、第三生成模块6012、第二判断模块6013、以及第二处理模块6014。该第二生成模块6011用于对所述第一范围集合中每一个范围,在所述范围未对应任何一个具体值时,生成一个所述范围内的具体值与所述范围对应;该第三生成模块6012用于根据所述范围对 应的具体值以及所述关系集合中与所述范围的属性相关联的所有关系生成隐式范围;该第二判断模块6013用于对于每个新生成的隐式范围,判断导出所述隐式范围的范围是否是从所述新生成的隐式范围的属性的其中一个范围所导出;该第二处理模块6014用于在所述第二判断模块6013判断为否时,将所述隐式范围加入所述第一范围集合,得到第二范围集合,在所述第二判断模块6014判断为是时,不将所述隐式范围加入所述第一范围集合,得到第二范围集合。

在本实施方式中,第一判断模块602会判断该第二范围集合相对于第一范围集合是否增加了新的隐式取值范围。如前所述,第一生成模块601可能生成一个隐式取值范围,将该新生成的隐式取值范围加入到第一范围集合中就构成了第二范围集合,此时,该第二范围集合相对于之前的第一范围集合就增加了该新生成的隐式取值范围,则该第一判断模块602判断为是。相反,第一生成模块601在不满足条件的情况下可能无法生成新的隐式取值范围,此时,该第二范围集合和之前的第一范围集合中取值范围是相同的,则该第一判断模块602判断为否。

在本实施方式中,如果第一判断模块602判断为是,则意味着第一范围集合中有了新的取值范围,且还没有对该新的取值范围进行过隐式取值范围的推测,则回到前面,继续处理。相反,如果第一判断模块602判断为否,则意味着第一范围集合中的取值范围都处理过了,此时可以结束处理,由此得到了包含显式取值范围和/或隐式取值范围的第二范围集合。

图7是该确定单元103确定隐式取值范围的整体流程图,如图7所示,首先,对第一范围集合中的每个(显式或隐式的)取值范围,如果尚未为其生成具体值,那么第二生成模块6011在该范围内选择一个值作为该取值范围的具体值。然后,第三生成模块6012利用该具体值和关系集合中的相应关系,生成新的必要的取值范围(第二判断模块6013判断为否),并保存到第一范围集合中(第二处理模块6014将新的隐式取值范围加入第一范围集合),构成第二范围集合。如果有新的取值范围生成了(第一判断模块602判断为是),那么返回生成具体值的那一步(第一处理模块603将第二范围集合作为新的第一范围集合)。否则,结束隐含取值范围的推测。

图8示意了该确定单元103确定隐式取值范围的一个例子,如图8所示,最初,只有一个取值范围A>10和一个关系A>B。首先,需要为每个取值范围生成一个具体值。所以对于A>10,假设生成了一个具体值15。然后,根据关系A>B和A的具体 值15,得到了一个新的取值范围B<15。由于有一个新的取值范围生成了,因此回到生成具体值那一步。这时,对于B<15,生成一个具体值9。然后,在新的取值范围确定环节,由于B<15是从A衍生出来的,所以不再生成A>9这个取值范围了。添加这个限制是为了保证算法的收敛性。到这时,由于没有新的取值范围生成了,所以这整个流程也就结束了。

在本实施例中,通过解析单元101得到了规则流的实例集合,通过确定单元103得到了包含显式取值范围和/或隐式取值范围的第二范围集合,生成单元104即可根据该实例集合和该第二范围集合生成该规则流的测试用例。

其中,该生成单元104可以通过组合测试的方法,如PICT(Pairwise Independent Combinatorial Testing,两两组合的独立测试),生成最终的测试用例,但本实施例并不以此作为限制。

在本实施例中,可选的,该测试用例生成装置还可以包括存储单元,用于存储前述多个模式以及其它运行程序所需要的数据或信息。

本实施例的测试用例生成装置使用规则流中不同规则组之间的顺序来进行实例识别,解决了现有的测试用例生成方法不能识别应该被包含于产生的测试用例中的精确的实例集合的问题。

实施例2

本发明实施例还提供了一种测试用例的生成方法,由于该方法解决问题的原理与实施例1的装置类似,因此其具体的实施可以参照实施例1的方法的实施,内容相同之处,不再重复说明。

图9是本实施例的方法的流程图,请参照图9,该方法包括:

步骤901:解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

步骤902:从所述规则流中的规则中提取各规则所期望的实例的属性的显式范围和关系,得到第一范围集合和关系集合;

步骤903:根据所述第一范围集合和关系集合确定隐式范围,得到包含显式范围和/或隐式范围的第二范围集合;

步骤904:根据所述实例集合、以及所述第二范围集合生成所述规则流的测试用 例。

其中,如前所述,步骤901与步骤902和步骤903可以并行执行,也即在步骤901确定上述规则流中的实例集合的同时,步骤902和步骤903确定上述第二范围集合。

在本实施例中,步骤901可以通过图10的流程来实现,请参照图10,该流程包括:

步骤1001:解析给定规则流,得到规则组之间的关系;

步骤1002:解析每一条规则,得到每一条规则的实例集合和类型集合;

步骤1003:根据每一条规则的实例集合和类型集合,得到每一条规则组的实例集合和类型集合;

步骤1004:根据规则组之间的关系以及每一个规则组的实例集合和类型集合,得到规则流的实例集合。

其中,如前所述,步骤1001与步骤1002和步骤1003可以并行执行,也即在步骤1001解析给定规则流的同时,步骤1002解析每一条规则,步骤1003将属于同一个规则组的规则的实例集合合并得到每个规则组的实例集合,并且,将属于同一个规则组的规则的类型集合合并得到每个规则组的类型集合。

其中,步骤1004可以通过图11的流程来实现,请参照图11,该流程包括:

步骤1101:根据规则组之间的关系,滤除每一个规则组的实例集合中、实例与所述规则组的在先规则组的实例集合中的实例相同的实例,得到第一次过滤后的每一个规则组的实例集合;

步骤1102:根据规则组之间的关系,滤除所述第一次过滤后的每一个规则组的实例集合中、实例的类型与所述规则组的在先规则组的类型集合中的类型相同的实例,得到第二次过滤后的每一个规则组的实例集合;

步骤1103:将所述第二次过滤后的每一个规则组的实例集合合并,得到所述规则流的实例集合。

在本实施例中,步骤902可以通过图12的流程来实现,请参照图12,该流程包括:

步骤1201:从每一条规则的条件部分提取所述规则所期望的实例的属性的显式范围和/或关系;

步骤1202:从每一条规则的动作部分提取所述规则所期望的实例的属性的显式范围和/或关系;

步骤1203:将所述提取的各规则所期望的实例的属性的显式范围和关系分别组成第一范围集合和关系集合。

其中,步骤1201和步骤1202可以并行执行,也即,在步骤1201从规则的条件部分提取所述显式取值范围和/或关系的同时,步骤1202从规则的条件部分提取所述显式取值范围和/或关系。

其中,步骤1202可以通过图13的流程来实现,请参照图13,该流程包括:

步骤1301:提取所述规则的动作部分的每一条记录;

步骤1302:根据预先设定的代表范围或关系的多个模式,将所述记录与所述多个模式进行匹配;

步骤1303:根据匹配结果确定所述记录对应的范围或关系;

步骤1304:根据每一条记录对应的范围或关系得到所述规则所期望的实例的属性的显式范围和/或关系。

在本实施例中,步骤903可以通过图14的流程来实现,请参照图14,该流程包括:

步骤1401:根据所述第一范围集合和关系集合生成隐式范围,得到第二范围集合;

步骤1402:判断第二范围集合相对第一范围集合是否增加了任何隐式范围,如果判断为是,则执行步骤1403,如果判断为否,则结束处理。

步骤1403:将第二范围集合作为新的第一范围集合,回到步骤1401。

其中,在步骤1401中,对于第一范围集合中的每个范围,可以通过图15的流程来实现,请参照图15,该流程包括:

步骤1501:如果所述范围未对应任何一个具体值,则生成一个所述范围内的具体值与所述范围对应;

步骤1502:根据所述范围对应的具体值以及关系集合中与所述范围的属性相关联的所有关系生成隐式范围;

步骤1503:对于每个新生成的隐式范围,判断导出所述隐式范围的范围是否是从所述新生成的隐式范围的属性的其中一个范围所导出,如果判断为否,则执行步骤 1504,如果判断为是,则结束处理,得到与第一范围集合内容相同的第二范围集合。

步骤1504:将所述隐式范围加入所述第一范围集合,并生成第二范围集合。

本实施例的测试用例生成方法使用规则流中不同规则组之间的顺序来进行实例识别,解决了现有的测试用例生成方法不能识别应该被包含于产生的测试用例中的精确的实例集合的问题。

实施例3

本发明实施例还提供了一种计算机系统,该计算机系统可以包括实施例1所述的无测试用例生成装置。

图16是本实施例的计算机系统的构成示意图,如图16所示,该计算机系统1600可以包括:中央处理器(CPU)1601和存储器1602;存储器1602耦合到中央处理器1601。其中该存储器1602可存储各种数据;此外还存储信息处理的程序,并且在中央处理器1601的控制下执行该程序。

在一个实施方式中,实施例1所述的测试用例生成装置的功能可以被集成到中央处理器2501中。

在另一个实施方式中,如实施例1所述的测试用例生成装置可以与中央处理器1601分开配置,例如可以将测试用例生成装置配置为与中央处理器1601连接的芯片,通过中央处理器1601的控制来实现测试用例生成装置的功能。

此外,如图16所示,该计算机系统1600还可以包括:输入装置1603和输出装置1604等;其中,上述部件的功能与现有技术类似,此处不再赘述。值得注意的是,计算机系统1600也并不是必须要包括图16中所示的所有部件;此外,计算机系统1600还可以包括图16中没有示出的部件,可以参考现有技术。

通过本实施例的计算机系统,使用规则流中不同规则组之间的顺序来进行实例识别,解决了现有的测试用例生成方法不能识别应该被包含于产生的测试用例中的精确的实例集合的问题。

本发明实施例还提供一种计算机可读程序,其中当在信息处理装置或测试用例生成装置中执行所述程序时,所述程序使得计算机在所述信息处理装置或测试用例生成装置中执行实施例2所述的测试用例生成方法。

本发明实施例还提供一种存储有计算机可读程序的存储介质,其中所述计算机可读程序使得计算机在信息处理装置或测试用例生成装置中执行实施例2所述的测试用例生成方法。

本发明以上的装置和方法可以由硬件实现,也可以由硬件结合软件实现。本发明涉及这样的计算机可读程序,当该程序被逻辑部件所执行时,能够使该逻辑部件实现上文所述的装置或构成部件,或使该逻辑部件实现上文所述的各种方法或步骤。本发明还涉及用于存储以上程序的存储介质,如硬盘、磁盘、光盘、DVD、flash存储器等。

以上结合具体的实施方式对本发明进行了描述,但本领域技术人员应该清楚,这些描述都是示例性的,并不是对本发明保护范围的限制。本领域技术人员可以根据本发明的精神和原理对本发明做出各种变型和修改,这些变型和修改也在本发明的范围内。

关于包括以上实施例的实施方式,还公开下述的附记:

附记1、一种测试用例生成装置,其中,所述装置包括:

解析单元,其解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

提取单元,从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合;

确定单元,其根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合;

生成单元,其根据所述实例集合、以及所述第二范围集合生成所述规则流的测试用例。

附记2、根据附记1所述的装置,其中,所述解析单元包括:

第一解析模块,其解析给定规则流,得到规则组之间的关系;

第二解析模块,其解析每一条规则,得到每一条规则的实例集合和类型集合;

第一确定模块,其根据每一条规则的实例集合和类型集合,得到每一个规则组的实例集合和类型集合;

第二确定模块,其根据规则组之间的关系以及每一个规则组的实例集合和类型集 合,得到规则流的实例集合。

附记3、根据附记2所述的装置,其中,所述第二确定模块包括:

第一滤除模块,其根据规则组之间的关系,滤除每一个规则组的实例集合中、实例与所述规则组的在先规则组的实例集合中的实例相同的实例,得到第一次过滤后的每一个规则组的实例集合;

第二滤除模块,其根据规则组之间的关系,滤除所述第一次过滤后的每一个规则组的实例集合中、实例的类型与所述规则组的在先规则组的类型集合中的类型相同的实例,得到第二次过滤后的每一个规则组的实例集合;

合并模块,其将所述第二次过滤后的每一个规则组的实例集合并,得到所述规则流的实例集合。

附记4、根据附记1所述的装置,其中,所述提取单元包括:

第一提取模块,其从每一条规则的条件部分提取所述规则所期望的实例的属性的显式取值范围和/或关系;

第二提取模块,其从每一条规则的动作部分提取所述规则所期望的实例的属性的显式取值范围和/或关系;

组合单元,其将所述第一提取模块和所述第二提取模块提取的各规则所期望的实例的属性的显式取值范围和关系分别组成第一范围集合和关系集合。

附记5、根据附记4所述的装置,其中,所述第二提取模块包括:

第三提取模块,其提取所述规则的动作部分的每一条记录;

匹配模块,根据预先设定的代表范围或关系的多个模式,将所述记录与所述多个模式进行匹配;

第三确定模块,其根据匹配结果确定所述记录对应的范围或关系;

第四确定模块,其根据每一条记录对应的范围或关系得到所述规则所期望的实例的属性的显式取值范围和/或关系。

附记6、根据附记1所述的装置,其中,所述确定单元包括:

第一生成模块,其根据所述第一范围集合和关系集合生成隐式取值范围,得到第二范围集合;

第一判断模块,其判定第二范围集合相对第一范围集合是否增加了隐式取值范围;

第一处理模块,其在所述第一判断模块判断为否时,结束处理,在所述判断模块判断为是时,将第二范围集合作为新的第一范围集合,并提供给所述第一生成模块。

附记7、根据附记6所述的装置,其中,所述第一生成模块包括:

第二生成模块,其对所述第一范围集合中每一个范围,在所述范围未对应任何一个具体值时,生成一个所述范围内的具体值与所述范围对应;

第三生成模块,其根据所述范围对应的具体值以及所述关系集合中与所述范围的属性相关联的所有关系生成隐式取值范围;

第二判断模块,其对于每个新生成的隐式取值范围,判断导出所述隐式取值范围的范围是否是从所述新生成的隐式取值范围的属性的其中一个范围所导出;

第二处理模块,其在所述第二判断模块判断为否时,将所述隐式取值范围加入所述第一范围集合,并生成第二范围集合,在所述第二判断模块判断为是时,不将所述隐式取值范围加入所述第一范围集合,直接得到第二范围集合。

附记8、一种测试用例生成方法,其中,所述方法包括:

解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合;

根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合;

根据所述实例集合、以及所述第二范围集合生成所述规则流的测试用例。

附记9、根据附记8所述的方法,其中,解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合,包括:

解析给定规则流,得到规则组之间的关系;

解析每一条规则,得到每一条规则的实例集合和类型集合;

根据每一条规则的实例集和类型集,得到每一个规则组的实例集合和类型集合;

根据规则组之间的关系以及每一个规则组的实例集合和类型集合,得到规则流的实例集合。

附记10、根据附记9所述的方法,其中,根据规则组之间的关系以及每一个规则组的实例集合和类型集合,得到规则流的实例集合,包括:

根据规则组之间的关系,滤除每一个规则组的实例集合中、实例与所述规则组的 在先规则组的实例集合中的实例相同的实例,得到第一次过滤后的每一个规则组的实例集;

根据规则组之间的关系,滤除所述第一次过滤后的每一个规则组的实例集合中、实例的类型与所述规则组的在先规则组的类型集合中的类型相同的实例,得到第二次过滤后的每一个规则组的实例集合;

将所述第二次过滤后的每一个规则组的实例集合合并,得到所述规则流的实例集合。

附记11、根据附记8所述的方法,其中,从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合,包括:

从每一条规则的条件部分提取所述规则所期望的实例的属性的显式取值范围和/或关系;

从每一条规则的动作部分提取所述规则所期望的实例的属性的显式取值范围和/或关系;

将所述提取的各规则所期望的实例的属性的显式取值范围和关系分别组成第一范围集合和关系集合。

附记12、根据附记11所述的方法,其中,从每一条规则的动作部分提取所述规则所期望的实例的属性的显式取值范围和/或关系,包括:

提取所述规则的动作部分的每一条记录;

根据预先设定的代表范围或关系的多个模式,将所述记录与所述多个模式进行匹配;

根据匹配结果确定所述记录对应的范围或关系;

根据每一条记录对应的范围或关系得到所述规则所期望的实例的属性的显式取值范围和/或关系。

附记13、根据附记8所述的方法,其中,根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合,包括:

根据所述第一范围集合和关系集合生成隐式取值范围,得到第二范围集合;

如果第二范围集合相对第一范围集合未增加任何隐式取值范围,则结束处理,否则将第二范围集合作为新的第一范围集合。

附记14、根据附记13所述的方法,其中,根据所述第一范围集合和关系集合生 成隐式取值范围,得到第二范围集合,包括:

对第一范围集合中每一个范围进行如下操作:

如果所述范围未对应任何一个具体值,则生成一个所述范围内的具体值与所述范围对应;

根据所述范围对应的具体值以及关系集合中与所述范围的属性相关联的所有关系生成隐式取值范围;

对于每个新生成的隐式取值范围,如果导出所述隐式取值范围的范围不是从所述新生成的隐式取值范围的属性的其中一个范围所导出,那么将其加入所述第一范围集合,并生成第二范围集合,否则,不将其加入所述第一范围集合。

附记15、一种计算机系统,其中,所述计算机系统被配置为:

解析给定规则流以及所述规则流中的规则,确定所述规则流的实例集合;

从所述规则流中的规则中提取各规则所期望的实例的属性的显式取值范围和关系,得到第一范围集合和关系集合;

根据所述第一范围集合和关系集合确定隐式取值范围,得到包含显式取值范围和/或隐式取值范围的第二范围集合;

根据所述实例集合、以及所述包含显式取值范围和/或所述隐式取值范围的第二范围集合生成所述规则流的测试用例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1