CN109902002B - 组合测试用例的生成方法及装置、存储介质、计算机设备 - Google Patents
组合测试用例的生成方法及装置、存储介质、计算机设备 Download PDFInfo
- Publication number
- CN109902002B CN109902002B CN201910115097.3A CN201910115097A CN109902002B CN 109902002 B CN109902002 B CN 109902002B CN 201910115097 A CN201910115097 A CN 201910115097A CN 109902002 B CN109902002 B CN 109902002B
- Authority
- CN
- China
- Prior art keywords
- test case
- parameter
- combined test
- parameters
- constraint conditions
- 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.)
- Active
Links
Images
Abstract
本发明公开了一种组合测试用例的生成方法及装置、存储介质、终端,涉及软件测试技术领域,主要目的在于解决现有组合测试用例的参数间相互关系不确定,且针对软件之间存在的大量依赖关系及复杂的参数关系,忽略约束条件的组合测试都会产生大量无效的测试用例的问题。包括:根据约束条件及参数相关性建立组合测试用例模型;通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
Description
技术领域
本发明涉及一种软件测试技术领域,特别是涉及一种组合测试用例的生成方法及装置、存储介质、计算机设备。
背景技术
组合测试是指检测由参数交互作用而导致被测软件出现故障的测试方法,组合测试能够生成一组测试套件,即组合测试用例,包含有所需要的参数值组合,从而使检测出软件测试中因难以察觉的参数之间相互作用所触发的故障。
目前,现有实际测试场景中,组合测试用例的参数间相互关系不确定,通过对所有参数采取相同密度的组合测试会遗漏强关联参数的组合测试用例,使得完全相互独立的参数测试较为冗余;而针对软件之间存在的大量依赖关系及复杂的参数关系,忽略约束条件的组合测试都会产生大量无效的测试用例,从而降低了组合测试的有效性及质量。
发明内容
有鉴于此,本发明提供一种组合测试用例的生成方法及装置、存储介质、计算机设备,主要目的在于解决现有组合测试用例的参数间相互关系不确定,通过对所有参数采取相同密度的组合测试会遗漏强关联参数的组合测试用例,且针对软件之间存在的大量依赖关系及复杂的参数关系,忽略约束条件的组合测试都会产生大量无效的测试用例的问题。
依据本发明一个方面,提供了一种组合测试用例的生成方法,包括:
根据约束条件及参数相关性建立组合测试用例模型;
通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
进一步地,所述根据约束条件及参数相关性建立组合测试用例模型包括:
获取测试用例集,根据约束条件及参数相关性对所述测试用例集划分不同覆盖密度对应的测试用例子集,并根据所述测试用例子集建立组合测试用例模型,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件。
进一步地,所述通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数包括:
通过Json语法格式对所述组合测试用例模型进行描述,从描述后的组合测试用例模型中查找出参数的键值对,为所述键值对配置关键字及参数函数,所述参数函数包括集合函数、单值函数。
进一步地,所述根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表包括:
从所述组合测试用例模型中查找所述关键字,利用占位符替换所述关键字对应的参数函数,将替换占位符后的组合测试用例模型确定为组合测试用例模板;
通过运算所述参数函数得到参数取值,根据所述占位符、所述参数以及所述参数对应的参数取值生成参数组合列表。
进一步地,所述加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例包括:
选取所述参数组合列表中的参数及参数取值,加载所述组合测试用例模板,将所述参数及参数取值逐一代入所述组合测试用例模板中进行运行,得到组合测试用例。
进一步地,所述根据约束条件及参数相关性建立组合测试用例模型之前,所述方法还包括:
根据用例场景建立测试用例集,所述测试用例集为包括参数、取值、覆盖密度、约束关系的四元组集。
进一步地,所述方法还包括:
检测所述组合测试用例模型中的参数函数是否全部替换为占位符,若否,则重新查找所述关键字,利用占位符替换所述关键字对应的参数函数,并将运算所述参数函数后得到的参数数值、所述占位符、所述参数更新至所述参数组合列表中。
依据本发明另一个方面,提供了一种组合测试用例的生成装置,包括:
建立模块,用于根据约束条件及参数相关性建立组合测试用例模型;
配置模块,用于通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
生成模块,用于根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
运行模块,用于加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
进一步地,所述建立模块,具体用于获取测试用例集,根据约束条件及参数相关性对所述测试用例集划分不同覆盖密度对应的测试用例子集,并根据所述测试用例子集建立组合测试用例模型,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件。
进一步地,所述配置模块,具体用于通过Json语法格式对所述组合测试用例模型进行描述,从描述后的组合测试用例模型中查找出参数的键值对,为所述键值对配置关键字及参数函数,所述参数函数包括集合函数、单值函数。
进一步地,所述生成模块包括:
替换单元,用于从所述组合测试用例模型中查找所述关键字,利用占位符替换所述关键字对应的参数函数,将替换占位符后的组合测试用例模型确定为组合测试用例模板;
生成单元,用于通过运算所述参数函数得到参数取值,根据所述占位符、所述参数以及所述参数对应的参数取值生成参数组合列表。
进一步地,所述运行模块,具体用于选取所述参数组合列表中的参数及参数取值,加载所述组合测试用例模板,将所述参数及参数取值逐一代入所述组合测试用例模板中进行运行,得到组合测试用例。
进一步地,所述建立模块,还用于根据用例场景建立测试用例集,所述测试用例集为包括参数、取值、覆盖密度、约束关系的四元组集。
进一步地,所述装置还包括:
更新模块,用于检测所述组合测试用例模型中的参数函数是否全部替换为占位符,若否,则重新查找所述关键字,利用占位符替换所述关键字对应的参数函数,并将运算所述参数函数后得到的参数数值、所述占位符、所述参数更新至所述参数组合列表中。
根据本发明的又一方面,提供了一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述组合测试用例的生成方法对应的操作。
根据本发明的再一方面,提供了一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述组合测试用例的生成方法对应的操作。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明提供了一种组合测试用例的生成方法及装置、存储介质、计算机设备,与现有技术组合测试用例的参数间相互关系不确定,通过对所有参数采取相同密度的组合测试会遗漏强关联参数的组合测试用例,且针对软件之间存在的大量依赖关系及复杂的参数关系,忽略约束条件的组合测试都会产生大量无效的测试用例相比,本发明实施例通过约束条件与参数的相关性建立组合测试用例模型,利用预设描述语言进行描述后将组合测试用例模型中的参数配置为参数函数,并根据配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表,通过将参数组合列表中的数据代入至加载的组合测试用例模板中运行得到组成测试用例,实现测试质量的提高,根据不同约束条件处理组合测试用例模型,及灵活性选取覆盖密度,提高了组合测试的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对应本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种组合测试用例的生成方法流程图;
图2示出了本发明实施例提供的另一种组合测试用例的生成方法流程图;
图3示出了本发明实施例提供的一种解析组合测试用例模板步骤的流程图;
图4示出了本发明实施例提供的一种组合测试用例生成步骤的流程图;
图5示出了本发明实施例提供的一种组合测试用例的生成装置组成框图;
图6示出了本发明实施例提供的另一种组合测试用例的生成装置组成框图;
图7示出了本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种组合测试用例的生成方法,如图1所示,该方法包括:
101、根据约束条件及参数相关性建立组合测试用例模型。
本发明实施例中,所述组合测试用例模型是根据包含参数、取值、覆盖密度、约束关系的四元组集利用约束条件及参数相关性进行限定表示,其中,约束条件为根据约束关系集合所限定的逻辑关系,约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件,所述禁止约束条件为测试用例集中不可出现的组合;所述蕴含约束条件与禁止约束条件可进行相互转换,即蕴含约束条件即指当一个参数出现时另一个参数也出现,例如,当p为真时,另一个参数也为真;所述屏蔽约束条件为测试用例集中当满足特定条件时,参数不参与取值,或任意取值。所述参数相关性为不同参数之间相关性的强弱关系,例如,参数a、b、c对一段逻辑关系同时有影响,如if(a<0&b>0&c==0),则参数a、b、c为相关性较强,如参数d、e、f对程序的不同功能模块起作用,则相关性较弱。
需要说明的是,由于组合测试用例模型是由包含参数、取值、覆盖密度、约束关系的四元组集组成,因此,当约束关系限定为具体的约束条件后,组合测试用例模型即可表示为不同覆盖密度与参数、取值之间的集合表示,如SUT={P,V,r}={Ps1,Vs1,rs1}∪{Ps2,Vs2,rs2}∪.....{Psn,Vsn,rsn},其中,P为n个参数集合,P={P1,P2...Pn},V为参数P对应的有限取值集合,即n个参数对应的取值集合V={V1,V2...Vn},r为覆盖密度,即组合测试用例模型SUT为多个覆盖密度的子集组成的并集集合。
102、通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数。
本发明实施例,为了将建立的组合测试用例模型利用计算机语言进行描述,选取的所述预设描述语言为Json语言,通过Json语言对组合测试用例模型SUT进行代码撰写。其中,所述组合测试用例中的参数在利用Json语言进行描述时,是利用键值对(key,value)进行表达,因此,在对参数配置用于参数计算的参数函数即为对键值对(key,value)进行配置参数函数,参数函数包括集合函数、单值函数。
103、根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表。
其中,所述组合测试用例模板为带有参数函数替换占位符的模板,所述参数组合列表中包含有不同参数利用参数函数计算出的取值、以及替换参数函数对应的占位符,即参数组合列表中的取值为通过参数函数计算参数的取值,且为根据对应的占位符与参数之间的对应关系而生成。
需要说明的是,组合测试用例模板即为利用Json语言编写的、利用占位符替换参数函数的组合测试用例模型,当与生成的参数组合列表进行组合时,可以得到不同参数数组值的测试用例。
104、加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
对于本发明实施例,为了可以实现不同组合的参数数组值的测试用例,加载已生成的组合测试用例模板及参数组合列表,通过对参数组合列表遍历每个参数对应的数值通过占位符代入组合测试用例模板中,从而得到组合测试用例。
本发明提供了一种组合测试用例的生成方法,本发明实施例通过约束条件与参数的相关性建立组合测试用例模型,利用预设描述语言进行描述后将组合测试用例模型中的参数配置为参数函数,并根据配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表,通过将参数组合列表中的数据代入至加载的组合测试用例模板中运行得到组成测试用例,实现测试质量的提高,根据不同约束条件处理组合测试用例模型,及灵活性选取覆盖密度,提高了组合测试的效率。
本发明实施例提供了另一种组合测试用例的生成方法,如图2所示,该方法包括:
201、根据用例场景建立测试用例集。
对于本发明实施例,为了为建立组合测试用例模型作数据基础,所述用例场景为实例化的用例,不同实例数据可以匹配不同用例场景,所述测试用例集为包括参数、取值、覆盖密度、约束关系的四元组集,如SUT={P,V,r,C},其中,P为n个参数集合,P={P1,P2...Pn},V为参数P对应的有限取值集合,即n个参数对应的取值集合V={V1,V2...Vn},r为覆盖密度,C为约束关系集。
需要说明的是,参数集合中的1条具体的数值取值为一条测试数据,如一条n个数值取值的参数集合,对应的,m条测试用例即构成了测试用例集T={t1,t2,...,tm},即测试用例可为m*n的矩阵。另外,覆盖所有参数取值的取值的测试集合称为全覆盖可以表示为Tall=V1×V2×...×Vn。
202、获取测试用例集,根据约束条件及参数相关性对所述测试用例集划分不同覆盖密度对应的测试用例子集,并根据所述测试用例子集建立组合测试用例模型。
对于本发明实施例,作为根据约束条件及参数相关性建立组合测试用例模型步骤的具体限定及进一步地说明,所述测试用例集即为覆盖所有参数取值的取值的测试集SUT={P,V,r,C}。在通过约束条件与参数相关性对测试用例集进行约束可以转换为多个子用例集的并集,如SUT={P,V,r,C}={Ps1,Vs1,r}∪{Ps2,Vs2,r}∪.....{Psn,Vsn,r},其中,P为n个参数集合,P={P1,P2...Pn},V为参数P对应的有限取值集合,即n个参数对应的取值集合V={V1,V2...Vn},r为覆盖密度,根据不同的参数相关性的实际情况可以对覆盖密度选定为不同的数值,优选的,若参数集合Ps1中参数是强相关性,则配置覆盖密度为3,若参数集合Ps2中参数是弱相关性,则配置覆盖密度为2,则得到的组合测试用例模型为SUT={P,V,r}={Ps1,Vs1,3}∪{Ps2,Vs2,2}。
需要说明的是,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件,所述禁止约束条件为测试用例集中不可出现的组合,例如,SUT={P,V,r,C},若禁止条件为则用例为所述蕴含约束条件与禁止约束条件可进行相互转换,即蕴含约束条件即指当一个参数出现时另一个参数也出现,例如,当p为真时,另一个参数也为真,例如,SUT={P,V,r,C},若蕴含约束为则可以转化为则所述屏蔽约束条件为测试用例集中当满足特定条件时,参数不参与取值,或任意取值,例如,SUT={P,V,r,C},若屏蔽条件为时,屏蔽参数p2,则屏蔽约束表示为即
203、通过Json语法格式对所述组合测试用例模型进行描述,从描述后的组合测试用例模型中查找出参数的键值对,为所述键值对配置关键字及参数函数。
对于本发明实施例,作为通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数步骤的进一步地细化及说明,通过Json语法格式对组合测试用例模型进行代码描述,且由于限定了约束条件,因此,利用Json语法格式对组合测试用例模型描述后得到多个无约束条件的子模型。另外,由于利用Json语法格式对组合测试模型进行描述后,参数是通过键值对进行表示的,因此,为了将参数函数配置于参数,则查找组合测试模型中参数键值对(key,value)。针对key加入关键字,用于组合测试用例模型的配置,即覆盖密度的配置,如$cover":r,为覆盖密度需要达到r,本发明实施例覆盖密度配置为2。针对value加入集合函数的关键字,并与集合函数对应的单值函数进行匹配,具体可以通过value配置集合函数,用于表示参数的取值通过集合函数运算得到,单值函数则为根据集合函数取值的多个参数取值中随机选取的参数取值,本发明实施例对关键字的形式不做具体限定。集合函数为根据集合取值函数返回一组取值的集合,集合取值函数为返回值为set类型的函数,如"parameter2":"$functionSet(args)"中,参数parameter2根据取值函数functionSet(args)返回为一个取值集合;单值函数为参数根据单值取值函数返回为一个String类型的动态值,即为返回一个为String类型动态值,如"parameter3":"$functionRandom(args)"中,参数parameter3根据取值函数$functionRandom(args)返回一个数值。
需要说明的是,集合函数可以通过java动态代理机制进行调用,可以包括枚取类型返回值函数$emunSet(args)、整型区间函数&rangeSetInt(args)、浮点数区间函数&rangeSetDouble(args)。单值函数可以通过通过java动态代理机制进行调用,可以包括从枚取集合中返回一个随机值的函数$randomEmun(args)、从整型区间中返回一个取值的函数$randomRangeInt(args)等,本发明实施例不做具体限定。另外,代码实现基于java语言,测试框架采用TestNG,利用TestNG的DataProvider功能实现数据与执行过程地分离,本发明实施例不做具体限定。
204、从所述组合测试用例模型中查找所述关键字,利用占位符替换所述关键字对应的参数函数,将替换占位符后的组合测试用例模型确定为组合测试用例模板。
对于本发明实施例,为了将组合测试用例模型中的所有子模型均进行关键字对应参数函数的替换,以Json语言代码层来讲,将组合测试用例模型的所有子模型seed作为jsonObject对象进行解析,从中查找出加入关键字的键值对,进行占位符的替换。例如,当value配置的是集合函数的关键字时,将value替换为单值函数对应的占位符$value(arg*),本发明实施例不做具体限定。另外,由于组成测试用例模型中包含多个子模型,因此,在进行占位符替换时,可以通过对每个jsonObject对象件解析,从而遍历所有的子模型,完成整个组合测试用例模型中参数函数的占位符替换。
205、通过运算所述参数函数得到参数取值,根据所述占位符、所述参数以及所述参数对应的参数取值生成参数组合列表。
对于本发明实施例,为了生成组合测试用例模型对应的组合参数,通过运算参数函数得到参数取值,并将参数取值、占位符以及对应的参数写入参数组合列表中。另外,为了得到组合测试用例模型中所有参数组合的参数取值,在进行参数取值运算时,分别对每个子模板进行遍历,运算全部的参数函数。如图3所示,解析组合测试用例模板以便占位符替换的具体步骤包括:解析组合测试用例模板的一个jsonObject,当查找到键值对(key,value)后,判断键值对是否根据集合函数的关键字进行占位符替换单值函数的处理步骤,若未处理,则判断value是否为jsonArray数组类型,若为jsonArray数组类型,进行下一个jsonObject的解析,若不为jsonArray数组类型,则当value中含有集合函数的关键字,则计算参数函数的取值为集合V,并利用占位符$arg*替换单值函数,根据V和占位符$arg*写入参数组合列表M中,然后解析下一个jsonObject。另外,在判断键值对是否根据集合函数的关键字进行占位符替换单值函数的处理步骤之前,判断键值对中的key是否含有关键字;若含有关键字,则根据关键字确定覆盖密度,并剔除键值对,并进行下一个jsonObject的解析;若key中不含有关键字,则判断键值对是否进行占位符替换参数函数的处理步骤。
需要说明的是,参数组合列表中包含有不同参数利用参数函数计算出的取值、以及替换参数函数对应的占位符,一般的,在进行参数取值存储至参数组合列表之前,需要对参数组合列表进行初始化,如将参数组合列表中的参数取值进行清空,以便将新的参数取值进行存储。
优选的,本发明实施例中选定覆盖密度C为2,则生成对应的限定覆盖密度的参数组合列表MC。
206、选取所述参数组合列表中的参数及参数取值,加载所述组合测试用例模板,将所述参数及参数取值逐一代入所述组合测试用例模板中进行运行,得到组合测试用例。
对于本发明实施例,为了得到代入参数组合数值的组合测试用例,遍历选取参数组合列表中的一条组合测试数据,即一组参数及对应的参数取值,加载组合测试用例模板,迭代判断全部jsonObject中的键值对中含有单值函数的占位符,则调用单值函数计算返回值替换为value的取值。如图4所示,组合测试用例生成的具体步骤为:解析组合测试用例模板的一个jsonObject,当查找到键值对(key,value)后,判断键值对是否单值函数的占位符进行占位符替换单值函数的返回值处理步骤,若未处理,则判断value是否为jsonArray数组类型,若为jsonArray数组类型,进行下一个jsonObject的解析,若不为jsonArray数组类型,则当value中含有单值函数的占位符,则计算单值函数的取值,并利用占位符$arg*替换单值函数运算后的取值,然后解析下一个jsonObject。另外,在判断键值对是否单值函数的占位符进行占位符替换单值函数的返回值处理步骤之前,判断MC表中是否存在下一组数据;若存在下一组数据,则根据此组数据对jsonObject进行赋值,并进行jsonObject的解析;若不存在下一组数据,则完成数据的代入,得到组合测试用例。
进一步地,为了确保组合测试用例模型中参数函数的替换不被遗漏,本发明实施例还包括:检测所述组合测试用例模型中的参数函数是否全部替换为占位符,若否,则重新查找所述关键字,利用占位符替换所述关键字对应的参数函数,并将运算所述参数函数后得到的参数数值、所述占位符、所述参数更新至所述参数组合列表中。
对于本发明实施例,重新查找关键字可以在替换完参数函数的组合测试用例模型的基础上进行查找,以便减少查找需要替换占位符的参数函数。所述将参数数值、占位符、参数更新至参数组合列表中为增加参数数值、占位符、参数值参数组合列表中。
对于本发明实施例,具体的应用场景可以如下所示,但不限于此,包括:对于测试用例集SUT={P,V,r,C},包括4个参数{p1,p2,p3,p4},p1、p3各有3个取值为(V1={a1,a2,a3},V3={b1,b2,b3}),禁止条件为cf=(p1=a1,p3=b1),覆盖密度r=2,则根据约束关系及覆盖密度建立组合测试用例模型为{Tall,cf}=(V1/a1×V3+a1×V3/b1)×Vr,利用Json语法格式进行描述为[{"ext":{"p1":”$enumSet(a2,a3)”;"p2":"value";},"p3":"$enumSet(b1,b2,b3)";"p4":"$rangeInt(0,100)";"$cover":2},{"ext":{"p1":”$enumSet(a1)”;"p2":"value"},"p3":"$enumSet(b2,b3)","p4":"$rangeInt(0,100)","$cover":2}]。对上述组合测试用例模型查找参数的键值对,并根据配置的关键字及参数函数进行占位符替换,得到组合测试用例模板{"ext":"p1":”$value(arg1)”;"p2":"value"},"p3":"$value(arg2)","p4":"$value(arg3)"},且生成参数组合列表M,如表1所示,其中,rangeInt(0,100)根据边界值规则取上下边界值,及一个随机变量10。进一步地,限定覆盖密度为2后的参数组合列表MC,如表2所示。取出MC中一条数据代入组合测试用例模板生成一条组合测试用例,为{"ext":{"p1":"a2";"p2":"value"},"p3":"b1","p4":"0",},执行组合测试用例,并取MC中下一条数据代入组合测试用例模板生成一条组合测试用例,直至遍历MC中所有的数据。
表1
arg1 | arg2 | arg3 |
a<sub>2</sub> | b<sub>1</sub> | 0 |
a<sub>3</sub> | b<sub>2</sub> | 100 |
b<sub>3</sub> | 10 |
表2
本发明提供了另一种组合测试用例的生成方法,本发明实施例通过约束条件与参数的相关性建立组合测试用例模型,利用预设描述语言进行描述后将组合测试用例模型中的参数配置为参数函数,并根据配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表,通过将参数组合列表中的数据代入至加载的组合测试用例模板中运行得到组成测试用例,实现测试质量的提高,根据不同约束条件处理组合测试用例模型,及灵活性选取覆盖密度,提高了组合测试的效率。
进一步的,作为对上述图1所示方法的实现,本发明实施例提供了一种组合测试用例的生成装置,如图5所示,该装置包括:建立模块31、配置模块32、生成模块33、运行模块34。
建立模块31,用于根据约束条件及参数相关性建立组合测试用例模型;
配置模块32,用于通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
生成模块33,用于根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
运行模块34,用于加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
本发明提供了一种组合测试用例的生成装置,本发明实施例通过约束条件与参数的相关性建立组合测试用例模型,利用预设描述语言进行描述后将组合测试用例模型中的参数配置为参数函数,并根据配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表,通过将参数组合列表中的数据代入至加载的组合测试用例模板中运行得到组成测试用例,实现测试质量的提高,根据不同约束条件处理组合测试用例模型,及灵活性选取覆盖密度,提高了组合测试的效率。
进一步的,作为对上述图2所示方法的实现,本发明实施例提供了另一种组合测试用例的生成装置,如图6所示,该装置包括:建立模块41、配置模块42、生成模块43、运行模块44、更新模块45。
建立模块41,用于根据约束条件及参数相关性建立组合测试用例模型;
配置模块42,用于通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
生成模块43,用于根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
运行模块44,用于加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
进一步地,所述建立模块41,具体用于获取测试用例集,根据约束条件及参数相关性对所述测试用例集划分不同覆盖密度对应的测试用例子集,并根据所述测试用例子集建立组合测试用例模型,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件。
进一步地,所述配置模块42,具体用于通过Json语法格式对所述组合测试用例模型进行描述,从描述后的组合测试用例模型中查找出参数的键值对,为所述键值对配置关键字及参数函数,所述参数函数包括集合函数、单值函数。
进一步地,所述生成模块43包括:
替换单元4301,用于从所述组合测试用例模型中查找所述关键字,利用占位符替换所述关键字对应的参数函数,将替换占位符后的组合测试用例模型确定为组合测试用例模板;
生成单元4302,用于通过运算所述参数函数得到参数取值,根据所述占位符、所述参数以及所述参数对应的参数取值生成参数组合列表。
进一步地,所述运行模块44,具体用于选取所述参数组合列表中的参数及参数取值,加载所述组合测试用例模板,将所述参数及参数取值逐一代入所述组合测试用例模板中进行运行,得到组合测试用例。
进一步地,所述建立模块41,还用于根据用例场景建立测试用例集,所述测试用例集为包括参数、取值、覆盖密度、约束关系的四元组集。
进一步地,所述装置还包括:
更新模块45,用于检测所述组合测试用例模型中的参数函数是否全部替换为占位符,若否,则重新查找所述关键字,利用占位符替换所述关键字对应的参数函数,并将运算所述参数函数后得到的参数数值、所述占位符、所述参数更新至所述参数组合列表中。
本发明提供了一种组合测试用例的生成方法,本发明实施例通过约束条件与参数的相关性建立组合测试用例模型,利用预设描述语言进行描述后将组合测试用例模型中的参数配置为参数函数,并根据配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表,通过将参数组合列表中的数据代入至加载的组合测试用例模板中运行得到组成测试用例,实现测试质量的提高,根据不同约束条件处理组合测试用例模型,及灵活性选取覆盖密度,提高了组合测试的效率。
根据本发明一个实施例提供了一种存储介质,所述存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的组合测试用例的生成方法。
图7示出了根据本发明一个实施例提供的一种计算机设备的结构示意图,本发明具体实施例并不对计算机设备的具体实现做限定。
如图7所示,该计算机设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器502,用于执行程序510,具体可以执行上述组合测试用例的生成方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算机设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:
根据约束条件及参数相关性建立组合测试用例模型;
通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对应本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (16)
1.一种组合测试用例的生成方法,其特征在于,包括:
根据约束条件及参数相关性建立组合测试用例模型,所述参数相关性为不同参数之间相关性的强弱关系,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件;
通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
2.根据权利要求1所述的方法,其特征在于,所述根据约束条件及参数相关性建立组合测试用例模型包括:
获取测试用例集,根据约束条件及参数相关性对所述测试用例集划分不同覆盖密度对应的测试用例子集,并根据所述测试用例子集建立组合测试用例模型,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件。
3.根据权利要求1或2所述的方法,其特征在于,所述通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数包括:
通过Json语法格式对所述组合测试用例模型进行描述,从描述后的组合测试用例模型中查找出参数的键值对,为所述键值对配置关键字及参数函数,所述参数函数包括集合函数、单值函数。
4.根据权利要求3所述的方法,其特征在于,所述根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表包括:
从所述组合测试用例模型中查找所述关键字,利用占位符替换所述关键字对应的参数函数,将替换占位符后的组合测试用例模型确定为组合测试用例模板;
通过运算所述参数函数得到参数取值,根据所述占位符、所述参数以及所述参数对应的参数取值生成参数组合列表。
5.根据权利要求4所述的方法,其特征在于,所述加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例包括:
选取所述参数组合列表中的参数及参数取值,加载所述组合测试用例模板,将所述参数及参数取值逐一代入所述组合测试用例模板中进行运行,得到组合测试用例。
6.根据权利要求3所述的方法,其特征在于,所述根据约束条件及参数相关性建立组合测试用例模型之前,所述方法还包括:
根据用例场景建立测试用例集,所述测试用例集为包括参数、取值、覆盖密度、约束关系的四元组集。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
检测所述组合测试用例模型中的参数函数是否全部替换为占位符,若否,则重新查找所述关键字,利用占位符替换所述关键字对应的参数函数,并将运算所述参数函数后得到的参数数值、所述占位符、所述参数更新至所述参数组合列表中。
8.一种组合测试用例的生成装置,其特征在于,包括:
建立模块,用于根据约束条件及参数相关性建立组合测试用例模型,所述参数相关性为不同参数之间相关性的强弱关系,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件;
配置模块,用于通过预设描述语言对所述组合测试用例模型进行描述,并为描述后的组合测试用例模型中参数配置用于参数计算的参数函数;
生成模块,用于根据完成配置参数函数的组合测试用例模型生成组合测试用例模板及参数组合列表;
运行模块,用于加载所述组合测试用例模板及所述参数组合列表,并运行所述组合测试用例模板及所述参数组合列表生成组合测试用例。
9.根据权利要求8所述的装置,其特征在于,
所述建立模块,具体用于获取测试用例集,根据约束条件及参数相关性对所述测试用例集划分不同覆盖密度对应的测试用例子集,并根据所述测试用例子集建立组合测试用例模型,所述约束条件包括禁止约束条件、蕴含约束条件、屏蔽约束条件。
10.根据权利要求8或9所述的装置,其特征在于,
所述配置模块,具体用于通过Json语法格式对所述组合测试用例模型进行描述,从描述后的组合测试用例模型中查找出参数的键值对,为所述键值对配置关键字及参数函数,所述参数函数包括集合函数、单值函数。
11.根据权利要求10所述的装置,其特征在于,所述生成模块包括:
替换单元,用于从所述组合测试用例模型中查找所述关键字,利用占位符替换所述关键字对应的参数函数,将替换占位符后的组合测试用例模型确定为组合测试用例模板;
生成单元,用于通过运算所述参数函数得到参数取值,根据所述占位符、所述参数以及所述参数对应的参数取值生成参数组合列表。
12.根据权利要求11所述的装置,其特征在于,
所述运行模块,具体用于选取所述参数组合列表中的参数及参数取值,加载所述组合测试用例模板,将所述参数及参数取值逐一代入所述组合测试用例模板中进行运行,得到组合测试用例。
13.根据权利要求10所述的装置,其特征在于,
所述建立模块,还用于根据用例场景建立测试用例集,所述测试用例集为包括参数、取值、覆盖密度、约束关系的四元组集。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
更新模块,用于检测所述组合测试用例模型中的参数函数是否全部替换为占位符,若否,则重新查找所述关键字,利用占位符替换所述关键字对应的参数函数,并将运算所述参数函数后得到的参数数值、所述占位符、所述参数更新至所述参数组合列表中。
15.一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的组合测试用例的生成方法对应的操作。
16.一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的组合测试用例的生成方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910115097.3A CN109902002B (zh) | 2019-02-14 | 2019-02-14 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910115097.3A CN109902002B (zh) | 2019-02-14 | 2019-02-14 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902002A CN109902002A (zh) | 2019-06-18 |
CN109902002B true CN109902002B (zh) | 2020-06-02 |
Family
ID=66944883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910115097.3A Active CN109902002B (zh) | 2019-02-14 | 2019-02-14 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902002B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177183B (zh) * | 2019-12-24 | 2023-07-04 | 中国建设银行股份有限公司 | 一种生成数据库访问语句的方法和装置 |
CN111400164B (zh) * | 2020-02-07 | 2023-05-26 | 浙江口碑网络技术有限公司 | 一种软件测试方法及装置 |
CN111488287B (zh) * | 2020-04-16 | 2023-05-16 | 南开大学 | 注入漏洞测试用例的生成方法、装置、介质及电子设备 |
CN112015639B (zh) * | 2020-07-31 | 2024-03-15 | 北京轩宇信息技术有限公司 | 一种星载软件测试用例的生成方法及装置 |
CN112905446A (zh) * | 2020-12-29 | 2021-06-04 | 深圳前海微众银行股份有限公司 | 测试用例的生成方法、装置、设备和存储介质 |
CN113127350B (zh) * | 2021-04-20 | 2022-07-01 | 南华大学 | 基于交互关系的组合测试数据生成方法和相关设备 |
CN114928582B (zh) * | 2022-05-17 | 2023-06-20 | 中国平安财产保险股份有限公司 | 资源组合方法、装置、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7721261B2 (en) * | 2005-08-30 | 2010-05-18 | Motorola, Inc. | Method and apparatus for generating pairwise combinatorial tests from a graphic representation |
CN101236494A (zh) * | 2008-02-02 | 2008-08-06 | 南京大学 | 一种基于覆盖密度的信息系统测试组合生成方法 |
CN103389895B (zh) * | 2012-08-30 | 2016-11-09 | 百度在线网络技术(北京)有限公司 | 一种前端页面的生成方法及系统 |
CN105335283B (zh) * | 2014-08-01 | 2018-07-06 | 阿里巴巴集团控股有限公司 | 终端设备中的应用测试方法及装置 |
CN104461908B (zh) * | 2014-12-31 | 2017-04-05 | 中国科学院软件研究所 | 一种基于软件组合测试的回归测试用例重用方法 |
CN107341102B (zh) * | 2017-06-12 | 2020-07-14 | 奇安信科技集团股份有限公司 | 一种测试用例文件生成方法及装置 |
CN108415832B (zh) * | 2018-02-07 | 2021-03-02 | 平安科技(深圳)有限公司 | 接口自动化测试方法、装置、设备及存储介质 |
CN108549605B (zh) * | 2018-04-13 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种自动化测试方法 |
-
2019
- 2019-02-14 CN CN201910115097.3A patent/CN109902002B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109902002A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902002B (zh) | 组合测试用例的生成方法及装置、存储介质、计算机设备 | |
US11263116B2 (en) | Champion test case generation | |
US10909028B1 (en) | Multi-version regression tester for source code | |
US8356278B2 (en) | Method, system and program product for detecting deviation from software development best practice resource in a code sharing system | |
JP2018185808A (ja) | ブロックチェーンに基づくスマート契約をテストする装置及び方法 | |
CN106909543B (zh) | 一种规则引擎的模式匹配方法和装置 | |
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
CN106557413A (zh) | 基于代码覆盖率获取测试用例的方法和设备 | |
US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
CN113128143B (zh) | Ai处理器的仿真方法、装置、计算机设备及存储介质 | |
US11204860B2 (en) | Methods and apparatuses for generating smart contract test case | |
CN111859047A (zh) | 一种故障解决方法及装置 | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
US11663113B2 (en) | Real time fault localization using combinatorial test design techniques and test case priority selection | |
CN116185869A (zh) | 一种软件测试方法、系统、计算机设备及存储介质 | |
CN105912467A (zh) | 一种性能测试方法及装置 | |
US9489284B2 (en) | Debugging method and computer program product | |
US20210303448A1 (en) | Test case generation for software development using machine learning | |
US11036624B2 (en) | Self healing software utilizing regression test fingerprints | |
CN111949530A (zh) | 测试结果的预测方法、装置、计算机设备及存储介质 | |
CN114143235A (zh) | Nfv自动测试方法、装置、设备及存储介质 | |
US11036613B1 (en) | Regression analysis for software development and management using machine learning | |
CN116578751B (zh) | 一种主路径分析方法及装置 | |
Sun et al. | Testing Sequence Generation Method Based on Unrelated Behaviors Serializing | |
CN115757123B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |