掌桥专利:专业的专利平台
掌桥专利
首页

断言信息生成方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 16:04:54



技术领域

本申请涉及大数据技术领域,特别是涉及一种断言信息生成方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式)),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。目前测试规范都要求测试人员编写的自动化脚本中必须包含断言,这些断言往往都是由测试人员手工编写代码来实现。

然而,手工编写断言的方式繁琐费时,效率较低。

发明内容

基于此,有必要针对上述手工编写断言的方式繁琐费时,效率较低的技术问题,提供一种断言信息生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种断言信息生成方法。所述方法包括:

获取测试案例的输出数据集;所述输出数据集中包括多组输出数据,每组输出数据为所述测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

从各组输出向量中,确定出距离质心向量最近的目标输出向量;所述质心向量为各组输出向量构成的向量集合的中心;

将所述目标输出向量还原为原始字段值,基于所述原始字段值生成所述测试案例的断言信息。

在其中一个实施例中,获取各字段的每个字段值在所述输出数据集中的出现次数;

基于所述出现次数,从所述多个字段中确定出符合预设条件的目标字段;

所述通过数字字典对每组输出数据中各字段的字段值进行转换处理,包括:

通过所述数字字典对每组输出数据中目标字段的字段值进行转换处理。

在其中一个实施例中,所述基于所述出现次数,从所述多个字段中确定出符合预设条件的目标字段,包括:

针对每个字段,基于所述出现次数,确定所述字段各个字段值的出现概率,并从各个字段值的出现概率中确定出数值最大的目标出现概率;

从所述多个字段中剔除所述目标出现概率小于阈值的字段,得到所述目标字段。

在其中一个实施例中,在从各组输出向量中,确定出距离质心向量最近的目标输出向量之前,还包括:

将各组输出向量组合为行列式,并获取所述行列式的值;

获取各组输出向量的累加和与所述行列式的值的比值,作为所述质心向量。

在其中一个实施例中,在从各组输出向量中,确定出距离质心向量最近的目标输出向量之前,还包括:

对各组输出向量进行归一化处理,得到各组输出向量对应的归一化后向量;

所述从各组输出向量中,确定出距离质心向量最近的目标输出向量,包括:

从各组归一化后向量中,确定出距离质心向量最近的目标归一化后向量;

所述将所述目标输出向量还原为原始字段值,包括:

将所述目标归一化后向量还原为所述原始字段值。

在其中一个实施例中,在将所述目标输出向量还原为原始字段值,基于所述原始字段值生成所述测试案例的断言信息之后,还包括:

存储所述测试案例及所述测试案例的断言信息至数据库;

当再次执行所述测试案例时,从所述数据库中获取所述测试案例的断言信息;

当所述测试案例的实际输出数据与所述断言信息不匹配时,反馈错误信息至测试终端,使所述测试终端基于所述错误信息进行错误分析。

第二方面,本申请还提供了一种断言信息生成装置。所述装置包括:

获取模块,用于获取测试案例的输出数据集;所述输出数据集中包括多组输出数据,每组输出数据为所述测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

转换模块,用于通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

确定模块,用于从各组输出向量中,确定出距离质心向量最近的目标输出向量;所述质心向量为各组输出向量构成的向量集合的中心;

生成模块,用于将所述目标输出向量还原为原始字段值,基于所述原始字段值生成所述测试案例的断言信息。

在其中一个实施例中,所述装置还包括筛选模块,用于获取各字段的每个字段值在所述输出数据集中的出现次数;基于所述出现次数,从所述多个字段中确定出符合预设条件的目标字段;

转换模块,还用于通过所述数字字典对每组输出数据中目标字段的字段值进行转换处理。

在其中一个实施例中,所述筛选模块,还用于针对每个字段,基于所述出现次数,确定所述字段各个字段值的出现概率,并从各个字段值的出现概率中确定出数值最大的目标出现概率;从所述多个字段中剔除所述目标出现概率小于阈值的字段,得到所述目标字段。

在其中一个实施例中,所述装置还包括质心确定模块,用于将各组输出向量组合为行列式,并获取所述行列式的值;获取各组输出向量的累加和与所述行列式的值的比值,作为所述质心向量。

在其中一个实施例中,所述装置还包括归一化模块,用于对各组输出向量进行归一化处理,得到各组输出向量对应的归一化后向量;

确定模块,还用于从各组归一化后向量中,确定出距离质心向量最近的目标归一化后向量;

生成模块,还用于将所述目标归一化后向量还原为所述原始字段值。

在其中一个实施例中,所述装置还包括:

存储模块,用于存储所述测试案例及所述测试案例的断言信息至数据库;

断言核对模块,用于当再次执行所述测试案例时,从所述数据库中获取所述测试案例的断言信息;当所述测试案例的实际输出数据与所述断言信息不匹配时,反馈错误信息至测试终端,使所述测试终端基于所述错误信息进行错误分析。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取测试案例的输出数据集;所述输出数据集中包括多组输出数据,每组输出数据为所述测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

从各组输出向量中,确定出距离质心向量最近的目标输出向量;所述质心向量为各组输出向量构成的向量集合的中心;

将所述目标输出向量还原为原始字段值,基于所述原始字段值生成所述测试案例的断言信息。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取测试案例的输出数据集;所述输出数据集中包括多组输出数据,每组输出数据为所述测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

从各组输出向量中,确定出距离质心向量最近的目标输出向量;所述质心向量为各组输出向量构成的向量集合的中心;

将所述目标输出向量还原为原始字段值,基于所述原始字段值生成所述测试案例的断言信息。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

获取测试案例的输出数据集;所述输出数据集中包括多组输出数据,每组输出数据为所述测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

从各组输出向量中,确定出距离质心向量最近的目标输出向量;所述质心向量为各组输出向量构成的向量集合的中心;

将所述目标输出向量还原为原始字段值,基于所述原始字段值生成所述测试案例的断言信息。

上述断言信息生成方法、装置、计算机设备、存储介质和计算机程序产品,在获取测试案例的输出数据集后,通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量,然后从各组输出向量中,确定出距离质心向量最近的目标输出向量,质心向量为各组输出向量构成的向量集合的中心;将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息。该方法通过对测试案例被执行多次后得到的输出数据集的分析,确定出可用作该测试案例进行断言核对的基准数据,实现了对测试案例中需做断言的数据的自动确定,无需测试人员花费太多时间来编写断言内容,而只需调用相应的断言比对接口,从而可提升测试脚本的编写效率和断言的充分性。

附图说明

图1为一个实施例中断言信息生成方法的流程示意图;

图2为一个实施例中字段值转换处理步骤的流程示意图;

图3为一个实施例中目标字段确定步骤的流程示意图;

图4为一个实施例中断言信息生成系统的结构框图;

图5为另一个实施例中断言信息生成方法的完整流程示意图;

图6为一个实施例中断言信息生成装置的结构框图;

图7为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

在一个实施例中,如图1所示,提供了一种断言信息生成方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,该方法包括以下步骤:

步骤S110,获取测试案例的输出数据集;输出数据集中包括多组输出数据,每组输出数据为测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值。

其中,测试案例,即测试用例,表示对一项特定的软件产品进行测试任务的描述,主要包括测试目标、测试环境、测试脚本等。需要说明的是,本申请中可生成断言信息的测试案例须为成功执行的测试案例。

其中,输出数据可以为测试案例中的测试脚本执行过程中输出的数据,测试脚本执行过程中一般会输出多个数据,每个数据对应一个字段,因此,测试脚本被执行一次,将会输出多个字段的字段值,构成一组输出数据。

其中,字段可以理解为数据的属性,字段值表示属性下的取值。例如,字段可以为“姓名”、“年龄”等,“年龄”下的字段值可以为“20岁”、“30岁”等。

具体实现中,为便于描述,本申请以生成一个测试案例的断言信息为例进行说明,记该测试案例为A,预先保存测试案例A每次被执行时的输出数据,将每次被执行时的输出数据作为一组输出数据,构成测试案例A的输出数据集。

其中,保存输出数据时的数据结构可以为:脚本类名、@test方法名、案例描述、接口返回数据(即输出数据),前三个字段唯一标识一个自动化脚本的测试案例,接口返回数据保存被测试的接口返回的数据,以json格式进行保存,如下表1所示:

表1输出数据的保存数据结构

表1中,接口返回数据共包含四个字段,分别为:Inprivate.from表示一个字段,其字段值为“网银”;Inprivate.currtype表示一个字段,其字段值为“1.00”;InfoCommV10.trxCode表示一个字段,其字段值为“2631”;InfoCommV10.brno表示一个字段,其字段值为“00998”。

