CN107179987A - 针对给定规则集生成测试用例的方法和装置 - Google Patents
针对给定规则集生成测试用例的方法和装置 Download PDFInfo
- Publication number
- CN107179987A CN107179987A CN201610141058.7A CN201610141058A CN107179987A CN 107179987 A CN107179987 A CN 107179987A CN 201610141058 A CN201610141058 A CN 201610141058A CN 107179987 A CN107179987 A CN 107179987A
- Authority
- CN
- China
- Prior art keywords
- rule
- chained list
- test case
- attribute
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种针对给定规则集生成测试用例的方法和装置。该方法包括:将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及对给定规则集进行遍历执行以下处理:针对给定规则集中的每条规则,将测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除测试用例链表中的元素,从而确定最终的测试用例链表。
Description
技术领域
本发明涉及信息处理技术领域,更具体地涉及一种针对给定规则集生成测试用例的方法和装置。
背景技术
业务规则管理***(Business Rule Management System,BRMS)是将业务逻辑以业务规则的形式抽取出来形成规则库的一种商业应用软件***。BRMS依据这些规则对传入的业务数据进行处理,实现企业业务的流动。企业人员和业务分析人员可以根据业务需求制定或修改规则,无需重新开发企业的信息***,因此,BRMS比传统软件***更灵活、更适合处理不断变更的企业业务。规则引擎是BRMS的关键,它负责将进入***的表示业务数据的实例(fact)与规则库中的规则条件(condition)进行一一匹配并执行被匹配的规则中的动作(action/conclusion)。
为了测试业务规则是否能准确表达业务逻辑,根据业务规则自动生成测试用例以测试业务规则是很有必要的。现有的白盒测试技术用于软件程序本身的测试,不适用于业务规则的测试。现有的业务规则测试技术通过反向推出需要用到的测试用例,搜索空间大,且需要预处理规则以确保规则不相交和完整;通过rete树生成测试用例不能直接得到测试用例而是找到测试对象后再通过组合测试方法生成每个测试对象属性的具体值,规则的覆盖率很依赖所选的组合测试方法。
期望能够提供一种更加简单并且方便的能够为业务规则直接生成测试用例的方法和装置。
发明内容
在下文中给出关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
本发明的一个主要目的在于,提供了一种针对给定规则集生成测试用例的方法,包括:将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及对给定规则集进行遍历执行以下处理:针对给定规则集中的每条规则,将测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除测试用例链表中的元素,从而确定最终的测试用例链表。
根据本发明的一个方面,提供一种针对给定规则集生成测试用例的装置,包括:分类单元,被配置为将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;初始化单元,被配置为依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及测试用例链表生成单元,被配置为对给定规则集进行遍历执行以下处理:针对给定规则集中的每条规则,将测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除测试用例链表中的元素,从而确定最终的测试用例链表。
另外,本发明的实施例还提供了用于实现上述方法的计算机程序。
此外,本发明的实施例还提供了至少计算机可读介质形式的计算机程序产品,其上记录有用于实现上述方法的计算机程序代码。
通过以下结合附图对本发明的最佳实施例的详细说明,本发明的这些以及其他优点将更加明显。
附图说明
参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。附图中的部件只是为了示出本发明的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。
图1示出了一个BRMS***中的若干条规则的示例;
图2示出了图1中的规则涉及到的对象的模型定义的一个示例;
图3示出了根据本发明的一个实施例的针对给定规则集生成测试用例的方法300的示例性过程的流程图;
图4是示出根据本发明的一个实施例的针对给定规则集生成测试用例的装置400的示例性配置的框图;以及
图5是示出可以用于实施本发明的针对给定规则集生成测试用例的方法和装置的计算设备的示例性结构图。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,例如,符合与***及业务相关的那些限制条件,并且这些限制条件可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的设备结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
本发明提出了一种为业务规则直接生成测试用例的方法。该方法设计了一个表示测试用例的数据结构,即测试用例链表,链表中的每个元素表示一个测试对象,为对象的每个属性增加一个规则链表域,用于指示该属性能否被修改以及适用于哪些规则。方法开始时首先把规则中涉及的对象分为只包含基本类型属性和不只包含基本类型属性两类,初始化所有对象组成一个测试用例链表,然后根据规则自带的优先级和基于属性流动图确定的顺序排序规则,接下来根据不匹配的限定表达式修改或增加测试用例链表中的元素,最后除去类型和所有属性的规则链表域都为空链表的元素。
本申请人于2014年4月5日递交的题为“利用规则集网络生成测试用例的装置和方法”的中国专利申请201410151595.0公开了一种通过遍历规则集网络为业务规则生成测试用例的装置和方法,该申请的全部内容通过引用合并于此。
图1示出了一个BRMS***中的若干条规则的示例,这些规则共同实现为企业计算使用电量的逻辑。图2示出了图1中的规则涉及到的对象的模型定义的一个示例。测试这些规则的第一步是找出需要被实例化的对象和需要被设置为具体值的属性。使用现有的方法,测试对象和属性的具体值是分开获取的。而本发明的方法可以直接为业务规则获取测试对象以及对象中各属性的具体值。例如,对于规则“Computation preprocess”,本发明的方法会得到可激活它的测试对象DetectedInfo(“0”,10,“2015.11.15”),Item(“hello”),ComputationDetails(“0”,“2015.11.1”,“2015.11.30”,0,an empty list)和List(DetectedInfo(“001”,10,“2015.11.15”))。
在本发明中,业务规则测试的任务是获得最终的测试用例链表,链表中的每个元素表示一个可以用于规则测试的对象。
针对上述任务,本文提出了一种生成测试用例的方法:首先,将待测业务规则中涉及的所有对象划分为两个集合。第一个集合的对象只包含基本类型属性;第二个集合的对象不只包含基本类型属性,即至少包含一个非基本类型属性。其次,初始化每个对象以构造一个初始的测试用例链表。在这里,可以根据规则的优先级对规则进行排序。最后根据不匹配的限定表达式来修改、增加或删除测试用例链表中的元素,从而得到最终的测试用例链表。该测试用例链表中的每个元素表示一个具体可用于测试规则的测试对象,下面的表1示出了测试用例链表的数据结构。如表1所示,链表中每个元素由对象的唯一编号(id,用于被链表对象或非基类属性引用)、对象的类型(type)和表示该对象会在哪些规则用到的规则链表trl(属性没有约束时)、对象的每个属性的具体值(attributes)和表示该属性会在哪些规则用到的规则链表(arl)组成。
id | type | trl | attribute1 | arl | attribute2 | arl | … |
表1
特别地,对于list(链表)对象,type值为List,属性值为list元素对应的对象。下面的表2示出了测试用例链表中一个具体的元素,这样的一个元素可以直接作为规则的测试对象。
表2
下面结合附图详细说明根据本发明的实施例的用于生成测试用例的方法和装置。下文中的描述按如下顺序进行:
1.针对给定规则集生成测试用例的方法
2.针对给定规则集生成测试用例的装置
3.用以实施本申请的方法和装置的计算设备
[1.针对给定规则集生成测试用例的方法]
图3示出了根据本发明的一个实施例的针对给定规则集生成测试用例的方法300的示例性过程的流程图。
首先,在步骤S302中,将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合。
第一个集合中的对象只包含基本类型属性,如数值型、字符串型、布尔型和日期型这些可以被随机初始化的类型。如图2中的“DetectedInfo”和“Item”就属于此类对象。
第二个集合中的对象包含至少一个非基本类型的属性,如链表属性或复杂类属性。如图2中的“ComputationDetails”属于第二集合,因为它包含了一个链表属性“usageInfoList”。
接着,在步骤S304中,依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表。在测试用例链表中,每个元素表示用于对规则进行测试的一个测试用例,每个元素包括对象编号、对象类型、对象的属性以及规则链表。
在初始化阶段,测试用例链表的元素的每个域都要被初始化。首先处理第一集合的对象。id域使用诸如O1、O2的形式设定,O后面的数字逐一递增。type域根据对象模型的类名称可以很容易设定。每个属性都被设定为具体值:将数值型属性初始化为具体的随机数字,将字符串型属性初始化为随机字符串,将布尔型属性初始化为false,将日期型属性初始化为当前日期,规则链表域trl和arl分别添加在对象类型及每个对象的属性之后,表示该对象或者该属性在哪些规则中使用,将规则链表域trl和arl都初始化为空链表。特别地,对于list对象,type值为List,属性值为list元素对应的对象。
对于图2中的第一集合的对象,初始化后的测试用例链表如下面的表3所示。
表3
其次初始化第二集合中的对象。对于非基本类型属性,如果该属性的类型是第一集合中对象的类型,则相应的已初始化的第一集合对象作为该属性的具体值,用该对象的id表示。如果该属性是链表,则将其具体值设置为空链表。其他域的初始化与第一集合的对象相同。
对于图2中的第二集合的对象,初始化后的测试用例链表如下面的表4所示。
表4
上面的分类步骤和初始化步骤处理的是对象,接下来将处理待测的业务规则。由于规则可能包含顺序而规则的顺序会影响测试对象的获取顺序,因此可以先对规则进行排序。可根据规则的优先级和基于属性流动图的方法对规则进行排序。之后,根据已经初始化的测试用例链表,逐一分析已经排序的规则以实现对测试用例链表的修改。
通过上述步骤已经获得了具体的测试对象,即初始化的测试用例链表中的元素,因此将它们逐一与规则中的条件部分进行比较。
在步骤S306中,对给定规则集进行遍历执行以下处理:针对给定规则集中的每条规则,将测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除测试用例链表中的元素,从而确定最终的测试用例链表。
具体地,如果被比较的对象匹配了当前规则的条件,则将该规则添加到对应的类型规则链表或属性规则链表中。否则,在测试用例链表中新增一个对象并将该对象的属性设置为可满足该规则的限制。当所有的规则都比较完之后,检查测试用例链表中的元素,如果一个元素的类型规则链表和所有属性规则链表仍为空,则删除该元素。最终测试用例链表中的元素即为可用于测试目标业务规则的测试对象集合。
下面的表5示出了对测试对象进行修改的具体步骤的一个示例。
表5
以图1中的规则和图2中的对象模型作为处理对象,可以得到如表6-表11所示的在本发明的生成测试用例的方法中测试用例链表的变化过程,结合下面的表6-表11可以更好的理解根据本发明的方法是如何针对给定规则集来生成测试用例。
首先,表6是对测试用例链表进行初始化的过程:
表6
表7示出了处理规则r1-rule“Computation preprocess”之后的测试用例链表:
表7
表8示出了处理规则r2-rule“Computation of realTime”之后的测试用例链表:
表8
表9示出了处理规则r3-rule“Computation of Max”之后的测试用例链表:
表9
表10示出了处理规则r4-rule“Computation of electricityconsumption”之后的测试用例链表:
表10
表11示出了处理规则r5-rule“Computation postprocess”之后的测试用例链表:
表11
表11中的处理完规则5之后的测试用例链表中的对象即是所生成的测试用例,可以用于测试图1中的所有规则。
[2.针对给定规则集生成测试用例的装置]
图4是示出根据本发明的一个实施例的针对给定规则集生成测试用例的装置400的示例性配置的框图。
如图4所示,针对给定规则集生成测试用例的装置400包括分类单元402、初始化单元404和测试用例链表生成单元406。
其中,分类单元402被配置为将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合。
初始化单元404被配置为依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,每个元素包括对象编号、对象类型、对象的属性以及规则链表。
测试用例链表生成单元406被配置为对给定规则集进行遍历执行以下处理:针对给定规则集中的每条规则,将测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除测试用例链表中的元素,从而确定最终的测试用例链表。
其中,规则链表被布置在对象类型及每个对象的属性之后,表示该对象或者该属性在哪些规则中使用。
在一个示例中,针对给定规则集生成测试用例的装置400还包括:排序单元(未示出),排序单元被配置为根据给定规则集中各个规则的优先级和基于属性流动图确定的顺序对规则进行排序。
其中,第一集合中的对象的属性类型包括随机初始化的数值型、字符串型、布尔型以及日期型,第二集合中的对象的属性包括类或链表类型。
其中,初始化单元404进一步被配置为:先初始化第一集合中的对象,再初始化第二集合中的对象;对于第一集合中的对象,将数值型属性初始化为具体数字,将字符串型属性初始化为随机字符串,将布尔型属性初始化为false,将日期型属性初始化为当前日期,将规则链表初始化为空链表。
其中,初始化单元404进一步被配置为:对于第二集合中的每个对象,如果某个属性的类型是第一个集合中的对象类型,则把第一集合中已初始化的该类型的对象赋值给该属性;如果某个属性的类型是链表,则将该链表初始化为空链表。
其中,对于list对象,对象类型的值为List,对象的属性的值为list元素包含的对象。
其中,测试用例链表生成单元406进一步被配置为:
如果测试用例链表中的对象与该规则中的条件的每个限定表达式都匹配,将该规则添加到对应的规则链表中,对下一条规则执行处理,否则,如果测试用例链表中没有该规则中的限定表达式中的对象或list,则创建一个符合限定表达式的所有属性约束的对象或list,将该规则添加到所创建的对象或list对应的规则链表中,并将该对象或list添加到测试用例链表中;
否则,对与该规则中的限定表达式不匹配的属性,查看测试用例链表中包含该限定表达式的属性的规则链表是否为空链表,
如果为空,则对该属性的属性值进行修改使其与该限定表达式匹配,并将该规则添加到该属性的规则链表中,
否则,在测试用例链表中新添加一个对象,使该对象的属性与该限定表达式匹配,并将该规则添加到新添加的对象的该属性的规则链表中。
其中,测试用例链表生成单元406进一步被配置为:删除测试用例链表中的所有规则链表都为空链表的元素。
关于针对给定规则集生成测试用例的装置400的各个部分的操作和功能的细节可以参照结合图1-3描述的本发明的针对给定规则集生成测试用例的方法的实施例,这里不再详细描述。
在此需要说明的是,图4所示的装置及其组成单元的结构仅仅是示例性的,本领域技术人员可以根据需要对图4所示的结构框图进行修改。
本发明提出一种针对给定规则集生成测试用例的方法和装置。和传统方法相比,本方法初始化测试对象和具体值属性作为种子来进行生成过程,不需要搜索大的对象和属性值空间来得到最终的测试用例。此外,本发明的方法的结果可以容易和直接地用于测试规则,测试人员可以知道每个对象将被哪个规则使用。
[3.用以实施本申请的方法和装置的计算设备]
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
在通过软件和/或固件实现本发明的实施例的情况下,从存储介质或网络向具有专用硬件结构的计算机,例如图5所示的通用计算机500安装构成该软件的程序,该计算机在安装有各种程序时,能够执行各种功能等等。
在图5中,中央处理单元(CPU)501根据只读存储器(ROM)502中存储的程序或从存储部分508加载到随机存取存储器(RAM)503的程序执行各种处理。在RAM 503中,也根据需要存储当CPU 501执行各种处理等等时所需的数据。CPU 501、ROM 502和RAM 503经由总线504彼此链路。输入/输出接口505也链路到总线504。
下述部件链路到输入/输出接口505:输入部分506(包括键盘、鼠标等等)、输出部分507(包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等,和扬声器等)、存储部分508(包括硬盘等)、通信部分509(包括网络接口卡比如LAN卡、调制解调器等)。通信部分509经由网络比如因特网执行通信处理。根据需要,驱动器510也可链路到输入/输出接口505。可拆卸介质511比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器510上,使得从中读出的计算机程序根据需要被安装到存储部分508中。
在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质511安装构成软件的程序。
本领域的技术人员应当理解,这种存储介质不局限于图5所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质511。可拆卸介质511的例子包含磁盘(包含软盘(注册商标))、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)(注册商标))和半导体存储器。或者,存储介质可以是ROM 502、存储部分508中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。
本发明还提出一种存储有机器可读取的指令代码的程序产品。指令代码由机器读取并执行时,可执行上述根据本发明实施例的方法。
相应地,用于承载上述存储有机器可读取的指令代码的程序产品的存储介质也包括在本发明的公开中。存储介质包括但不限于软盘、光盘、磁光盘、存储卡、存储棒等。
本领域的普通技术人员应理解,在此所例举的是示例性的,本发明并不局限于此。
在本说明书中,“第一”、“第二”以及“第N个”等表述是为了将所描述的特征在文字上区分开,以清楚地描述本发明。因此,不应将其视为具有任何限定性的含义。
作为一个示例,上述方法的各个步骤以及上述设备的各个组成模块和/或单元可以实施为软件、固件、硬件或其组合,并作为相应设备中的一部分。上述装置中各个组成模块、单元通过软件、固件、硬件或其组合的方式进行配置时可使用的具体手段或方式为本领域技术人员所熟知,在此不再赘述。
作为一个示例,在通过软件或固件实现的情况下,可以从存储介质或网络向具有专用硬件结构的计算机(例如图5所示的通用计算机500)安装构成该软件的程序,该计算机在安装有各种程序时,能够执行各种功能等。
在上面对本发明具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其他实施方式中使用,与其他实施方式中的特征相组合,或替代其他实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其他特征、要素、步骤或组件的存在或附加。
此外,本发明的方法不限于按照说明书中描述的时间顺序来执行,也可以按照其他的时间顺序地、并行地或独立地执行。因此,本说明书中描述的方法的执行顺序不对本发明的技术范围构成限制。
本发明及其优点,但是应当理解在不超出由所附的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替代和变换。而且,本发明的范围不仅限于说明书所描述的过程、设备、手段、方法和步骤的具体实施例。本领域内的普通技术人员从本发明的公开内容将容易理解,根据本发明可以使用执行与在此的相应实施例基本相同的功能或者获得与其基本相同的结果的、现有和将来要被开发的过程、设备、手段、方法或者步骤。因此,所附的权利要求旨在在它们的范围内包括这样的过程、设备、手段、方法或者步骤。
基于以上的说明,可知公开至少公开了以下技术方案:
1、一种针对给定规则集生成测试用例的方法,包括:
将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;
依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,所述测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,所述每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及
对所述给定规则集进行遍历执行以下处理:针对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素,从而确定最终的测试用例链表。
2、根据权利要求1所述的方法,其中,所述规则链表被布置在所述对象类型及每个对象的属性之后,表示该对象或者该属性在哪些规则中使用。
3、根据权利要求1所述的方法,其中,在对第一集合中的对象和第二集合中的对象进行初始化的步骤之后,所述方法还包括:
根据所述给定规则集中各个规则的优先级和基于属性流动图确定的顺序对规则进行排序。
4、根据权利要求1所述的方法,其中,所述第一集合中的对象的属性类型包括随机初始化的数值型、字符串型、布尔型以及日期型,所述第二集合中的对象的属性包括类或链表类型。
5、根据权利要求4所述的方法,其中,对第一集合中的对象和第二集合中的对象进行初始化包括:
先初始化所述第一集合中的对象,再初始化所述第二集合中的对象;对于所述第一集合中的对象,将数值型属性初始化为具体数字,将字符串型属性初始化为随机字符串,将布尔型属性初始化为false,将日期型属性初始化为当前日期,将规则链表初始化为空链表。
6、根据权利要求5所述的方法,其中,初始化所述第二集合中的对象包括:
对于所述第二集合中的每个对象,如果某个属性的类型是所述第一个集合中的对象类型,则把所述第一集合中已初始化的该类型的对象赋值给该属性;如果某个属性的类型是链表,则将该链表初始化为空链表。
7、根据权利要求1所述的方法,其中,对于链表对象,对象类型的值为List,对象的属性的值为链表元素包含的对象。
8、根据权利要求1所述的方法,其中,对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素包括:
如果所述测试用例链表中的对象与该规则中的条件的每个限定表达式都匹配,将该规则添加到对应的规则链表中,对下一条规则执行处理,
否则,如果所述测试用例链表中没有该规则中的限定表达式中的对象或链表,则创建一个符合限定表达式的所有属性约束的对象或链表,将该规则添加到所创建的对象或链表对应的规则链表中,并将该对象或链表添加到所述测试用例链表中;
否则,对与该规则中的限定表达式不匹配的属性,查看所述测试用例链表中包含该限定表达式的属性的规则链表是否为空链表,
如果为空,则对该属性的属性值进行修改使其与该限定表达式匹配,并将该规则添加到该属性的规则链表中,
否则,在所述测试用例链表中新添加一个对象,使该对象的属性与该限定表达式匹配,并将该规则添加到新添加的对象的该属性的规则链表中。
9、根据权利要求8所述的方法,其中,对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素还包括:删除所述测试用例链表中的所有规则链表都为空链表的元素。
10、一种针对给定规则集生成测试用例的装置,包括:
分类单元,被配置为将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;
初始化单元,被配置为依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,所述测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,所述每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及
测试用例链表生成单元,被配置为对所述给定规则集进行遍历执行以下处理:针对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素,从而确定最终的测试用例链表。
11、根据权利要求10所述的装置,其中,所述规则链表被布置在所述对象类型及每个对象的属性之后,表示该对象或者该属性在哪些规则中使用。
12、根据权利要求10所述的装置,其中,所述装置还包括:
排序单元,被配置为根据所述给定规则集中各个规则的优先级和基于属性流动图确定的顺序对规则进行排序。
13、根据权利要求10所述的装置,其中,所述第一集合中的对象的属性类型包括随机初始化的数值型、字符串型、布尔型以及日期型,所述第二集合中的对象的属性包括类或链表类型。
14、根据权利要求13所述的装置,其中,所述初始化单元进一步被配置为:
先初始化所述第一集合中的对象,再初始化所述第二集合中的对象;对于所述第一集合中的对象,将数值型属性初始化为具体数字,将字符串型属性初始化为随机字符串,将布尔型属性初始化为false,将日期型属性初始化为当前日期,将规则链表初始化为空链表。
15、根据权利要求14所述的装置,其中,所述初始化单元进一步被配置为:
对于所述第二集合中的每个对象,如果某个属性的类型是所述第一个集合中的对象类型,则把所述第一集合中已初始化的该类型的对象赋值给该属性;如果某个属性的类型是链表,则将该链表初始化为空链表。
16、根据权利要求10所述的装置,其中,对于链表对象,对象类型的值为List,对象的属性的值为链表元素包含的对象。
17、根据权利要求10所述的装置,其中,所述测试用例链表生成单元进一步被配置为:
如果所述测试用例链表中的对象与该规则中的条件的每个限定表达式都匹配,将该规则添加到对应的规则链表中,对下一条规则执行处理,
否则,如果所述测试用例链表中没有该规则中的限定表达式中的对象或链表,则创建一个符合限定表达式的所有属性约束的对象或链表,将该规则添加到所创建的对象或链表对应的规则链表中,并将该对象或链表添加到所述测试用例链表中;
否则,对与该规则中的限定表达式不匹配的属性,查看所述测试用例链表中包含该限定表达式的属性的规则链表是否为空链表,
如果为空,则对该属性的属性值进行修改使其与该限定表达式匹配,并将该规则添加到该属性的规则链表中,
否则,在所述测试用例链表中新添加一个对象,使该对象的属性与该限定表达式匹配,并将该规则添加到新添加的对象的该属性的规则链表中。
18、根据权利要求17所述的装置,其中,所述测试用例链表生成单元进一步被配置为:
删除所述测试用例链表中的所有规则链表都为空链表的元素。
Claims (10)
1.一种针对给定规则集生成测试用例的方法,包括:
将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;
依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,所述测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,所述每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及
对所述给定规则集进行遍历执行以下处理:针对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素,从而确定最终的测试用例链表。
2.根据权利要求1所述的方法,其中,所述规则链表被布置在所述对象类型及每个对象的属性之后,表示该对象或者该属性在哪些规则中使用。
3.根据权利要求1所述的方法,其中,在对第一集合中的对象和第二集合中的对象进行初始化的步骤之后,所述方法还包括:
根据所述给定规则集中各个规则的优先级和基于属性流动图确定的顺序对规则进行排序。
4.根据权利要求1所述的方法,其中,所述第一集合中的对象的属性类型包括随机初始化的数值型、字符串型、布尔型以及日期型,所述第二集合中的对象的属性包括类或链表类型。
5.根据权利要求4所述的方法,其中,对第一集合中的对象和第二集合中的对象进行初始化包括:
先初始化所述第一集合中的对象,再初始化所述第二集合中的对象;对于所述第一集合中的对象,将数值型属性初始化为具体数字,将字符串型属性初始化为随机字符串,将布尔型属性初始化为false,将日期型属性初始化为当前日期,将规则链表初始化为空链表。
6.根据权利要求5所述的方法,其中,初始化所述第二集合中的对象包括:
对于所述第二集合中的每个对象,如果某个属性的类型是所述第一个集合中的对象类型,则把所述第一集合中已初始化的该类型的对象赋值给该属性;如果某个属性的类型是链表,则将该链表初始化为空链表。
7.根据权利要求1所述的方法,其中,对于链表对象,对象类型的值为List,对象的属性的值为链表元素包含的对象。
8.根据权利要求1所述的方法,其中,对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素包括:
如果所述测试用例链表中的对象与该规则中的条件的每个限定表达式都匹配,将该规则添加到对应的规则链表中,对下一条规则执行处理,
否则,如果所述测试用例链表中没有该规则中的限定表达式中的对象或链表,则创建一个符合限定表达式的所有属性约束的对象或链表,将该规则添加到所创建的对象或链表对应的规则链表中,并将该对象或链表添加到所述测试用例链表中;
否则,对与该规则中的限定表达式不匹配的属性,查看所述测试用例链表中包含该限定表达式的属性的规则链表是否为空链表,
如果为空,则对该属性的属性值进行修改使其与该限定表达式匹配,并将该规则添加到该属性的规则链表中,
否则,在所述测试用例链表中新添加一个对象,使该对象的属性与该限定表达式匹配,并将该规则添加到新添加的对象的该属性的规则链表中。
9.根据权利要求8所述的方法,其中,对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素还包括:删除所述测试用例链表中的所有规则链表都为空链表的元素。
10.一种针对给定规则集生成测试用例的装置,包括:
分类单元,被配置为将给定规则集所涉及的对象集中的对象分类为其中对象的属性都是基本类型的第一集合和其中对象的属性包含非基本类型的第二集合;
初始化单元,被配置为依次对第一集合中的对象和第二集合中的对象进行初始化,来构造测试用例链表,所述测试用例链表中的每个元素表示用于对规则进行测试的一个测试用例,所述每个元素包括对象编号、对象类型、对象的属性以及规则链表;以及
测试用例链表生成单元,被配置为对所述给定规则集进行遍历执行以下处理:针对所述给定规则集中的每条规则,将所述测试用例链表中的对象与该规则中的条件进行比较,根据比较结果来添加、修改或删除所述测试用例链表中的元素,从而确定最终的测试用例链表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610141058.7A CN107179987A (zh) | 2016-03-11 | 2016-03-11 | 针对给定规则集生成测试用例的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610141058.7A CN107179987A (zh) | 2016-03-11 | 2016-03-11 | 针对给定规则集生成测试用例的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107179987A true CN107179987A (zh) | 2017-09-19 |
Family
ID=59830864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610141058.7A Pending CN107179987A (zh) | 2016-03-11 | 2016-03-11 | 针对给定规则集生成测试用例的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107179987A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111679991A (zh) * | 2020-06-23 | 2020-09-18 | 武汉光庭信息技术股份有限公司 | 一种利用大数据生成测试用例的方法及*** |
-
2016
- 2016-03-11 CN CN201610141058.7A patent/CN107179987A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111679991A (zh) * | 2020-06-23 | 2020-09-18 | 武汉光庭信息技术股份有限公司 | 一种利用大数据生成测试用例的方法及*** |
CN111679991B (zh) * | 2020-06-23 | 2021-04-13 | 武汉光庭信息技术股份有限公司 | 一种利用大数据生成测试用例的方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chacón et al. | Multivariate kernel smoothing and its applications | |
Bentler | Causal modeling via structural equation systems | |
CN109740154A (zh) | 一种基于多任务学习的在线评论细粒度情感分析方法 | |
Miyazaki | The complexity of McKay's canonical labeling algorithm. | |
Clauset et al. | Structural inference of hierarchies in networks | |
CN106407211A (zh) | 对实体词的语义关系进行分类的方法和装置 | |
CN104765728B (zh) | 训练神经网络的方法和装置以及确定稀疏特征向量的方法 | |
CN106202543A (zh) | 基于机器学习的本体匹配方法和*** | |
Xu et al. | A novel disjoint community detection algorithm for social networks based on backbone degree and expansion | |
CN105912716A (zh) | 一种短文本分类方法及装置 | |
CN106326105A (zh) | 生成应用程序的测试用例的方法和装置 | |
CN108428200A (zh) | 一种基于案例推理的电商领域专利侵权判定***及判定方法 | |
CN102629272A (zh) | 一种基于聚类的考试***试题库优化方法 | |
CN107967285A (zh) | 数据处理方法和数据处理装置 | |
Shen et al. | Application research of Clustering algorithm based on K-means in data mining | |
CN107305543A (zh) | 对实体词的语义关系进行分类的方法和装置 | |
CN114064459A (zh) | 基于生成对抗网络和集成学习的软件缺陷预测方法 | |
CN107179987A (zh) | 针对给定规则集生成测试用例的方法和装置 | |
Machado et al. | Multidimensional scaling analysis of the solar system objects | |
CN107423423A (zh) | 数据排序方法、人工智能、图像处理、大数据库、互联网搜索、通讯、云*** | |
CN107644101A (zh) | 信息分类方法和装置、信息分类设备及计算机可读介质 | |
Amin et al. | Advanced community identification model for social networks | |
Guermazi et al. | Address validation in transportation and logistics: A machine learning based entity matching approach | |
CN107977352A (zh) | 信息处理装置和方法 | |
CN106354728A (zh) | 利用语义图生成对象之间的关联强度的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170919 |
|
WD01 | Invention patent application deemed withdrawn after publication |