CN112905446A - 测试用例的生成方法、装置、设备和存储介质 - Google Patents
测试用例的生成方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN112905446A CN112905446A CN202011593648.6A CN202011593648A CN112905446A CN 112905446 A CN112905446 A CN 112905446A CN 202011593648 A CN202011593648 A CN 202011593648A CN 112905446 A CN112905446 A CN 112905446A
- Authority
- CN
- China
- Prior art keywords
- constraint
- test case
- parameters
- parameter
- relation
- 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.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 396
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000012545 processing Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 description 26
- 238000012795 verification Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013215 result calculation Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
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)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例提供一种测试用例的生成方法、装置、设备和存储介质。该方法包括:根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数;获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;确定每个所述约束关系中参数在各个所述待选测试用例中对应的参数值;根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在多个待选测试用例中确定目标测试用例,所述目标测试用例中的参数满足所述至少一个约束关系。本申请实施例提高了测试用例生成的效率。
Description
技术领域
本申请实施例涉及金融科技(Fintech)技术领域,尤其涉及一种测试用例的生成方法、装置、设备和存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,测试技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
相关技术中,根据预先规定的参数之间的约束关系,人为设计符合约束关系的测试用例,根据设计的测试用例进行测试,上述方案中人为的设计和判断测试用例是否符合参数之间的约束关系,效率较低。
发明内容
本申请实施例提供一种测试用例的生成方法、装置、设备和存储介质,以提高生成测试用例的效率。
第一方面,本申请实施例提供一种测试用例的生成方法,包括:
根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数;
获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;
确定每个所述约束关系中参数在各个所述待选测试用例中对应的参数值;
根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在所述多个待选测试用例中确定目标测试用例,所述目标测试用例中的参数满足所述至少一个约束关系。
第二方面,本申请实施例提供一种测试用例的生成装置,包括:
预处理模块,用于根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数;
获取模块,用于获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;
处理模块,用于确定每个所述约束关系中参数在各个所述待选测试用例中对应的参数值;根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在所述多个待选测试用例中确定目标测试用例,所述目标测试用例中的参数满足所述至少一个约束关系。
第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法。
第四方面,本申请实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行第一方面中任一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的方法。
本申请实施例提供的测试用例的生成方法、装置、设备和存储介质,根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,N个参数的类型不同;获取约束信息,约束信息中包括N种类型的参数之间的至少一个约束关系;进一步,确定每个约束关系中参数在各个待选测试用例中对应的参数值;根据约束关系的类型,以及约束关系中参数在各个待选测试用例中对应的参数值是否满足约束关系的结果,能够从多个待选测试用例中确定出目标测试用例,该目标测试用例中的参数满足上述约束关系,相比人为设计并判断测试用例是否符合参数之间的约束关系,提高了测试用例生成的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本申请实施例提供的系统架构示意图;
图2是本申请提供的测试用例的生成方法一实施例的流程示意图;
图3是本申请一实施例提供的并行执行原理示意图;
图4是本申请一实施例提供的判断是否满足约束关系的流程示意图;
图5是本申请一实施例提供的逻辑运算流程示意图;
图6是本申请提供的测试用例的生成装置一实施例的结构示意图;
图7是本申请提供的电子设备实施例的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本申请的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本申请实施例涉及的部分词汇和应用场景进行介绍。
图1为本申请实施例提供的系统架构示意图。如图1所示,本申请实施例的系统架构中可以包括但不限于:电子设备11和服务器12。
其中,电子设备11和服务器12之间可以通过网络连接。
本申请实施例提供的方法可由一个电子设备如处理器执行相应的软件代码实现,也可由一个电子设备在执行相应的软件代码的同时,通过和控制器进行数据交互来实现。
相关技术中,根据预先规定的参数之间的约束关系,人为设计符合约束关系的测试用例,根据设计的测试用例进行测试,上述方案中人为的设计和判断测试用例是否符合参数之间的约束关系,效率较低。
本申请实施例的方法,先根据预设的参数生成多个待选测试用例,例如可以采用排列组合的方式,再在该多个待选测试用例中选择出满足约束关系的目标测试用例,效率较高。
本申请实施例的方法,可以应用于接口测试,接口测试是对测试系统组件间接口的测试。接口测试主要用于检测外部系统与待测试系统之间以及待测试系统中内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
需要说明的是,本申请实施例的方法除了接口测试,对于其他测试场景同样适用,本申请实施例对此并不限定。
下面以具体的实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2是本申请提供的测试用例的生成方法一实施例的流程示意图。如图2所示,本实施例提供的方法,包括:
步骤101、根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数。
具体的,在生成测试用例之前,首先获取生成测试用例的参数,如包括N种类型的参数,N为大于或等于1的整数。
对N个不同类型参数的取值进行排列组合,生成待选测试用例。每个待选测试用例中均包括N个参数。
假设待测试的接口包括以下参数,如表1所示:
表1
根据表1中对参数的定义,可得到参数正常的取值,例如表2中所示:
表2
参数名称 | 描述 | 参数测试取值 |
Username | 用户名 | Hello |
VerifyType | 验证方式 | 1或者2 |
Mobile | 手机号 | 空或13712345678 |
邮箱 | 空或hello@126.com |
根据表2中每个参数的取值情况,生成全量覆盖的测试用例,即待选测试用例,待选测试用例的个数就是每个参数的取值个数相乘。例如,表2中待选测试用例的数量就是1乘2乘2乘2=8个。
假设参数是P1、P2、P3…Pn;每个参数的取值个数是X1、X2、X3…Xn
那么待选测试用例的个数是:X1×X2×X3…×Xn。
在一实施例中,如果参数过多,可以生成两两组合用例,来减少用例数。
待选测试用例例如表3中所示:
表3
用例Id | UserName | VerifyType | Mobile | |
1 | Hello | 1 | 13712345678 | hello@126.com |
2 | Hello | 2 | 空 | hello@126.com |
3 | Hello | 1 | 空 | hello@126.com |
4 | Hello | 1 | 13712345678 | 空 |
5 | Hello | 2 | 13712345678 | hello@126.com |
6 | Hello | 2 | 空 | 空 |
7 | Hello | 2 | 13712345678 | 空 |
8 | Hello | 1 | 空 | 空 |
步骤102、获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;
具体的,约束信息表示参数之间需要满足的约束关系,可以包括一个或多个约束关系。
在一实施例中,约束信息中的约束关系可以通过表达式进行表示,例如包括:条件表达式、非条件表达式。
假如存在以下约束关系:
a)如果验证方式VerifyType是1,那么手机号Mobile不能为空;
b)如果验证方式VerifyType是2,那么邮箱Mail不能为空。
步骤103、确定每个约束关系中参数在各个待选测试用例中对应的参数值;
具体的,针对任意一个待选测试用例,确定每个约束关系中参数在该待选测试用例中对应的参数值。
例如,表3中用例Id1,约束关系为:如果验证方式VerifyType是1,那么手机号Mobile不能为空,在该测试用例中该约束关系中参数为VerifyType和Mobile,该参数VerifyType和Mobile对应的参数值分别为1和13712345678。
步骤104、根据约束关系的类型,以及约束关系中参数在各个待选测试用例中对应的参数值是否满足约束关系的结果,在多个待选测试用例中确定目标测试用例,目标测试用例中的参数满足至少一个约束关系。
具体的,由于参数之间存在约束关系,生成的多个待选测试用例里面有些参数对应的取值可能不符合约束关系,因此需要将不符合约束关系的待选测试用例剔除,得到目标测试用例。
例如,表3中Id3、Id6、Id7和Id8不符合约束关系。
具体可以根据约束关系的类型,以及各个约束关系中参数在待选测试用例中对应的参数值是否满足约束关系的结果,确定该待选测试用例是否为目标测试用例。
例如,表3中用例Id1,约束关系为:如果验证方式VerifyType是1,那么手机号Mobile不能为空,在该测试用例中该约束关系中参数为VerifyType和Mobile,该参数VerifyType和Mobile对应的参数值分别为1和13712345678。
根据该测试用例中参数VerifyType和Mobile的取值,是否满足约束关系,根据是否满足约束关系的结果,确定该测试用例是否为目标测试用例。例如,用例Id1为目标测试用例。
本实施例的方法,根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,N个参数的类型不同;获取约束信息,约束信息中包括N种类型的参数之间的至少一个约束关系;进一步,确定每个约束关系中参数在各个待选测试用例中对应的参数值;根据约束关系的类型,以及约束关系中参数在各个待选测试用例中对应的参数值是否满足约束关系的结果,能够从多个待选测试用例中确定出目标测试用例,该目标测试用例中的参数满足上述约束关系,相比人为设计并判断测试用例是否符合参数之间的约束关系,提高了测试用例生成的效率。
在一实施例中,步骤104具体可以通过如下方式实现:
步骤1041、针对任意一个约束关系,确定所述约束关系的类型,所述类型为条件类型或者非条件类型;
步骤1042、根据所述约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系;
步骤1043、根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,确定各个所述待选测试用例是否为所述目标测试用例。
具体的,确定待选测试用例是否为目标测试用例,需要确定约束关系的类型,对于不同类型的约束关系,根据该约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足约束关系;进而根据约束关系的类型,以及约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,确定该待选测试用例是否为目标测试用例。
因此,对于任意一个约束关系来说,需确定该约束关系中参数在各个所述待选测试用例中对应的参数值是否满足该约束关系。
例如,表3中用例Id1,约束关系为:如果验证方式VerifyType是1,那么手机号Mobile不能为空,在该测试用例中该约束关系对应的参数为VerifyType和Mobile。
根据该测试用例中参数VerifyType和Mobile的取值分别为1和13712345678,确定满足约束关系,则确定该测试用例为目标测试用例。
上述实施方式中,根据约束关系的类型,确定约束关系对应的参数是否满足约束关系;进一步,根据约束关系的类型,以及约束关系中参数在各个所述待选测试用例中对应的参数值是否满足约束关系的结果,确定待选测试用例是否为目标测试用例,对于不同类型的约束关系,约束关系中参数在各个所述待选测试用例中对应的参数值是否满足约束关系的结果,将影响最终该待选测试用例是否为目标测试用例。
在一实施例中,步骤1043可以通过如下方式实现:
针对任一待选测试用例,若每个约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则确定所述待选测试用例为所述目标测试用例;
若存在至少一个条件类型的约束关系中条件约束部分中参数在所述待选测试用例中对应的参数值不满足所述条件约束部分,其他条件类型的约束关系中参数在所述待选测试用例中对应的参数值满足所述约束关系,且非条件类型的约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则确定所述待选测试用例为所述目标测试用例。
具体的,若每个约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则该待选测试用例一定为目标测试用例。
若有一个约束关系中参数在所述待选测试用例中对应的参数值不满足对应的约束关系,则该待选测试用例可能不是目标测试用例。
但是,对于条件类型的约束关系来说,若该待选测试用例不满足该约束关系,则不一定不是目标测试用例。对于非条件类型的约束关系来说,若该待选测试用例不满足该约束关系,则不是目标测试用例。
对于条件类型的约束关系来说,约束关系包括条件约束部分,若条件约束部分中参数在该待选测试用例中对应的参数值不满足该条件约束部分,则说明该待选测试用例不满足该约束关系,该待选测试用例也可能是目标测试用例,进一步如果剩余的其他约束关系中参数在该待选测试用例中对应的参数值均满足各自对应的约束关系,则该待选测试用例也是目标测试用例。
上述实施方式中,对于条件类型的约束关系来说,若条件约束部分对应的参数不满足该条件约束部分,则说明该待选测试用例不满足该约束关系,则无需再判断剩余约束部分对应的参数是否满足该约束部分,因此提高了处理效率。
在一实施例中,约束关系可以通过表达式表示,条件类型的约束关系可以通过条件表达式表示,非条件类型的约束关系可以通过非条件表达式表示。
其中,条件表达式可以通过关键字IF-THEN描述,IF后面跟条件,THEN后面跟结果,以标识符结束,标识符如分号。
例如以下约束关系可以表示为:
a)如果验证方式VerifyType是1,那么手机号Mobile不能为空;
转换为条件表达式为:
IF[VerifyType]=1 THEN[Mobile]!=“空”;
b)如果验证方式VerifyType是2,那么邮箱Mail不能为空;
IF[VerifyType]=2 THEN[Mail]!=“空”;
c)如果验证方式大于1,那么手机号等于空
IF[VerifyType]>1 THEN[Mobile]=“空”;
d)如果验证方式小于2,那么手机号不等于空;
IF[VerifyType]<2 THEN[Mobile]!=“空”;
e)大于等于
IF[UserName]=“Hello”THEN[VerifyType]>=1;
f)小于等于
IF[UserName]=“Hello”THEN[VerifyType]<=1;
g)NOT操作
IF[VerifyType]=1 THEN NOT[Mobile]=“空”;
h)AND操作
IF[UserName]=“Hello”AND[VerifyType]=1 THEN[Mobile]!=“空”;
i)OR操作
IF[VerifyType]=1 OR[VerifyType]=2 THEN[UserName]!=“空”;
j)组合操作
IF[VerifyType]=1 AND NOT([Username]="Hello"OR[VerifyType]>=1)THEN[Mobile]="空";
其中,非条件表达式中没有IF条件,例如以下为非条件表达式:
a)如手机号和邮件不能同时为空;
[Mobile]!=“空”OR[Mail]!=“空”;
b)如验证方式为1或者为2;
[VerifyType]=1 OR[VerifyType]=2;
在一实施例中,表达式包括以下至少一项:操作符、参数名、值、关键字、表达式结束的标识符;
其中,操作符包括以下至少一项:关系操作符、逻辑操作符、括号;
对于关系操作符来说,两边的值类型需要一致,要么都是字符串,要么都是数字。左右两侧各需要两个操作数,例如为left和right,表示为left=right。
关系操作符包括以下几种:
1)等于,=,若left和right相等,结果就是TRUE;
2)不等于,!=,若left不等于right,结果就是TRUE;
3)大于,>,若left大于right,结果就是TRUE;
4)大于等于,若>=,left大于等于right,结果就是TRUE;
5)小于,<,若left小于right,结果就是TRUE;
6)小于等于<=,若left小于等于right,结果就是TRUE。
对于逻辑操作符来说,与运算和或运算,需要left和right两个操作数,如leftAND right,left OR right。非运算需要一个操作数,如NOT left。
逻辑操作符包括以下几种:
1)与,AND,若left和right同时为TRUE,结果就是TRUE
2)或,OR,若left和right有一个是TRUE,结果就是TRUE
3)非,NOT,若left为TRUE,结果就是FALSE,若left为FALSE,结果就是TRUE。
对于括号来说,包括:左括号,(;右括号,)。括号里面的表达式优先计算。
其中,参数名,例如用标识符标识,如用中括号括起来[参数名],如[Username]。
其中,值包括以下几种:如果英文双引号引用的值表示是字符串值,如“Hello”;没有用英文双引号引用的值表示是数字值,如1。
在一实施例中,操作符具有优先级,在对表达式进行逻辑运算时,根据操作符的优先级进行运算。
优先级从大到小依次是:
1)左括号优先级最高;
2)=,!=,>,>=,<,<=;
3)AND,OR,NOT;
4)右括号;
5)空操作符、THEN、分号优先级最低。
对于不同类型的约束关系来说,确定该约束关系对应的参数是否满足约束关系的方式有所不同,以下分别进行阐述:
在一实施例中,对于条件类型的约束关系来说,步骤“根据所述约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系”可以通过如下方式实现:
在所述约束关系中解析得到第一组约束参数,所述第一组约束参数中包括第一参数名、第一操作符;
针对任一所述待选测试用例,获取所述待选测试用例与所述第一组约束参数的第一匹配结果;
根据所述第一匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
具体的,对约束关系进行解析,将约束关系中包括的操作符、参数名等解析出来,得到第一组约束参数;
利用第一组约束参数与待选测试用例的参数的取值进行匹配,得到第一匹配结果;
若第一匹配结果为不匹配,则确定约束关系中条件约束部分中参数在该待选测试用例中对应的参数值不满足条件约束部分,确定约束关系中参数在该待选测试用例中对应的参数值不满足该约束关系,但该待选测试用例也可能是目标测试用例;
若第一匹配结果为匹配,则需要进一步解析第二组约束参数,根据待选测试用例与第二组约束参数的第二匹配结果,确定约束关系中参数在所述待选测试用例中对应的参数值是否满足,若第二匹配结果为匹配,则确定约束关系中参数在所述待选测试用例中对应的参数值满足该约束关系;若第二匹配结果为不匹配,则确定约束关系中参数在所述待选测试用例中对应的参数值不满足该约束关系。
在一实施例中,第一组约束参数为IF条件中的包括的约束参数。第二组约束参数为THEN结果中的包括的约束参数。
例如,约束关系为:IF[VerifyType]=1 THEN[Mobile]!="空";第一组约束参数中第一操作符为等号=,第一参数名为VerifyType,还可以包括第一标准参数值1。第二组约束参数中第二操作符为等号!=,第二参数名为Mobile,还可以包括第二标准参数值为空。
在一实施例中,步骤“获取待选测试用例与第一组约束参数的第一匹配结果”
在所述待选测试用例中确定所述第一参数名对应的第一参数值;
若所述第一参数值和所述第一操作符的逻辑运算结果为第一结果,则确定所述第一匹配结果为匹配;
若所述第一参数值和所述第一操作符的逻辑运算结果为第二结果,则确定所述第一匹配结果为不匹配。
具体的,解析到约束关系中第一组约束参数包括第一参数名,则在待选测试用例中确定该第一参数名对应的第一参数值,如第一参数名VerifyType对应的第一参数值为1。
利用第一参数值和第一操作符进行逻辑运算,若结果为第一结果,则确定所述第一匹配结果为匹配;若结果为第二结果,则确定所述第一匹配结果为不匹配。
假设若第一结果为真(true),则确定第一匹配结果为匹配,进一步,需要根据该约束关系中第二组约束参数,确定该约束关系中参数在该待选测试用例中对应的参数值是否满足该约束关系;若第二结果为假(false),则确定第一匹配结果为不匹配,确定该约束关系中条件约束部分中参数在该待选测试用例中对应的参数值不满足该条件约束部分,无需对该约束关系中剩余部分进行判断。
在一实施例中,若第一组约束参数中还包括第一标准参数值,则步骤“获取待选测试用例与第一组约束参数的第一匹配结果”可以通过如下方式实现:
在该待选测试用例中确定所述第一参数名对应的第一参数值;
若所述第一标准参数值、所述第一参数值和所述第一操作符的逻辑运算结果为第一结果,则确定所述第一匹配结果为匹配;
若所述第一标准参数值、所述第一参数值和所述第一操作符的逻辑运算结果为第二结果,则确定所述第一匹配结果为不匹配。
具体原理与前述步骤类似,此处不再赘述。
例如,测试用例为:
用例Id | UserName | VerifyType | Mobile | |
3 | Hello | 1 | 空 | hello@126.com |
约束关系为:IF[VerifyType]=1 THEN[Mobile]!="空";第一组约束参数中第一操作符为等号=,第一参数名为VerifyType,第一标准参数值为数值1。
在该测试用例中,第一参数名对应的第一参数值为1,则根据第一操作符、第一参数名对应的第一参数值和第一标准参数值进行逻辑运算,得到的结果为真,则根据该匹配结果,确定该测试用例是否满足该约束关系,即进一步需要根据第二组约束参数,确定该测试用例是否满足该约束关系。
在一实施例中,第一组约束参数可以包括:多个第一参数名、多个第一操作符和多个第一标准参数值,则获取待选测试用例与第一组约束参数的第一匹配结果时,则根据多个第一参数值和多个第一操作符的逻辑运算结果,获取所述第一匹配结果。
例如,约束关系为IF[VerifyType]=1 OR[VerifyType]=2 THEN[UserName]!=“空”,第一组约束参数包括:第一参数名VerifyType、第一操作符=、第一标准参数值1、第一操作符OR、第一参数名VerifyType、第一操作符=、第一标准参数值2,假设第一参数名对应的第一参数值为1,则逻辑运算结果为true,第一匹配结果为匹配。
上述实施方式中,根据第一参数名对应的第一参数值、第一操作符的逻辑运算结果,获取待选测试用例与第一组约束参数的第一匹配结果;根据第一匹配结果,确定约束关系中参数在该待选测试用例中对应的参数值是否满足所述约束关系,若第一匹配结果为匹配,则需要进一步根据第二组约束参数进行判断,使得最终得到的约束关系中参数在各个待选测试用例中对应的参数值是否满足约束关系的结果较为准确;若第一匹配结果为不匹配,则确定约束关系中参数在该待选测试用例中对应的参数值不满足约束关系,无需再对约束关系中其他参数在各个待选测试用例中对应的参数值是否满足约束关系的结果进行判断,因此效率较高。
在一实施例中,该方法还包括:
将所述第一标准参数值存储至操作数栈,以及将所述第一操作符存储至操作符栈;
将所述第一参数名对应的第一参数值存储至所述操作数栈;
获取第一匹配结果,具体可以通过如下方式实现:
若在所述约束关系中解析得到优先级小于或等于第一优先级的第一操作符,则根据所述操作数栈中的所述第一标准参数值和所述第一参数值、以及所述操作数栈中的所述第一操作符,获取所述待选测试用例与所述第一组约束参数的第一匹配结果;所述第一优先级为所述操作符栈中最新存储的第一操作符的优先级。
具体的,为了提高上述步骤“获取第一匹配结果”执行的效率,减少实现复杂度,可以利用栈这种后进先出的数据结构,遍历约束关系中的约束元素,将第一参数名对应的第一参数值入操作数栈,将第一标准参数值入操作数栈,将第一操作符入操作符栈,然后根据第一组约束参数中多个第一操作符的优先级,取操作数栈和操作符栈中的约束参数进行逻辑运算,根据逻辑运算结果获取第一匹配结果,实现过程简单。
其中,将第一标准参数值和第一参数值入操作数栈的顺序,需要根据约束关系中第一标准参数值和第一参数名的顺序确定,哪个在前哪个先入操作数栈。
依次遍历约束关系中的元素,若在约束关系中解析得到第一参数名,则将待选测试用例中第一参数名对应的第一参数值放入操作数栈中;
若在约束关系中解析得到第一标准参数值,则将第一标准参数值放入操作数栈中;
若在约束关系中解析得到第一操作符,判断操作符栈是否为空,若为空,则直接将第一操作符放入操作符栈中;若不为空,则比较当前的第一操作符与操作符栈中最新存储的第一操作符的优先级。
若当前的第一操作符的优先级小于或等于操作符栈中最新存储的第一操作符的优先级,则从操作符栈中取出第一操作符,根据取出的第一操作符的类型,从操作数栈中取出一个或两个元素,利用取出的第一操作符和取出的一个或两个元素进行逻辑运算,将逻辑运算的结果存入操作数栈中,将当前的第一操作符放入操作符栈中,直至约束关系中第一组约束参数遍历完毕,根据逻辑运算的结果,确定第一匹配结果;
若当前的第一操作符的优先级大于操作符栈中最新存储的第一操作符的优先级,则将当前的第一操作符放入操作符栈中。
对于逻辑操作符NOT来说,只需要一个元素进行逻辑运算,对于其他的操作符来说,一般需要两个元素进行逻辑运算。
示例性的,约束关系为IF[VerifyType]=1 OR[VerifyType]=2 THEN[UserName]!=“空”,第一组约束参数为IF之后包括的约束参数,依次遍历IF之后的约束参数,解析到第一参数名VerifyType,从测试用例中获取VerifyType对应的第一参数值,假设为1,将1放入操作数栈中;解析到第一操作符=,将=放入操作符栈中;解析到第一标准参数值1,将1放入操作数栈中;解析到第一操作符OR,比较OR和操作符栈中=的优先级,OR的优先级小于=的优先级,则将=从操作符栈中取出,从操作数栈中取出两个元素1,与=进行逻辑运算,得到结果为true,放入操作数栈中;将OR放入操作符栈中;
解析得到第一参数名VerifyType,从测试用例中获取VerifyType对应的第一参数值1,将1放入操作数栈中;解析到第一操作符=,将=放入操作符栈中;解析到第一标准参数值2,将2放入操作数栈中;解析到第一操作符THEN,比较THEN和操作符栈中=的优先级,THEN的优先级小于=的优先级,则将=从操作符栈中取出,从操作数栈中取出两个元素1,与=进行逻辑运算,得到结果为false,放入操作数栈中;THEN表示第一组约束参数解析结束,则取出操作符栈中的OR,从操作数栈中取出两个元素false和true,与OR进行逻辑运算,得到结果为true。
则根据最终的逻辑运算结果,确定第一匹配结果为匹配。
上述实施方式中,利用栈这种后进先出的数据结构,遍历解析约束关系中的约束参数,约束参数入操作符栈或操作数栈,然后根据操作符的优先级,取操作数计算,得到待选测试用例与第一组约束参数的第一匹配结果,得到第一匹配结果的实现过程较为简单。
在一实施例中,若所述第一匹配结果为匹配,则在所述约束关系中解析得到第二组约束参数,所述第二组约束参数中包括第二参数名、第二操作符;根据该待选测试用例与所述第二组约束参数的第二匹配结果,确定所述约束关系中参数在该待选测试用例中对应的参数值是否满足所述约束关系。
获取第二匹配结果的过程与前述获取第一匹配结果的实现原理类似,此处不再赘述。
在一实施例中,确定约束关系中参数在该待选测试用例中对应的参数值是否约束关系,体可以通过如下方式实现:
在该待选测试用例中确定所述第二参数名对应的第二参数值;
若所述第二参数值和所述第二操作符的逻辑运算结果为第三结果,则确定所述约束关系中参数在该待选测试用例中对应的参数值满足所述约束关系;
若所述第二参数值和所述第二操作符的逻辑运算结果为第四结果,则确定所述约束关系中参数在该待选测试用例中对应的参数值不满足所述约束关系。
具体的,解析到约束关系中第二组约束参数包括第二参数名,则在待选测试用例中确定该第二参数名对应的第二参数值,如第二参数名VerifyType对应的第二参数值为1。
利用第二参数值和第二操作符进行逻辑运算,若结果为第三结果,则确定所述第二匹配结果为匹配,即确定约束关系中参数在该待选测试用例中对应的参数值满足该约束关系;若结果为第二结果,则确定第二匹配结果为不匹配,即确定约束关系中参数在该待选测试用例中对应的参数值不满足该约束关系。
假设若第三结果为真(true),则确定第二匹配结果为匹配,确定该约束关系中参数在该待选测试用例中对应的参数值满足该约束关系;若第二结果为假(false),则确定第二匹配结果为不匹配,确定该约束关系中参数在该待选测试用例中对应的参数值不满足该约束关系。
在一实施例中,第二组约束参数还可以包括第二标准参数值,则根据第二匹配结果,确定约束关系中参数在该待选测试用例中对应的参数值是否满足约束关系具体可以通过如下方式实现:
在待选测试用例中确定第二参数名对应的第二参数值;
若第二标准参数值、所述第二参数值和所述第二操作符的逻辑运算结果为第三结果,则确定所述约束关系中参数在该待选测试用例中对应的参数值满足所述约束关系;
若第二标准参数值、所述第二参数值和所述第二操作符的逻辑运算结果为第四结果,则确定所述约束关系中参数在该待选测试用例中对应的参数值不满足所述约束关系。
在一实施例中,第二组约束参数可以包括:多个第二参数名、多个第二操作符和多个第二标准参数值,则获取待选测试用例与第二组约束参数的第二匹配结果时,则根据多个第二参数值和多个第二操作符的逻辑运算结果,获取所述第二匹配结果。
其中,获取第二匹配结果与获取第一匹配结果的过程类似,也可以通过栈的方式实现,此处不再赘述。
上述实施方式中,根据第二参数名对应的第二参数值、第二操作符的逻辑运算结果,获取待选测试用例与第一组约束参数的第二匹配结果;根据第二匹配结果,确定约束关系中参数在该待选测试用例中对应的参数值是否满足所述约束关系,若第二匹配结果为匹配,则确定约束关系中参数在该待选测试用例中对应的参数值满足约束关系,第二匹配结果为不匹配,则确定约束关系中参数在该待选测试用例中对应的参数值不满足约束关系,进而根据约束关系中参数在该待选测试用例中对应的参数值是否满足约束关系的结果,确定该待选测试用例是否为目标测试用例,使得确定出该待选测试用例是否为目标测试用例的结果较为准确。
示例性的,约束条件“如果验证方式VerifyType是1,那么手机号Mobile不能为空”,初始化操作符栈、操作数栈为空;
约束表达式:IF[VerifyType]=1 THEN[Mobile]!="空";
比如针对测试用例:
用例Id | UserName | VerifyType | Mobile | |
3 | Hello | 1 | 空 | hello@126.com |
1)解析到参数[VerifyType],测试用例中[VerifyType]的值放入操作数栈,如下:
1 |
操作数栈 |
2)解析到操作符=,=放入操作符栈,如下:
= |
操作符栈 |
3)解析到1,1放入操作数栈,如下:
1 |
1 |
操作数栈 |
4)解析到THEN
因为THEN是IF部分结束标志,所以执行运算操作。从操作符栈取出一个操作符,从操作数栈取出两个操作数1和1,做=运算,得到结果是TRUE,将结果放入操作数栈。如果操作符是NOT就只需要取出一个操作数。操作符栈清空。
TRUE |
操作数栈 |
因为当前操作符为THEN,所以IF部分运算结束,从操作数栈取出运算结果,判断是否为TRUE,是则继续解析表达式,否则结束,说明测试用例只是不符合IF部分,但是测试用例在当前表达式上是有效的,即为目标测试用例。这里是TRUE,所以继续解析。
清空操作数栈和操作符栈。
5)解析到[Mobile],将测试用例的[Mobile]的值放入操作数栈,如下:
空 |
操作数栈 |
6)解析到!=,放入操作符栈,如下:
!= |
操作符栈 |
7)解析到"空",放入操作数栈,如下:
空 |
空 |
操作数栈 |
8)解析到分号;,表达式结束,取出操作符栈的操作符,取出操作数栈的操作数,做运算,这里是:空不等于空,结果是FALSE,结果放入操作数栈。因为操作符栈没有操作符了,取出操作数栈的最终结果,TRUE表示测试用例满足约束关系,FALSE表示测试用例不满足约束关系,该测试用例不满足约束关系,为无效用例,即不是目标测试用例。
FALSE |
操作数栈 |
在一实施例中,对于非条件类型的约束关系,步骤“确定所述约束关系中参数在该待选测试用例中对应的参数值是否满足所述约束关系”可以通过如下方式实现:
在所述约束关系中解析得到至少一组约束参数,所述约束参数中包括第三参数名、第三操作符;
针对任一所述待选测试用例,获取所述待选测试用例与所述每组约束参数的第三匹配结果;
根据所述待选测试用例与所述每组约束参数的第三匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
具体的,解析到约束关系中至少一组约束参数,对于每一组约束参数来说,均获取该待选测试用例与该组约束参数的第三匹配结果,根据每个第三匹配结果,确定约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
在一实施例中,步骤“获取所述待选测试用例与所述每组约束参数的第三匹配结果”,可以通过如下方式实现:
针对任意一组约束参数,在所述待选测试用例中获取所述第三参数名对应的第三参数值;
若所述第三参数值和所述第三操作符的逻辑运算结果为第五结果,则确定所述第三匹配结果为匹配;
若所述第三参数值和所述第三操作符的逻辑运算结果为第六结果,则确定所述第三匹配结果为不匹配。
在一实施例中,若每组约束参数中还包括:第三标准参数值;则若所述第三标准参数值、所述第三参数值和所述第三操作符的逻辑运算结果为第五结果,则确定所述第三匹配结果为匹配;
若所述第三标准参数值、所述第三参数值和所述第三操作符的逻辑运算结果为第六结果,则确定所述第三匹配结果为不匹配。
具体的,解析到该组约束关系中包括第三参数名,则在待选测试用例中确定该第三参数名对应的第三参数值,如第三参数名VerifyType对应的第二参数值为1。
利用第三标准参数值、第三参数值和第三操作符进行逻辑运算,若结果为第五结果,则确定所述第三匹配结果为匹配;若结果为第六结果,则确定第三匹配结果为不匹配。
假设若第五结果为真(true),则确定第三匹配结果为匹配;若第六结果为假(false),则确定第三匹配结果为不匹配。
其中,获取所述待选测试用例与所述每组约束参数的第三匹配结果,与获取第一匹配结果的方式类似,此处不再赘述。
在一实施例中,“根据第三匹配结果,确定约束关系中参数在所述待选测试用例中对应的参数值是否满足约束关系”具体可以通过如下方式实现:
获取每相邻两组的约束参数之间的第四操作符;
根据所述第四操作符,依次对每组约束参数对应的第三匹配结果进行逻辑运算;
根据逻辑运算的结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
具体的,获取到多组约束参数对应的匹配结果,获取相邻两组之间的第四操作符,根据多组约束参数对应的匹配结果、相邻两组之间的第四操作符进行逻辑运算,得到逻辑运算的结果。
若逻辑运算的结果为第一结果,例如为真,则确定该约束关系中参数在该待选测试用例中对应的参数值满足该约束关系;
若逻辑运算的结果为第二结果,例如为假,则确定该约束关系中参数在该待选测试用例中对应的参数值不满足该约束关系。
例如有3组约束参数,3组约束参数对应的匹配结果依次为true、false、true,第四操作符依次为OR、AND,则最终逻辑运算的结果为true,即确定该约束关系中参数在该待选测试用例中对应的参数值满足该约束关系。
上述实施方式中,对于非条件类型的约束关系来说,通过获取多组约束参数,获取所述待选测试用例与所述每组约束参数的第三匹配结果;根据待选测试用例与每组约束参数的第三匹配结果,以及第四操作符的逻辑运算结果,确定约束关系中参数在该待选测试用例中对应的参数值是否满足该约束关系,进而根据约束关系中参数在该待选测试用例中对应的参数值是否满足约束关系的结果,确定该待选测试用例是否为目标测试用例,使得确定出该待选测试用例是否为目标测试用例的结果较为准确,而且相比人为设计并判断测试用例是否符合参数之间的约束关系,提高了测试用例生成的效率。
其中,对于非条件类型的约束关系,与条件类型的约束关系类似,也可以通过栈的方式确定约束关系对应的参数是否满足约束关系,此处不再赘述。
示例性的,比如测试用例需要约束关系:验证方式是1,并且手机号不能为空;无条件约束表达式如下:
[VerifyType]=1 AND[Mobile]!=\"空\";
比如针对测试用例:
用例Id | UserName | VerifyType | Mobile | |
3 | Hello | 1 | 空 | hello@126.com |
初始化操作数栈和操作符栈为空,解析过程如下:
1)解析到参数[VerifyType],测试用例中[VerifyType]的值放入操作数栈,如下:
1 |
操作数栈 |
2)解析到操作符=,=放入操作符栈,如下:
= |
操作符栈 |
3)解析到1,1放入操作数栈,如下:
1 |
1 |
操作数栈 |
4)解析到AND
AND的优先级小于=的优先级,所以执行运算操作。从操作符栈取出一个操作符,从操作数栈取出两个操作数1和1,做=运算,得到结果是TRUE,将结果放入操作数栈。将AND放入操作符栈。
TRUE |
操作数栈 |
以及
AND |
操作符栈 |
5)解析到[Mobile],将测试用例的[Mobile]的值放入操作数栈,如下:
空 |
TRUE |
操作数栈 |
6)解析到!=,放入操作符栈,如下:
!= |
AND |
操作符栈 |
7)解析到"空",放入操作数栈,如下:
空 |
空 |
TRUE |
操作数栈 |
8)解析到分号;,表达式结束,取出操作符栈的操作符!=,取出操作数栈的操作数,做运算,这里是:空不等于空,结果是FALSE,结果放入操作数栈。
FALSE |
TRUE |
操作数栈 |
此时,操作符栈为:
AND |
操作符栈 |
再取出操作符栈的操作符AND,取出操作数栈的操作数,做运算,结果是FALSE,结果放入操作数栈。因为操作符栈没有操作符了,取出操作数栈的最终结果,TRUE表示测试用例满足约束关系,FALSE表示测试用例不满足约束关系,该测试用例不满足约束关系,为无效用例,即不是目标测试用例。
FALSE |
操作数栈 |
在一实施例中,假如测试用例有m个,测试用例Casei记为:
Case1、Case2、Case3…Case m;
假如约束关系有n个,约束关系Constraint i记为:
Constraint1、Constraint2、Constraint3、…Constraint n;
那么极端情况下程序将会判断m×n次测试用例是否满足约束关系。
对于每个测试用例来说,极端情况下会判断n次。如果一个测试用例满足所有约束关系,则将会判断n次。
对于测试用例比较多,约束关系比较多的情况,判断次数较多,为了优化执行效率,本实施例中,将约束关系分成两部分,非条件约束关系作为一部分,条件约束关系作为另一部分,例如按照如下列表排列:
如图3所示,同时创建A和B两个实现装置,A从表达式列表从前往后计算,B从表达式列表从后往前计算,如果A发现某个测试用例不可能是目标测试用例,通知B,B收到通知后停止判断该测试用例,A也结束判断该测试用例。如果B发现某个测试用例不可能是目标测试用例,通知A,A收到通知后停止判断,B也结束判断。
上述实施方式中,通过并行执行,若发现某个测试用例一定不是目标测试用例,则停止对该测试用例的判断,提高了效率。
在一实施例中,如图4所示,判断测试用例是否满足约束关系的流程如下:
选择一个测试用例Case,一个约束关系,将约束关系中元素存入一个队列中,例如,获取约束关系中元素时可以用空格对各个元素进行分隔。
1)循环取出队列中的元素,记为E;
2)如果元素E是IF,回到步骤1);
3)如果元素E是THEN或分号,说明IF条件表达式结束或整个表达式结束,如果操作符栈不为空,进入逻辑运算流程(参见图5)。逻辑运算流程结束后,判断操作数栈的结果,如果不是TRUE,如果元素E是分号,流程结束,说明该条测试用例不符合整个约束关系,是无效用例,即不是目标测试用例;如果元素E是THEN,表明IF条件判断流程结束,说明该条测试用例只是不符合IF条件部分,可能是有效的目标测试用例,流程结束。如果操作数栈结果是TRUE,且元素E是分号,则流程结束,说明该条测试用例符合整个约束关系,是有效用例;清空操作数栈,返回步骤1);如果操作数栈结果是TRUE,且元素E是THEN,清空操作数栈,返回步骤1),继续判断测试用例是否符合THEN后面的表达式部分。
4)如果元素E是操作符,如果操作符栈是空的,把元素E加入操作符栈中,返回步骤1)。如果操作符栈不是空,进入逻辑运算流程(参见图5)。逻辑运算流程结束后,返回步骤1)。
5)如果元素E是参数名,取测试用例中该参数名对应的参数值,压入操作数栈,返回步骤1)。
6)其他元素E的情况,说明元素是一般值,字符串或者数字,压入操作数栈,返回步骤1)。
在一实施例中,如图5所示,逻辑运算流程如下:
1)将当前元素E记为A;
2)如果操作符栈是空的并且当前A不是THEN和分号,或者A是NOT,将元素E压入操作符栈;
3)如果操作符栈是空的,并且当前A是THEN或者分号,流程结束返回;
4)从操作符栈取出一个操作符记为B;
5)比较A和B的优先级;
6)如果A的优先级大于B并且A不等于逻辑操作符NOT,将A压入操作符栈,流程结束。否则进入步骤7);
7)如果A等于右括号),并且B等于左括号(,流程结束返回;
8)如果B等于左括号(,将A压入操作符栈,流程结束返回;
9)从操作数栈取出一个操作数记为R。如果B不等于逻辑操作符NOT,从操作数栈取出一个操作数记为L,否则操作数R重新命名为L。
将操作符B,操作数L和R,传入操作数结果计算流程。将返回的计算结果压入操作数栈中,回到步骤1),继续逻辑运算流程。
操作数结果计算流程如下:
1)如果操作符是逻辑操作符,则对L和R做逻辑与、或、非运算。
2)如果操作符是关系操作符,判断L和R的类型是否一致,不一致认为表达式书写错误。否则对L和R做关系运算。
3)返回计算结果。
本申请实施例的方法中,利用栈这种后进先出的数据结构,遍历解析约束关系中的元素,元素入操作符栈或操作数栈,然后根据操作符的优先级,取操作数进行逻辑运算,根据逻辑运算结果判断是否满足约束关系,进而根据约束关系中参数在该待选测试用例中对应的参数值是否满足约束关系的结果,确定该待选测试用例是否为目标测试用例,使得确定出该待选测试用例是否为目标测试用例的结果较为准确,而且相比人为设计并判断测试用例是否符合参数之间的约束关系,提高了测试用例生成的效率。
图6为本申请提供的测试用例的生成装置一实施例的结构示意图,如图6所示,本实施例的测试用例的生成装置,包括:
预处理模块110,用于根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数;
获取模块111,用于获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;
处理模块112,用于确定每个所述约束关系中参数在各个所述待选测试用例中对应的参数值;根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在所述多个待选测试用例中确定目标测试用例,所述目标测试用例中的参数满足所述至少一个约束关系。
在一种可能的实现方式中,处理模块112具体用于:
针对任意一个约束关系,确定所述约束关系的类型,所述类型为条件类型或者非条件类型;
根据所述约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系;
根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,确定各个所述待选测试用例是否为所述目标测试用例。
在一种可能的实现方式中,处理模块112具体用于:
针对任一所述待选测试用例,若每个所述约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则确定所述待选测试用例为所述目标测试用例;
若存在至少一个条件类型的约束关系中条件约束部分中参数在所述待选测试用例中对应的参数值不满足所述条件约束部分,其他条件类型的约束关系中参数在所述待选测试用例中对应的参数值均满足所述约束关系,且非条件类型的约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则确定所述待选测试用例为所述目标测试用例。
在一种可能的实现方式中,若所述约束关系的类型为条件类型;处理模块112具体用于:
在所述约束关系中解析得到第一组约束参数,所述第一组约束参数中包括第一参数名、第一操作符;
针对任一所述待选测试用例,获取所述待选测试用例与所述第一组约束参数的第一匹配结果;
根据所述第一匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
在一种可能的实现方式中,处理模块112具体用于:
在所述待选测试用例中确定所述第一参数名对应的第一参数值;
若所述第一参数值和所述第一操作符的逻辑运算结果为第一结果,则确定所述第一匹配结果为匹配;
若所述第一参数值和所述第一操作符的逻辑运算结果为第二结果,则确定所述第一匹配结果为不匹配。
在一种可能的实现方式中,若所述第一组约束参数中还包括:第一标准参数值;处理模块112还用于:
将所述第一标准参数值存储至操作数栈,以及将所述第一操作符存储至操作符栈;
将所述第一参数值存储至所述操作数栈;
处理模块112具体用于:
若在所述约束关系中解析得到优先级小于或等于所述第一优先级的第一操作符,则根据所述操作数栈中的所述第一标准参数值和所述第一参数值、以及所述操作数栈中的所述第一操作符,获取所述待选测试用例与所述第一组约束参数的第一匹配结果;所述第一优先级为所述操作符栈中最新存储的第一操作符的优先级。
在一种可能的实现方式中,处理模块112具体用于:
若所述第一匹配结果为不匹配,则确定所述约束关系中参数在所述待选测试用例中对应的参数值不满足所述约束关系;
若所述第一匹配结果为匹配,则在所述约束关系中解析得到第二组约束参数,所述第二组约束参数中包括第二参数名、第二操作符;根据所述待选测试用例与所述第二组约束参数的第二匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
在一种可能的实现方式中,处理模块112具体用于:
在所述待选测试用例中确定所述第二参数名对应的第二参数值;
若所述第二参数值和所述第二操作符的逻辑运算结果为第三结果,则确定所述约束关系中参数在所述待选测试用例对应的参数值满足所述约束关系;
若所述第二参数值和所述第二操作符的逻辑运算结果为第四结果,则确定所述约束关系中参数在所述待选测试用例对应的参数值不满足所述约束关系。
在一种可能的实现方式中,所述约束关系的类型为非条件类型;处理模块112具体用于:
在所述约束关系中解析得到至少一组约束参数,所述约束参数中包括第三参数名、第三操作符;
针对任一所述待选测试用例,获取所述待选测试用例与所述每组约束参数的第三匹配结果;
根据所述待选测试用例与所述每组约束参数的第三匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
在一种可能的实现方式中,处理模块112具体用于:
针对任意一组约束参数,在所述待选测试用例中获取所述第三参数名对应的第三参数值;
若所述第三参数值和所述第三操作符的逻辑运算结果为第五结果,则确定所述第三匹配结果为匹配;
若所述第三参数值和所述第三操作符的逻辑运算结果为第六结果,则确定所述第三匹配结果为不匹配。
在一种可能的实现方式中,处理模块112具体用于:
获取每相邻两组的约束参数之间的第四操作符;
根据所述第四操作符,依次对每组约束参数对应的第三匹配结果进行逻辑运算;
根据逻辑运算的结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本申请提供的电子设备实施例的结构示意图,如图7所示,该电子设备包括:
处理器210,以及,用于存储处理器210的可执行指令的存储器211。
可选的,还可以包括:通信接口212,用于实现与其他设备的通信。
上述部件可以通过一条或多条总线进行通信。
其中,处理器210配置为经由执行所述可执行指令来执行前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如前述方法实施例中任一项所述的方法,其具体实施过程可以参见前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (15)
1.一种测试用例的生成方法,其特征在于,包括:
根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数;
获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;
确定每个所述约束关系中参数在各个所述待选测试用例中对应的参数值;
根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在所述多个待选测试用例中确定目标测试用例,所述目标测试用例中的参数满足所述至少一个约束关系。
2.根据权利要求1所述的方法,其特征在于,根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在所述多个待选测试用例中确定目标测试用例,包括:
针对任意一个约束关系,确定所述约束关系的类型,所述类型为条件类型或者非条件类型;
根据所述约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系;
根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,确定各个所述待选测试用例是否为所述目标测试用例。
3.根据权利要求2所述的方法,其特征在于,所述根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,确定各个所述待选测试用例是否为所述目标测试用例,包括:
针对任一所述待选测试用例,若每个所述约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则确定所述待选测试用例为所述目标测试用例;
若存在至少一个条件类型的约束关系中条件约束部分中参数在所述待选测试用例中对应的参数值不满足所述条件约束部分,其他条件类型的约束关系中参数在所述待选测试用例中对应的参数值均满足所述约束关系,且非条件类型的约束关系中参数在所述待选测试用例中对应的参数值均满足对应的约束关系,则确定所述待选测试用例为所述目标测试用例。
4.根据权利要求2或3所述的方法,其特征在于,所述约束关系的类型为条件类型;根据所述约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系,包括:
在所述约束关系中解析得到第一组约束参数,所述第一组约束参数中包括第一参数名、第一操作符;
针对任一所述待选测试用例,获取所述待选测试用例与所述第一组约束参数的第一匹配结果;
根据所述第一匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
5.根据权利要求4所述的方法,其特征在于,获取所述待选测试用例与所述第一组约束参数的第一匹配结果,包括:
在所述待选测试用例中确定所述第一参数名对应的第一参数值;
若所述第一参数值和所述第一操作符的逻辑运算结果为第一结果,则确定所述第一匹配结果为匹配;
若所述第一参数值和所述第一操作符的逻辑运算结果为第二结果,则确定所述第一匹配结果为不匹配。
6.根据权利要求5所述的方法,其特征在于,若所述第一组约束参数中还包括:第一标准参数值;在所述约束关系中解析得到第一组约束参数之后,还包括:
将所述第一标准参数值存储至操作数栈,以及将所述第一操作符存储至操作符栈;
在所述待选测试用例中确定所述第一参数名对应的第一参数值之后,还包括:
将所述第一参数值存储至所述操作数栈;
获取所述待选测试用例与所述第一组约束参数的第一匹配结果,包括:
若在所述约束关系中解析得到优先级小于或等于第一优先级的第一操作符,则根据所述操作数栈中的所述第一标准参数值和所述第一参数值、以及所述操作数栈中的所述第一操作符,获取所述待选测试用例与所述第一组约束参数的第一匹配结果;所述第一优先级为所述操作符栈中最新存储的第一操作符的优先级。
7.根据权利要求4-6任一项所述的方法,其特征在于,根据所述第一匹配结果,确定所述约束关系中参数在所述待选测试用例对应的参数值是否满足所述约束关系,包括:
若所述第一匹配结果为不匹配,则确定所述约束关系中参数在所述待选测试用例中对应的参数值不满足所述约束关系;
若所述第一匹配结果为匹配,则在所述约束关系中解析得到第二组约束参数,所述第二组约束参数中包括第二参数名、第二操作符;根据所述待选测试用例与所述第二组约束参数的第二匹配结果,确定所述约束关系中参数在所述待选测试用例对应的参数值是否满足所述约束关系。
8.根据权利要求7所述的方法,其特征在于,根据所述待选测试用例与所述第二组约束参数的第二匹配结果,确定所述约束关系中参数在所述待选测试用例对应的参数值是否满足所述约束关系,包括:
在所述待选测试用例中确定所述第二参数名对应的第二参数值;
若所述第二参数值和所述第二操作符的逻辑运算结果为第三结果,则确定所述约束关系中参数在所述待选测试用例对应的参数值满足所述约束关系;
若所述第二参数值和所述第二操作符的逻辑运算结果为第四结果,则确定所述约束关系中参数在所述待选测试用例对应的参数值不满足所述约束关系。
9.根据权利要求2或3所述的方法,其特征在于,所述约束关系的类型为非条件类型;根据所述约束关系的类型,确定所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系,包括:
在所述约束关系中解析得到至少一组约束参数,所述约束参数中包括第三参数名、第三操作符;
针对任一所述待选测试用例,获取所述待选测试用例与所述每组约束参数的第三匹配结果;
根据所述待选测试用例与每组所述约束参数的第三匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
10.根据权利要求9所述的方法,其特征在于,获取所述待选测试用例与所述每组约束参数的第三匹配结果,包括:
针对任意一组约束参数,在所述待选测试用例中获取所述第三参数名对应的第三参数值;
若所述第三参数值和所述第三操作符的逻辑运算结果为第五结果,则确定所述第三匹配结果为匹配;
若所述第三参数值和所述第三操作符的逻辑运算结果为第六结果,则确定所述第三匹配结果为不匹配。
11.根据权利要求9或10所述的方法,其特征在于,根据所述待选测试用例与所述每组约束参数的第三匹配结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系,包括:
获取每相邻两组的约束参数之间的第四操作符;
根据所述第四操作符,依次对每组约束参数对应的第三匹配结果进行逻辑运算;
根据逻辑运算的结果,确定所述约束关系中参数在所述待选测试用例中对应的参数值是否满足所述约束关系。
12.一种测试用例的生成装置,其特征在于,包括:
预处理模块,用于根据N种类型的参数生成多个待选测试用例,每个待选测试用例中包括N个参数,所述N个参数的类型不同,所述N为大于或等于1的整数;
获取模块,用于获取约束信息,所述约束信息中包括所述N种类型的参数之间的至少一个约束关系;
处理模块,用于确定每个所述约束关系中参数在各个所述待选测试用例中对应的参数值;根据所述约束关系的类型,以及所述约束关系中参数在各个所述待选测试用例中对应的参数值是否满足所述约束关系的结果,在所述多个待选测试用例中确定目标测试用例,所述目标测试用例中的参数满足所述至少一个约束关系。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11任一项所述的方法。
14.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-11任一项所述的方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-11任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011593648.6A CN112905446B (zh) | 2020-12-29 | 2020-12-29 | 测试用例的生成方法、装置、设备和存储介质 |
PCT/CN2021/133970 WO2022142939A1 (zh) | 2020-12-29 | 2021-11-29 | 测试用例的生成方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011593648.6A CN112905446B (zh) | 2020-12-29 | 2020-12-29 | 测试用例的生成方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905446A true CN112905446A (zh) | 2021-06-04 |
CN112905446B CN112905446B (zh) | 2024-05-14 |
Family
ID=76111880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011593648.6A Active CN112905446B (zh) | 2020-12-29 | 2020-12-29 | 测试用例的生成方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112905446B (zh) |
WO (1) | WO2022142939A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022142939A1 (zh) * | 2020-12-29 | 2022-07-07 | 深圳前海微众银行股份有限公司 | 测试用例的生成方法、装置、设备和存储介质 |
CN115455903A (zh) * | 2022-11-10 | 2022-12-09 | 北京云枢创新软件技术有限公司 | 一种验证操作符的系统 |
CN115757123A (zh) * | 2022-11-16 | 2023-03-07 | 大商所飞泰测试技术有限公司 | 一种测试用例生成方法、装置、设备及介质 |
CN116909934A (zh) * | 2023-09-13 | 2023-10-20 | 深圳鸿芯微纳技术有限公司 | 电子自动化设计软件的命令测试方法、装置、设备及介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115097251B (zh) * | 2022-08-25 | 2022-11-25 | 深圳市首航新能源股份有限公司 | 测试系统与方法、控制模块及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040255275A1 (en) * | 2003-06-11 | 2004-12-16 | Microsoft Corporation | Method and system for generating an efficient test suite from a domain description with given constraints |
CN101788907A (zh) * | 2010-01-04 | 2010-07-28 | 北京航空航天大学 | 组合服务精简测试用例的自动生成方法及装置 |
US20120101977A1 (en) * | 2010-10-20 | 2012-04-26 | Wooyeol Kim | Program for test case generation based on use case diagram and method for test case generation using the same |
CN109656802A (zh) * | 2017-10-10 | 2019-04-19 | 大连飞创信息技术有限公司 | 基于高耦合自动匹配技术的测试用例设计系统 |
CN109902002A (zh) * | 2019-02-14 | 2019-06-18 | 浙江口碑网络技术有限公司 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
CN109992508A (zh) * | 2019-03-22 | 2019-07-09 | 恒生电子股份有限公司 | 测试用例自动化生成方法、装置和电子设备 |
CN111444096A (zh) * | 2020-03-25 | 2020-07-24 | 北京市信息技术研究所 | 一种接口测试用例生成方法及装置 |
CN111625473A (zh) * | 2020-07-01 | 2020-09-04 | 北京字节跳动网络技术有限公司 | 接口测试用例生成方法、装置、存储介质和电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5425699B2 (ja) * | 2010-04-30 | 2014-02-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、テストケース生成方法、プログラムおよび記録媒体 |
CN109933535B (zh) * | 2019-03-26 | 2022-09-13 | 北京金山云网络技术有限公司 | 测试用例的生成方法、装置和服务器 |
CN112905446B (zh) * | 2020-12-29 | 2024-05-14 | 深圳前海微众银行股份有限公司 | 测试用例的生成方法、装置、设备和存储介质 |
-
2020
- 2020-12-29 CN CN202011593648.6A patent/CN112905446B/zh active Active
-
2021
- 2021-11-29 WO PCT/CN2021/133970 patent/WO2022142939A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040255275A1 (en) * | 2003-06-11 | 2004-12-16 | Microsoft Corporation | Method and system for generating an efficient test suite from a domain description with given constraints |
CN101788907A (zh) * | 2010-01-04 | 2010-07-28 | 北京航空航天大学 | 组合服务精简测试用例的自动生成方法及装置 |
US20120101977A1 (en) * | 2010-10-20 | 2012-04-26 | Wooyeol Kim | Program for test case generation based on use case diagram and method for test case generation using the same |
CN109656802A (zh) * | 2017-10-10 | 2019-04-19 | 大连飞创信息技术有限公司 | 基于高耦合自动匹配技术的测试用例设计系统 |
CN109902002A (zh) * | 2019-02-14 | 2019-06-18 | 浙江口碑网络技术有限公司 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
CN109992508A (zh) * | 2019-03-22 | 2019-07-09 | 恒生电子股份有限公司 | 测试用例自动化生成方法、装置和电子设备 |
CN111444096A (zh) * | 2020-03-25 | 2020-07-24 | 北京市信息技术研究所 | 一种接口测试用例生成方法及装置 |
CN111625473A (zh) * | 2020-07-01 | 2020-09-04 | 北京字节跳动网络技术有限公司 | 接口测试用例生成方法、装置、存储介质和电子设备 |
Non-Patent Citations (3)
Title |
---|
孙晶;李硕;赵会群;: "基本路径测试用例自动生成的方法研究", 计算机工程与应用, no. 20, 9 April 2018 (2018-04-09) * |
白晓颖等: "基于约束组合的测试用例生成", 《清华大学学报(自然科学版)》, no. 3, 15 March 2017 (2017-03-15) * |
许秀林;胡克瑾;: "基于约束满足搜索算法的测试用例生成策略", 计算机工程, vol. 1, no. 18, pages 40 - 41 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022142939A1 (zh) * | 2020-12-29 | 2022-07-07 | 深圳前海微众银行股份有限公司 | 测试用例的生成方法、装置、设备和存储介质 |
CN115455903A (zh) * | 2022-11-10 | 2022-12-09 | 北京云枢创新软件技术有限公司 | 一种验证操作符的系统 |
CN115757123A (zh) * | 2022-11-16 | 2023-03-07 | 大商所飞泰测试技术有限公司 | 一种测试用例生成方法、装置、设备及介质 |
CN115757123B (zh) * | 2022-11-16 | 2023-09-22 | 大商所飞泰测试技术有限公司 | 一种测试用例生成方法、装置、设备及介质 |
CN116909934A (zh) * | 2023-09-13 | 2023-10-20 | 深圳鸿芯微纳技术有限公司 | 电子自动化设计软件的命令测试方法、装置、设备及介质 |
CN116909934B (zh) * | 2023-09-13 | 2024-01-19 | 深圳鸿芯微纳技术有限公司 | 电子自动化设计软件的命令测试方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112905446B (zh) | 2024-05-14 |
WO2022142939A1 (zh) | 2022-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112905446A (zh) | 测试用例的生成方法、装置、设备和存储介质 | |
CN107704265B (zh) | 一种面向业务流可配置的规则生成方法 | |
CN108804641B (zh) | 一种文本相似度的计算方法、装置、设备和存储介质 | |
CN107644323B (zh) | 一种面向业务流的智能审核系统 | |
US7895187B2 (en) | Hybrid evaluation of expressions in DBMS | |
US8131768B2 (en) | Symbolic program analysis using term rewriting and generalization | |
US8001128B2 (en) | Selection of a set of optimal n-grams for indexing string data in a DBMS system under space constraints introduced by the system | |
CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
US9317552B2 (en) | Reusing existing query plans in a database system | |
US9110946B2 (en) | Database query optimization | |
CN112069801A (zh) | 基于依存句法的句子主干抽取方法、设备和可读存储介质 | |
CN113705798A (zh) | 处理单元、计算装置及深度学习模型的计算图优化方法 | |
CN110096599A (zh) | 知识图谱的生成方法及装置 | |
US20120124082A1 (en) | Automatically generating a set of event processing rules for use in a complex event processing system | |
CN110489740A (zh) | 语义解析方法及相关产品 | |
CN109840259B (zh) | 数据查询方法、装置、电子设备及可读存储介质 | |
CN112069800A (zh) | 基于依存句法的句子时态识别方法、设备和可读存储介质 | |
CN113254612A (zh) | 知识问答处理方法、装置、设备及存储介质 | |
US8010477B2 (en) | Integrated problem solving system | |
CN117407430B (zh) | 数据查询方法、装置、计算机设备及存储介质 | |
CN113590841B (zh) | 智能化快速审单与基于知识图谱的智能预警系统与方法 | |
CN116360761B (zh) | 基于数据标签的私域和公域自动化营销方法及系统 | |
CN117851443B (zh) | 基于人工智能的sql规则标签生成方法及可读存储介质 | |
CN113138637A (zh) | 一种电脑配置信息处理方法、装置及其存储介质 | |
CN118051513A (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 |