步骤S120,通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量。

具体实现中,由于一个字段可能有多个类型的字段值,比如Inprivate.from字段会有网银、柜面、在线等多种字段值,因此,为避免数据的错误混乱,可将各个字段值的情况均列举出来,用数字字典表示,例如,用1表示网银,用2表示柜面,用3表示在线等,类似地,将其他字段的字段值的情况也进行相应的转换处理,得到可多个字段的不同字段值的数字字典。将每组输出数据中各字段的字段值均按照数字字典中相应的数值进行表示,可得到每组输出数据各字段的转换值,基于各字段的转换值,得到每组输出数据对应的输出向量。

例如,设输出数据中包括3个字段:字段A、字段B和字段C,其中,字段A的字段值包括A

步骤S130,从各组输出向量中,确定出距离质心向量最近的目标输出向量;质心向量为各组输出向量构成的向量集合的中心。

具体实现中,由于断言是实现的验证作用,因此,用于生成断言的数据应当为基准数据,故而在得到各组输出数据对应的输出向量后,可确定各组输出向量构成的向量集合的中心向量,作为质心向量,从各组输出向量中确定出距离质心向量最近的输出向量,作为生成断言信息的目标输出向量。

更具体地,可以先将各组输出向量组合为行列式,获取行列式的值,根据该行列式的值和各组输出向量的累加和,确定各组输出向量构成的向量集合的质心向量。

步骤S140,将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息。

具体实现中,在确定出距离质心向量最近的目标输出向量后,还需通过数字字典将目标输出向量还原为转换前的原始字段值,该原始字段值即为测试案例进行断言核对的基准数据,因此,可基于该原始字段值生成测试案例的断言信息。由此,基于上述步骤S110-步骤S140可得到任何一个成功执行的测试案例的断言信息,并存储测试案例及其断言信息至数据库中,以便后续执行该测试案例时,可直接调用相应的断言比对接口,进行断言的真假判断。

上述断言信息生成方法中,在获取测试案例的输出数据集后,通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量,然后从各组输出向量中,确定出距离质心向量最近的目标输出向量,质心向量为各组输出向量构成的向量集合的中心;将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息。该方法通过对测试案例被执行多次后得到的输出数据集的分析,确定出可用作该测试案例进行断言核对的基准数据,实现了对测试案例中需做断言的数据的自动确定,无需测试人员花费太多时间来编写断言内容,而只需调用相应的断言比对接口,从而可提升测试脚本的编写效率和断言的充分性。

在一示例性实施例中,如图2所示,在步骤S120,通过数字字典对每组输出数据中各字段的字段值进行转换处理之前,还包括:

步骤S111,获取各字段的每个字段值在输出数据集中的出现次数;

步骤S112,基于出现次数,从多个字段中确定出符合预设条件的目标字段;

上述步骤S120,通过数字字典对每组输出数据中各字段的字段值进行转换处理的具体实现方式可以为:

步骤S113,通过数字字典对每组输出数据中目标字段的字段值进行转换处理。

具体实现中,由于一个字段可能有多个字段值,因此,需获取各字段的每个字段值在输出数据集中的出现次数,若一个字段的各个字段值的出现次数都较低,例如,对于时间字段,时间在不断变化,故其各个字段值对应的出现概率都将较低,说明该字段的字段值变化频繁,与测试案例的关联度不强,可以考虑在断言时不对其进行核对,由此可以需要进行断言核对的字段的字段值应较为恒定,变化较少,字段值的出现概率应大于或等于阈值,将这样的字段确定为目标字段。基于目标字段的特点可以从输出数据中的多个字段中确定出符合条件的目标字段,在通过数字字典对每组输出数据中各字段的字段值进行转换处理时,可对目标字段的字段值进行转换处理,而无需对除目标字段之外的其他字段的字段值进行转换处理,以提高后续目标输出向量的确定效率。

本实施例中,基于各字段的字段值在输出数据集中的出现次数,从多个字段中确定出目标字段,通过数字字典对每组输出数据中目标字段的字段值进行转换处理,而无需对除目标字段之外的其他字段的字段值进行转换处理,可以提高后续目标输出向量的确定效率,节省不必要的计算资源。

在一示例性实施例中,如图3所示,上述步骤S112,基于出现次数,从多个字段中确定出符合预设条件的目标字段,具体可以通过以下步骤实现:

