本申请涉及软件技术领域,尤其涉及测试用例验证方法及装置。
背景技术:
在很多应用场景下需要验证测试用例是否正确,通常会将测试用例的验证数据与标准数据进行对比,若两者一致的话,则表示测试用例正确。
目前针对json格式的验证数据和标准数据,通常采用正则匹配方式进行对比,但是正则匹配方式仅仅适用于验证数据和标准数据均为少量简单形式,对于大量复杂形式(数组形式和对象形式相互嵌套)的验证数据和标准数据,正则匹配方式无法进行全量对比。
技术实现要素:
鉴于此,本申请提供测试用例验证方法及装置,可以针对大量复杂形式的验证数据和验证数据进行全量对比,以验证测试用例是否正确。
为了实现上述目的,本申请提供了下述技术特征:
一种测试用例验证方法,包括:
确定测试用例的验证数据以及标准数据,其中所述验证数据和所述标准数据均为json格式;
在所述验证数据和所述标准数据为对象类型与数组类型相互嵌套的情况下,逐层解开嵌套进行全量对比操作;
获得所述测试用例的全量对比结果。
优选的,所述在所述验证数据和所述标准数据为对象类型与数组类型相互嵌套的情况下,逐层解开嵌套进行全量对比操作,包括:
识别所述验证数据和所述标准数据的数据类型;
在所述验证数据和所述标准数据为数组类型的情况下,执行步骤a:解开数组形式嵌套,获得各个验证对象和各个标准对象;构建至少一个对象匹配组,其中对象匹配组包括一标准对象和与该标准对象相似度最高的验证对象;针对对象匹配组执行对象对比操作;
在所述验证数据和所述标准数据为对象类型的情况下,执行步骤b:建立验证对象和标准对象组成的对象匹配组,针对对象匹配组执行对象对比操作;
其中,对象包括一个或多个数据标识和数据值组成的数据对,在执行对象对比操作过程中,若发现数组类型则进入步骤a,若发现对象类型则进入步骤b,直到解开所有嵌套完成对比操作。
优选的,所述数据值的类型为基础类型、数组类型或对象类型,则针对对象匹配组执行对象对比操作包括:
依据对象匹配组中两个对象所包含的数据标识计算两个对象的差集,其中,差集包括验证对象缺少的数据标识和验证数据多余的数据标识;
依据对象匹配组中两个对象所包含的数据标识计算两个对象的交集;
对比所述交集中数据标识和数据值;
若在对比过程中发现数据值类型为数组类型,则进入步骤a;
若在对比过程中发现数据值类型为对象类型,则进入步骤b;
若在对比过程中发现数据值类型为基础类型,则直接进行对比操作。
优选的,所述构建至少一个对象匹配组,其中对象匹配组包括一标准对象和与该标准对象相似度最高的验证对象,包括:
若所述验证数据包括一个验证对象和所述标准数据包括一个标准对象,则将验证数据中验证对象和标准数据中标准对象组成一对象匹配组;
若所述验证数据包括两个及以上对象和所述标准数据包括两个及以上对象,则计算各个验证对象和各个标准对象之间的相似度,针对每个标准对象:确定与该标准对象具有最大相似度的验证对象,并将该标注对象和验证对象组成一对象匹配组。
优选的,所述方法还包括按预设关键数据标识分别对验证数据和标准数据进行分组;
则所述计算各个验证对象和各个标准对象之间的相似度,包括:
计算与标准对象所属同样分组中的验证对象的相似度。
优选的,所述预设关键数据标识为日期数据标识。
优选的,所述获得所述测试用例的全量对比结果,包括:
确定所述验证数据所缺少的所有数据标识;
确定所述验证数据所多余的所有数据标识;
确定所述验证数据与所述标准数据不一致的所有数据标识和数据值。
一种测试用例验证装置,包括:
确定单元,用于确定测试用例的验证数据以及标准数据,其中所述验证数据和所述标准数据均为json格式;
对比单元,用于在所述验证数据和所述标准数据为对象类型与数组类型相互嵌套的情况下,逐层解开嵌套进行全量对比操作;
结果获得单元,用于获得所述测试用例的全量对比结果。
优选的,所述对比单元,包括:
识别单元,用于识别所述验证数据和所述标准数据的数据类型;
第一对比单元,用于在所述验证数据和所述标准数据为数组类型的情况下,执行步骤a:解开数组形式嵌套,获得各个验证对象和各个标准对象;构建至少一个对象匹配组,其中对象匹配组包括一标准对象和与该标准对象相似度最高的验证对象;针对对象匹配组执行对象对比操作;
第二对比单元,用于在所述验证数据和所述标准数据为对象类型的情况下,执行步骤b:建立验证对象和标准对象组成的对象匹配组,针对对象匹配组执行对象对比操作;
其中,对象包括一个或多个数据标识和数据值组成的数据对,在执行对象对比操作过程中,若发现数组类型则进入步骤a,若发现对象类型则进入步骤b,直到解开所有嵌套完成对比操作。
优选的,所述数据值的类型为基础类型、数组类型或对象类型,则所述第一对比单元和所述第二对比单元中针对对象匹配组执行对象对比操作,具体用于:
依据对象匹配组中两个对象所包含的数据标识计算两个对象的差集,其中,差集包括验证对象缺少的数据标识和验证数据多余的数据标识;
依据对象匹配组中两个对象所包含的数据标识计算两个对象的交集;
对比所述交集中数据标识和数据值;
若在对比过程中发现数据值类型为数组类型,则进入步骤a;
若在对比过程中发现数据值类型为对象类型,则进入步骤b;
若在对比过程中发现数据值类型为基础类型,则直接进行对比操作。
通过以上技术手段,可以实现以下有益效果:
本申请在验证数据和标准数据均为大量复杂形式,也即,数组和对象相互嵌套的形式下,为了对嵌套内部数据实现对比,可以逐层解开嵌套,边解开嵌套边进行对比操作,直到完成全量数据对比操作。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种测试用例验证方法的流程示意图;
图2为本申请实施例公开的一种测试用例验证方法的流程示意图;
图3a为本申请实施例公开的一种测试用例验证方法中全量对比结果的示意图;
图3b为本申请实施例公开的一种测试用例验证方法中标准数据示意图;
图3c为本申请实施例公开的一种测试用例验证方法中全量对比结果的示意图;
图4为本申请实施例公开的一种测试用例验证装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供了一种测试用例验证方法,参见图1,包括:
步骤s101:确定测试用例的验证数据以及标准数据,其中所述验证数据和所述标准数据均为json格式;
步骤s102:在所述验证数据和所述标准数据为对象类型与数组类型相互嵌套的情况下,逐层解开嵌套进行全量对比操作;
步骤s103:获得所述测试用例的全量对比结果。
通过上述技术特征可知,本申请具有如下技术效果:
本实施例中,在验证数据和标准数据均为大量复杂形式,也即,数组和对象相互嵌套的形式下,为了对嵌套内部数据实现对比,可以逐层解开嵌套,边解开嵌套边进行对比操作,直到完成全量数据对比操作。
本申请提供了一种测试用例验证方法,参见图2,包括:
步骤s201:确定测试用例的验证数据以及标准数据。
验证数据为测试用例的验证数据,即为用于后续待验证的数据,标准数据为经过校验后确定的测试用例的正确数据。
步骤s202:判断所述验证数据和所述标准数据是否均为json格式,若是则进入步骤s203。若否则结束程序。
由于本实施例适用于json格式的对比操作,因此判断验证数据和标准数据是否均为json格式,若是则继续执行后续操作,若否则结束操作,并可以提示验证数据或标准数据非json格式的警示。
步骤s203:识别所述验证数据和所述标准数据的数据类型。
参见图3a为验证数据的一种示意图,参见图3b为标准数据的一种示意图。其中,{}表示一个对象,对象中可以包括数据对、数组和/或对象,[]表示一个数组,数组中可以包括对象。
在所述验证数据和所述标准数据均为数组类型的情况下,进入步骤s204;在所述验证数据和所述标准数据均为对象类型的情况下,进入步骤s207。
步骤s204:解开数组形式嵌套,获得各个验证对象和各个标准对象。
步骤s205:构建至少一个对象匹配组,其中对象匹配组包括一标准对象和与该标准对象相似度最高的验证对象,进入步骤s207。
若所述验证数据包括一个验证对象且所述标准数据包括一个标准对象,则将验证数据中验证对象和标准数据中标准对象组成一对象匹配组。
若所述验证数据包括两个及以上验证对象且所述标准数据包括两个及以上标准对象,则计算各个验证对象和各个标准对象之间的相似度,针对每个标准对象:确定与该标准对象具有最大相似度的验证对象,并将该标准对象和验证对象组成一对象匹配组。
可以理解的是,标准数据可以包括两个以上的正确数据,但是两个及以上的标准数据的不尽相同,所以需要通过计算相似度的方式,来确定标准数据中标准对象与验证数据中验证对象的对应关系,以便用于组建对象匹配组。
其中,本步骤还可以包括:按预设关键数据标识分别对验证数据和标准数据进行分组,例如,在关键数据标识为按照【date_日期】字段的情况下,按照【date_日期】字段分组后可以获得多个日期分组。
则所述计算验证数据中验证对象和标准数据中标准对象的相似度,可以包括:计算与标准对象所属同样分组中的验证对象的相似度。例如,在【date_2018-01-10】分组中确定验证对象和标准对象,分别计算两者的相似度,而不需要将【date_2018-01-10】分组中的验证对象与【date_2018-01-09】分组中的标准对象计算相似度。
可以理解的是,在增加关键字段分组后,可以减少计算相似度的工作量,从而可以大大加快计算速度。
在本步骤中可以确定至少一个对象匹配组,然后针对每个对象匹配组执行步骤s207,直到各个对象匹配组均执行步骤s207后结束。
步骤s206:建立验证对象和标准对象组成的对象匹配组。
由于本步骤仅有一个对象匹配组,则仅针对该对象匹配组执行步骤s207。
步骤s207:针对对象匹配组执行对象对比操作。
可以理解的是,对象包括多个数据对,数据对采用key-value格式表示,为了便于文字描述,将key表述为数据标识,将value表述为数据值。其中,数据值的类型可以为基础类型、数组类型或对象类型。
则针对对象匹配组执行对象对比操作包括:
依据对象匹配组中两个对象所包含的数据标识计算两个对象的差集,其中,差集包括验证对象缺少的数据标识和验证数据多余的数据标识;
依据对象匹配组中两个对象所包含的数据标识计算两个对象的交集;
对比所述交集中数据标识和数据值;
若在对比过程中发现数据值类型为数组类型,则进入步骤s204。
若在对比过程中发现数据值类型为对象类型,则进入步骤s207。
若在对比过程中发现数据值类型为基础类型,则直接进行对比操作。
在数组形式和对象形式的相互嵌套操作中,边解开嵌套边执行对比操作,从而完成验证数据和标准数据的全量对比操作。
步骤s208:获得所述测试用例的全量对比结果。
确定所述验证数据所缺少的所有数据标识;
确定所述验证数据所多余的所有数据标识;
确定所述验证数据与所述标准数据不一致的所有数据标识和数据值。
参见图3c,为在图3a和图3b的实施例下,形成的全量对比结果。全量对比结果可以采用json格式表示。
通过上述技术特征可知,本申请具有如下技术效果:
本实施例中,在验证数据和标准数据均为大量复杂形式,也即,数组和对象相互嵌套的形式下,为了对嵌套内部数据实现对比,可以逐层解开嵌套,边解开嵌套边进行对比操作,直到完成全量数据对比操作。
参见图4,本申请提供一种测试用例验证装置,包括:
确定单元41,用于确定测试用例的验证数据以及标准数据,其中所述验证数据和所述标准数据均为json格式;
对比单元42,用于在所述验证数据和所述标准数据为对象类型与数组类型相互嵌套的情况下,逐层解开嵌套进行全量对比操作;
结果获得单元43,用于获得所述测试用例的全量对比结果。
其中所述对比单元42,包括:
识别单元421,用于识别所述验证数据和所述标准数据的数据类型;
第一对比单元422,用于在所述验证数据和所述标准数据为数组类型的情况下,执行步骤a:解开数组形式嵌套,获得各个验证对象和各个标准对象;构建至少一个对象匹配组,其中对象匹配组包括一标准对象和与该标准对象相似度最高的验证对象;针对对象匹配组执行对象对比操作;
第二对比单元423,用于在所述验证数据和所述标准数据为对象类型的情况下,执行步骤b:建立验证对象和标准对象组成的对象匹配组,针对对象匹配组执行对象对比操作;
其中,对象包括一个或多个数据标识和数据值组成的数据对,在执行对象对比操作过程中,若发现数组类型则进入步骤a,若发现对象类型则进入步骤b,直到解开所有嵌套完成对比操作。
其中,所述数据值的类型为基础类型、数组类型或对象类型,则所述第一对比单元和所述第二对比单元中针对对象匹配组执行对象对比操作,具体用于:
依据对象匹配组中两个对象所包含的数据标识计算两个对象的差集,其中,差集包括验证对象缺少的数据标识和验证数据多余的数据标识;
依据对象匹配组中两个对象所包含的数据标识计算两个对象的交集;
对比所述交集中数据标识和数据值;
若在对比过程中发现数据值类型为数组类型,则进入步骤a;
若在对比过程中发现数据值类型为对象类型,则进入步骤b;
若在对比过程中发现数据值类型为基础类型,则直接进行对比操作。
其中,第一对比单元422中所述构建至少一个对象匹配组,其中对象匹配组包括一标准对象和与该标准对象相似度最高的验证对象,包括:
若所述验证数据包括一个验证对象和所述标准数据包括一个标准对象,则将验证数据中验证对象和标准数据中标准对象组成一对象匹配组;
若所述验证数据包括两个及以上对象和所述标准数据包括两个及以上对象,则计算各个验证对象和各个标准对象之间的相似度,针对每个标准对象:确定与该标准对象具有最大相似度的验证对象,并将该标注对象和验证对象组成一对象匹配组。
其中,所述测试用例验证装置还包括按预设关键数据标识分别对验证数据和标准数据进行分组;则所述计算各个验证对象和各个标准对象之间的相似度,包括:计算与标准对象所属同样分组中的验证对象的相似度。
其中,所述预设关键数据标识为日期数据标识。
其中,结果获得单元43包括:
确定所述验证数据所缺少的所有数据标识;
确定所述验证数据所多余的所有数据标识;
确定所述验证数据与所述标准数据不一致的所有数据标识和数据值。
本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。