步骤S112A,针对每个字段,基于出现次数,确定字段各个字段值的出现概率,并从各个字段值的出现概率中确定出数值最大的目标出现概率;

步骤S112B,从多个字段中剔除目标出现概率小于阈值的字段,得到目标字段。

其中,出现概率表示一个字段某一字段值的出现次数在该字段所有字段值的总出现次数中所占的比例。

具体实现中,对于只有一个字段值的字段,其对应的目标出现概率应为100%。对于具有多个字段值的字段,则需要获取该字段各个字段值的出现次数与该字段所有字段值的总出现次数的比值,得到各个字段值的出现概率,并从各个字段值的出现概率中确定出数值最大的出现概率,作为目标出现概率。将目标出现概率与阈值进行比对,若目标出现概率小于阈值,表明对应字段的字段值变化频繁,故可将对应的字段剔除,将多个字段中剔除目标出现概率小于阈值的字段后剩余的字段,确定为目标字段。

本实施例中,通过将字段的各个字段值的出现概率中数值最大的目标出现概率与阈值进行比对,将目标出现概率小于阈值的字段从多个字段中剔除,得到目标字段,实现了对字段的筛选处理,使得得到的目标字段为字段值较为恒定,需要进行断言核对的字段。

在一示例性实施例中,在步骤S130,从各组输出向量中,确定出距离质心向量最近的目标输出向量之前,还包括:

步骤S121,将各组输出向量组合为行列式,并获取行列式的值;

步骤S122,获取各组输出向量的累加和与输出行列式的值的比值,作为质心向量。

具体实现中,在确定出各组输出数据对应的输出向量后,每组输出向量可对应多维空间的一个点,对于各组输出向量构成的向量集合,在多维空间中则对应有多个点,确定质心向量的过程,即为确定这些点的质心的过程,确定过程可用如下所示的关系式表示:

其中,μ表示质心向量,C表示各组输出向量构成的向量集合,|C

例如,设有两组输出数据,各组输出数据对应的输出向量分别(a,b)、(c,d),则各组输出向量构成的向量集合的质心向量的确定关系式可表示为:

在计算得到质心向量后,则可分别计算各组输出向量与质心向量之间的欧式距离,将与质心向量的欧式距离最小的输出向量确定为目标输出向量。

本实施例中,通过确定各组输出向量构成的向量集合的质心向量,以便于根据质心向量从各组输出向量中确定出目标输出向量,得到断言核对的基准数据。

在一示例性实施例中,在步骤S130,从各组输出向量中,确定出距离质心向量最近的目标输出向量之前,还包括:对各组输出向量进行归一化处理,得到各组输出向量对应的归一化后向量;

步骤S130包括:从各组归一化后向量中,确定出距离质心向量最近的目标归一化后向量;

步骤S140中,将目标输出向量还原为原始字段值,包括:将目标归一化后向量还原为原始字段值。

其中,归一化是将有量纲的表达式,经过变换,化为无量纲的表达式的处理方法。

具体实现中,在通过数字字典将每组输出数据转换为输出向量后,从各组输出向量中确定出目标输出向量前,还需要对各组输出向量进行归一化处理,得到各组输出向量对应的归一化后向量,从各组归一化后向量中,确定出距离质心向量最近的目标归一化后向量,将目标归一化后向量还原为原始字段值。

更具体地,对各组输出向量进行归一化处理的方式为:针对每一组输出向量,获取该组输出向量中的各个转换值与该组输出向量中的最小转换值之间的差值,作为第一差值;获取该组输出向量中最大转换值与最小转换值之间的差值,作为第二差值;获取第一差值与第二差值的比值,作为各个转换值的归一化后的值,基于各个转换值的归一化后的值由,得到每组输出向量对应的归一化后向量。

本实施例中,在从多个输出向量中确定出目标输出向量之前,先对各组输出向量进行归一化处理,对归一化后的输出向量进行质心向量的确定,可以减少计算复杂度,提高质心向量的确定速率,从而提高目标输出向量的确定速率。

在一示例性实施例中,在步骤S140,将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息之后,还包括:

步骤S150,存储测试案例及测试案例的断言信息至数据库;

步骤S160,当再次执行测试案例时,从数据库中获取测试案例的断言信息;

步骤S170,当测试案例的实际输出数据与断言信息不匹配时,反馈错误信息至测试终端,使测试终端基于错误信息进行错误分析。

具体实现中,在得到测试案例及其断言信息后,可将测试案例及其断言信息存储至数据库中,后续再次通过接口执行该测试案例的测试脚本时,可基于该测试案例的标识从数据库获取该测试案例的断言信息,与接口返回的实际输出数据进行比对,若不匹配,表示该次测试的实际输出数据与之前成功执行时的数据不一样,则断言失败,将断言失败的内容,作为错误信息反馈给测试终端,使测试终端基于错误信息进行错误分析。

本实施例中,通过存储测试案例及测试案例的断言信息至数据库,以便于后续再次执行该测试案例时,可直接从数据库获取该测试案例的断言信息,进行断言核对,根据核对结果确定测试结果。

在一个实施例中,为了便于本领域技术人员理解本申请实施例,以下将结合附图的具体示例进行说明。需要说明的是,本申请主要针对自动化测试脚本每次执行后的接口返回数据或者数据库的登记情况进行自动断言,下面以接口测试的自动化测试脚本为例,对本申请的断言信息生成方法进行详细说明,可以理解的是,该断言信息生成方法同样可以适用于数据库表的断言生成和核对。

参考图4,示出了一种断言信息生成系统的结构框图,主要包括三部分:输出数据收集单元410、断言数据训练单元420和断言核对单元430,其中:

输出数据收集单元410,用于针对成功执行的测试案例的测试脚本,收集其接口返回数据(即输出数据),保存时可采用如表1所示的数据结构进行保存:脚本类名、@test方法名、案例描述、接口返回数据(即输出数据),前三个字段唯一标识一个自动化脚本的测试案例,接口返回数据保存被测试的接口返回的数据,以json格式进行保存。

断言数据训练单元420,用于训练数据,对单个接口的测试案例执行时保存的json字段做训练。在接口测试的测试脚本多次执行后在数据库中保存许多接口返回的输出数据,构成输出数据集;针对输出数据中的每个字段的字段值,统计其出现概率,若一个字段的字段值的最高出现概率小于阈值(例如50%),表明该字段的字段值变化频繁,与测试案例的关联度较小,无需进行断言,因此,可从各个字段中剔除无需进行断言的字段,得到目标字段;通过数字字典对每组输出数据中的目标字段进行转换,得到输出向量;确定各组输出向量构成的向量集合的中心,作为质心向量,从各组输出向量中,确定出距离质心向量最近的目标输出向量,基于对目标输出向量的还原处理得到测试案例对应的核对基准数据,形成测试案例的断言。

断言核对单元430,用于将得到的断言和测试案例对应登记至数据库中,后续该测试案例执行时,都从数据库获取该测试案例的断言信息,与接口返回的实际输出数据进行比对,若不匹配,表示该次测试的实际输出数据与之前成功执行时的数据不一样,则断言失败,将断言失败的内容,作为错误信息反馈给测试终端,使测试终端基于错误信息进行错误分析。

参考图5,为一示例性实施例中断言信息生成方法的完整流程示意图,包括以下步骤:

步骤S510,获取成功执行的测试案例每次成功执行时的输出数据集合。其中,在输出数据收集单元410中已经将测试案例每次成功执行时,接口返回的输出数据保存下来,因此,该步骤可以根据脚本类名、@test方法名和案例描述查询出该测试案例保存的所有返回的输出数据,主要是获取json格式数据。

步骤S520,判断输出数据集合中是否有下一组输出数据,有则跳转至步骤S530,否则跳转至步骤S540。

步骤S530,累计每个字段的字段值出现的次数。具体地,接口返回数据用json保存的,有很多字段,这里统计每个字段的字段值出现的次数,并将这个字段出现的字段值的情况全部登记下来。

步骤S540,统计每个字段的字段值出现的最高概率。具体地,根据每个字段的字段值出现的次数,统计出该字段的字段值出现的最高概率。

步骤S550,剔除无需比对的字段。具体地,判断每个字段的字段值出现的最高概率是否小于50%,小于50%说明该字段的字段值变化频繁,和测试案例关联度不强,可以考虑在断言时不对其进行核对,比如接口返回值中的时间,这种字段的值可以不做核对,对于无需核对的字段,从json字符串中剔除该字段。

步骤S560,对各个字段的字段值作字典转换,得到各个字段的转换值。具体地,剔除无需比对的字段后,将剩余各个字段的字段值用向量进行表示,每个字段的值可能有多种情况,比如Inprivate.from字段会有网银、柜面、在线等等,这里需要将字段值多个情况都列出来,分别用数字字典来表示,比如用1表示网银、2表示柜面、3表示在线等,有多少种情况就用多少个数字字典来表示,最终数据向量会变为类似[1,1,2,1]的用数字字典表示的向量。

步骤S570,对各个字段的转换值作归一化处理。具体地,每组输出数据的转换值,构成一组输出向量,对各组输出向量作归一化处理,主要算法是每个输出向量中的转换值减去最小的转换值,再除以最大的转换值和最小的转换值的差,由此将最初的输出向量转换为归一化后的向量。

步骤S580,计算质心。具体地,每一个归一化后的向量对应一个多维空间的点,针对归一化后的向量构成的向量集合,在多维空间就对应有很多点,计算向量集合的质心。

步骤S580,确定离质心最近的点。具体地,计算每个归一化后的向量对应的点离质心的欧式距离,确定离质心最近的点;将该点对应的归一化后的向量还原为原始字段值,该原始字段值即为测试案例做断言核对的基准数据。

本实施例基于大数据的分析获取断言比对基准数据,在编写测试脚本时无需花费太多时间来编写断言内容,只需调用相应的断言比对接口,有助于提升脚本编写的效率和断言的充分性。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的断言信息生成方法的断言信息生成装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个断言信息生成装置实施例中的具体限定可以参见上文中对于断言信息生成方法的限定,在此不再赘述。

在一个实施例中,如图6所示,提供了一种断言信息生成装置,包括:获取模块610、转换模块620、确定模块630和生成模块640,其中:

获取模块610,用于获取测试案例的输出数据集;输出数据集中包括多组输出数据,每组输出数据为测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

转换模块620,用于通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

确定模块630,用于从各组输出向量中,确定出距离质心向量最近的目标输出向量;质心向量为各组输出向量构成的向量集合的中心;

生成模块640,用于将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息。

在一个实施例中,上述装置还包括筛选模块,用于获取各字段的每个字段值在输出数据集中的出现次数;基于出现次数,从多个字段中确定出符合预设条件的目标字段;

转换模块620,还用于通过数字字典对每组输出数据中目标字段的字段值进行转换处理。

在一个实施例中,上述筛选模块,还用于针对每个字段,基于出现次数,确定字段各个字段值的出现概率,并从各个字段值的出现概率中确定出数值最大的目标出现概率;从多个字段中剔除目标出现概率小于阈值的字段,得到目标字段。

在一个实施例中,上述装置还包括质心确定模块,用于将各组输出向量组合为行列式,并获取行列式的值;获取各组输出向量的累加和与行列式的值的比值,作为质心向量。

在一个实施例中,上述装置还包括归一化模块,用于对各组输出向量进行归一化处理,得到各组输出向量对应的归一化后向量;

确定模块630,还用于从各组归一化后向量中,确定出距离质心向量最近的目标归一化后向量;

生成模块640,还用于将目标归一化后向量还原为原始字段值。

在一个实施例中,上述装置还包括:

存储模块,用于存储测试案例及测试案例的断言信息至数据库;

断言核对模块,用于当再次执行测试案例时,从数据库中获取测试案例的断言信息;当测试案例的实际输出数据与断言信息不匹配时,反馈错误信息至测试终端,使测试终端基于错误信息进行错误分析。

上述断言信息生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种断言信息生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

获取测试案例的输出数据集;输出数据集中包括多组输出数据,每组输出数据为测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

从各组输出向量中,确定出距离质心向量最近的目标输出向量;质心向量为各组输出向量构成的向量集合的中心;

将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取测试案例的输出数据集;输出数据集中包括多组输出数据,每组输出数据为测试案例被执行一次的输出数据,每组输出数据包括多个字段的字段值;

通过数字字典对每组输出数据中各字段的字段值进行转换处理,得到每组输出数据对应的输出向量;

从各组输出向量中,确定出距离质心向量最近的目标输出向量;质心向量为各组输出向量构成的向量集合的中心;

将目标输出向量还原为原始字段值,基于原始字段值生成测试案例的断言信息。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

技术分类

06120114695637