一种测试数据生成方法及装置与流程

文档序号:14249352阅读:181来源:国知局
一种测试数据生成方法及装置与流程

本发明涉及数据处理技术领域,特别是涉及一种测试数据生成方法及装置。



背景技术:

伴随着互联网和计算机技术的迅速发展,越来越多的业务可以通过互联网进行处理。不同的业务可以由不同的业务系统支撑。为了提高业务质量,需要经常对业务系统进行测试,例如,在金融系统中为了满足用户的需求,需要开发不同的业务系统支持业务实现,在业务系统正式面向用户时,需要对其进行功能或者性能测试。在测试前或者测试过程中,需要准备大量的测试数据。数据准备的正确与否决定了整个测试的结果。

现有的测试数据准备手段主要有两种,一种是,由开发人员直接提供测试数据,测试人员在需要时向开发人员索取该测试数据;另一种是,测试人员进行测试数据脚本的积累,并在使用时进行抽取相应的测试数据。

但是在实际应用中,上述的两种测试数据的准备手段都存在着一定的缺点。第一种方法得到的测试数据并未进行积累,只能在需要时获取,使用后便被废弃;第二种方法虽然可以进行测试数据的简单积累,但由于积累具有分散性,积累的数据很难被复用,同时积累的数据,不能实现测试数据的全量准备,很难保证测试的充分性。



技术实现要素:

针对于上述问题,本发明提供一种测试数据生成方法及装置,实现了能够提供全量的测试数据,保证了测试的充分性的目的。

为了实现上述目的,根据本发明的第一方面,提供了一种测试数据生成方法,该方法包括:

根据数据类别生成测试数据准备规则,其中,所述测试数据准备规则包括数据抽取规则、案例数据准备规则、关联数据获取规则和程序数据获取规则;

根据待测试案例确定待生成的测试数据的数据结构;

获取所述数据结构对应的数据类别;

在所述测试数据准备规则中确定与所述数据类别对应的所述测试数据准备规则;

根据所述数据类别对应的所述测试数据准备规则,从各个测试数据准备规则对应的源数据中生成测试数据。

优选地,所述根据数据类别生成测试数据准备规则,包括:

根据数据类别中的关键词在被测系统数据库中抽取测试数据,生成数据抽取规则;

获取历史测试完成的执行案例,将所述执行案例的案例号与所述执行案例的测试数据记载为映射关系,生成案例数据准备规则;

根据所述数据类别中的关联信息,将所述数据类别关联到对应的被测系统数据中,生成关联数据获取规则;

根据所述数据类别创建数据获取程序,通过所述数据获取程序获取所述数据类别对应的测试数据,生成程序数据获取规则。

优选地,所述获取所述数据结构对应的数据类别,包括:

将所述数据结构按照结构类型进行分组,得到具有相同数据结构的数据结构组;

将每一个数据结构组中的数据结构按照业务角度进行划分,得到多个数据类别;

将每个数据类别所对应的数据存储在同一列中,生成所述每个数据类别的存储格式。

优选地,该方法还包括:

生成执行案例库;

将测试完成的测试案例按照案例号与测试数据对应的映射关系,保存至所述执行案例库。

优选地,该方法还包括:

生成数据获取程序对应的程序库;

将编译的数据获取程序存储到所述程序库中。

根据本发明的第二方面,提供了一种测试数据生成装置,该装置包括:

规则生成模块,用于根据数据类别生成测试数据准备规则,其中,所述测试数据准备规则包括数据抽取规则、案例数据准备规则、关联数据获取规则和程序数据获取规则;

数据结构确定模块,用于根据待测试案例确定待生成的测试数据的数据结构;

数据类别获取模块,用于获取所述数据结构对应的数据类别;

规则确定模块,用于在所述测试数据准备规则中确定与所述数据类别对应的所述测试数据准备规则;

数据生成模块,用于根据所述数据类别对应的所述测试数据准备规则,从各个测试数据准备规则对应的源数据中生成测试数据。

优选地,所述规则生成模块包括:

第一规则生成单元,用于根据数据类别中的关键词在被测系统数据库中抽取测试数据,生成数据抽取规则;

第二规则生成单元,用于获取历史测试完成的执行案例,将所述执行案例的案例号与所述执行案例的测试数据记载为映射关系,生成案例数据准备规则;

第三规则生成单元,用于根据所述数据类别中的关联信息,将所述数据类别关联到对应的被测系统数据中,生成关联数据获取规则;

第四规则生成单元,用于根据所述数据类别创建数据获取程序,通过所述数据获取程序获取所述数据类别对应的测试数据,生成程序数据获取规则。

优选地,所述数据类别获取模块包括:

分组单元,用于将所述数据结构按照结构类型进行分组,得到具有相同数据结构的数据结构组;

划分单元,用于将每一个数据结构组中的数据结构按照业务角度进行划分,得到多个数据类别;

存储单元,用于将每个数据类别所对应的数据存储在同一列中,生成所述每个数据类别的存储格式。

优选地,所述第二规则生成单元还包括:

案例库生成子单元,用于生成执行案例库;

保存子单元,用于将测试完成的测试案例按照案例号与测试数据对应的映射关系,保存至所述执行案例库。

优选地,所述第四规则生成单元还包括:

程序库生成子单元,用于生成数据获取程序对应的程序库;

存储子单元,用于将编译的数据获取程序存储到所述程序库中。

相较于现有技术,本发明通过预设生成了测试数据准备规则,该测试数据准备规则除了涵盖现有技术中通用的数据抽取规则外,还包括了案例数据准备规则、关联数据获取规则和程序数据获取规则,这样测试数据获取方式全部保存在数据类别的测试数据准备规则中,可以高效自动化地提取和娇艳数据。在确定了数据类别后,根据不同的数据类别选取对应的测试数据准备规则,生成测试数据。可以同时为自动化和手工测试提供全量的测试数据,在保证测试数据提供全面性的基础上,保证测试的充分性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例一提供的一种测试数据生成方法的流程示意图;

图2为本发明实施例二提供的一种数据结构层的示意图;

图3为本发明实施例二提供的借记卡测试数据全量类别的示意图;

图4为本发明实施例三提供的一种测试数据生成装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

实施例一

参见图1为本发明实施例一提供的一种测试数据生成方法,其特征在于,该方法包括以下步骤:

s11、根据数据类别生成测试数据准备规则;

其中,测试数据准备规则包括了数据抽取规则,案例数据准备规则,关联数据获取规则和程序数据获取规则。具体的,从被测系统数据库中抽取获得测试数据对应的就是数据抽取规则,也是现有技术中常用的数据抽取规则,在实际应用中该数据抽取规则中记录相应的sql(structuredquerylanguage,结构化查询语言)语句,即可以通过调用该sql语句对被测系统数据库中进行查找获得测试数据;通过执行历史测试案例完成数据准备对应的就是案例数据准备规则,在该规则内记录了测试案例号和提取数据系信息,也就是根据数据类别信息得到了其对应于历史的测试案例,通过调用该测试案例号就可以获得对应的测试数据;通过更新被测系统数据库或调用其关联系统对应为关联数据获取规则,该规则记录相应的sql语句或外部关联系统调用信息,可以根据关联信息调用相应的数据库获取测试数据;通过独立与被测系统的接口程序生成对应于程序数据获取规则,该规则记录相应接口程序调用信息,通过调用该接口程序获得准备数据。因此,通过本发明生成的测试数据准备规则能够提供全量的测试数据。

s12、根据待测试案例确定待生成的测试数据的数据结构;

s13、获取所述数据结构对应的数据类别;

s14、在所述测试数据准备规则中确定与所述数据类别对应的所述测试数据准备规则;

s15、根据所述数据类别对应的所述测试数据准备规则,从各个测试数据准备规则对应的源数据中生成测试数据。

需要说明的是,当得到一个测试案例进行功能性测试时,测试数据的准备是整个测试的第一个步骤也是最关键的步骤。所以首先要明确该待测试案例中的数据结构,只有确定了数据结构才能针对这一类数据进行建模,然后根据该数据结构进行特定结构的匹配得到数据类别,进而根据数据类别选取对应的测试数据准备规则,由于数据类别不同可以采用不用的数据准备规则是由于为了更好地全面地提供测试数据,使得测试数据更加准确、高效和全面。然后依据选取的测试数据准备规则生成相应的测试数据。可以理解的是,在本发明中提供的四种测试数据准备规则的混合使用,可以获得测试数据的全集。但在具体的测试环境中,测试案例使用哪一种或者哪几种测试数据准备规则,是根据实际情况进行选择,甚至于一种数据类别的数据的获取,同时可以使用不同的方式。

通过本发明实施例一公开的技术方案,预设生成了测试数据准备规则,该测试数据准备规则除了涵盖现有技术中通用的数据抽取规则外,还包括了案例数据准备规则、关联数据获取规则和程序数据获取规则,这样测试数据获取方式全部保存在数据类别的测试数据准备规则中,可以高效自动化地提取和娇艳数据。在确定了数据类别后,根据不同的数据类别选取对应的测试数据准备规则,生成测试数据。可以同时为自动化和手工测试提供全量的测试数据,在保证测试数据提供全面性的基础上,保证测试的充分性。

实施例二

参照本发明实施例一和图1中所描述的s11到s15步骤的具体过程,首先根据数据类别生成测试数据准备规则,其中,所述测试数据准备规则包括数据抽取规则、案例数据准备规则、关联数据获取规则和程序数据获取规则;

该测试数据准备规则的生成过程,可以包括:

根据数据类别中的关键词在被测系统数据库中抽取测试数据,生成数据抽取规则;

获取历史测试完成的执行案例,将所述执行案例的案例号与所述执行案例的测试数据记载为映射关系,生成案例数据准备规则;

根据所述数据类别中的关联信息,将所述数据类别关联到对应的被测系统数据中,生成关联数据获取规则;

根据所述数据类别创建数据获取程序,通过所述数据获取程序获取所述数据类别对应的测试数据,生成程序数据获取规则。

具体的,从被测试系统数据库中抽取,生成数据抽取规则,在该规则中记录相应的sql语句,仅select函数,即根据关键词进行抽取;

通过执行案例完成数据准备,生成案例数据准备规则,该规则记录案例号及提取数据信息,需要说明的是执行案例为积累的自动化测试案例库,存放在自动化测试系统中;

通过更新被测系统数据库或调用其关联系统,生成关联数据获取规则,该规则记录响应的sql语句或外部关联系统调用信息;

通过独立于被测系统的节后程序生成程序数据获取规则,该规则与被测系统完全不相关,并且该规则记录相应节后程序调用信息,并且可以逐步完善接口程序库。

需要说明的是,该接口程序是预先定义的,比如要建“随机数”的数据类别,而这种类别数据的获取方式,要采取接口程序的方式,就要成随机数的小程序,要预先编写好该小程序,放入到程序库中,建立数据类别时,只要和这个小程序关联就可以。

对应的,在测试完成后可以更新执行案例数据库和小程序数据库,即

生成执行案例库;

将测试完成的测试案例按照案例号与测试数据对应的映射关系,保存至所述执行案例库。

相应的,该方法还包括:

生成数据获取程序对应的程序库;

将编译的数据获取程序存储到所述程序库中。

在本实施例中,还提供了所述获取所述数据结构对应的数据类别,可以包括:

将所述数据结构按照结构类型进行分组,得到具有相同数据结构的数据结构组;

将每一个数据结构组中的数据结构按照业务角度进行划分,得到多个数据类别;

将每个数据类别所对应的数据存储在同一列中,生成所述每个数据类别的存储格式。

参见图2,为本发明实施例二提供的测试数据生成过程中的数据层结构图,也就是将数据分为了三层进行数据的逐层分析进而生成测试数据。

该三层结构数据模型自底向上分别为数据结构层、数据类别层和数据实例层。数据结构层及数据类别层存储特定业务数据的模型信息,数据实例层是根据模型信息从目标测试环境中完成测试数据准备后获得的实例数据,也就是测试数据。

首先要对待测试案例进行分析,获得数据结构,将数据结构信息放在数据结构层中。该数据结构层是对某一类的数据进行建模,例如在金融系统中,创建了一个“借记卡”的数据结构,它可能包含“卡号”,“密码”,“开卡人身份证号”等域。数据类别的生成一定要基于某一个数据结构,比如“正常借记卡”,“异常借记卡”数据类别都是基于“借记卡”数据结构,也就是说“正常借记卡”,“异常借记卡”两个数据类别都会包含上述三个域。

其中,数据类别层是对应测试数据的分类,将相同数据结构从业务角度细化成多个数据类别,每个数据类别所获得的数据具有相同的列,相当于对同一个测试介质进行不同类别的细化,所有数据获取方式的测试数据准备规则都是保存在数据类别层。

需要说明的是,在实际应用的数据是以数据表的形式构成的,而数据结构可以理解为该数据表有几列,每一列对应一个数据类别,然后根据测试数据准备规则生成测试数据,在待测试案例中通过该测试数据进行测试,实现某个系统的功能测试。

现在将以金融系统为应用场景,对本发明中的实施例进行举例说明,请参见附图3。

以金融系统测试中最常用的测试介质-借记卡为例,假设借记卡只有状态和金额两个描述限制,状态只有正常和挂失两种,金额的边界值只有0和10000两种,图3中列出了测试中常用的借记卡类别,覆盖借记卡的全量测试数据,这些类别均可以通过上述四种准备规则获取,而不超过这个范围,所有的类别都是通过边界值和等价类理论进行严格的划分。

类别1:正常借记卡(0<=余额<10000),可以通过数据抽取规则完成。类别中保存准备数据的sql语句,如select卡号,余额,状态from借记卡表where卡状态=’正常’and卡余额>=0and卡余额<10000。

类别2:正常借记卡(余额>10000),假设铺底数据中余额大于1万的数据很少,因此可以通过案例数据准备规则获得,借助借记卡的开卡案例生成数据,自动化案例a:开立余额大于1万的借记卡。类别2的准备规则里只需要保存[自动化案例a,{卡号,余额,状态}]即可。

类别3:挂失借记卡(0<=余额<10000),假设铺底数据中挂失借记卡的数据很少,可以通过案例数据准备规则,即建立挂失的自动化案例来获取,但也可以通过关联数据获取规则,即修改数据库中正常借记卡的状态来获取。这里通过关联数据获取规则来获取,保存规则为[正常借记卡(0<=余额<10000),update借记卡表set卡状态=‘挂失’where卡号=’正常借记卡(0<=余额<10000)’]。

类别4:挂失借记卡(余额>10000),可以通过前三种方式的组合来生成。

类别5:卡号异常借记卡,这种类别不存在于铺底数据中,因此需要特殊的生成方式,程序数据获取规则是通过接口程序库来生成数据,接口程序库中存在程序a:自动生成符合错误规范的特殊卡号。因此类别5的保存规则为[程序a,{卡号,余额,状态}]。

进而通过针对不同的数据类别采用不同的测试数据准备规则,获得了关于“借记卡”的所有测试数据。

在本发明实施例二中,获取了待测试案例中的数据结构,根据所述数据结构获得了对应的数据类别,由于所述数据类别与测试数据准备规则具有关联关系,即可以根据数据类别调用相应的测试数据准备规则,生成测试数据。由于数据获取方式全部保存在测试数据准备规则中,可以高效自动化地提取和校验数据。并且测试数据准备规则在后续的维护是可以进行相应的案例和程序及数据库的增加和更新,实现了测试数据的有效积累,可以同时为自动化和手工测试提供全量的测试数据,使测试数据的准备更加准确、高效和全面,在保证测试数据提供全面性的基础上,保证了测试的充分性。

实施例三

与本发明实施例一和实施例二所公开的测试数据生成方法相对应,本发明的实施例三还提供了一种测试数据生成装置,参见图4,该装置包括:

规则生成模块1,用于根据数据类别生成测试数据准备规则,其中,所述测试数据准备规则包括数据抽取规则、案例数据准备规则、关联数据获取规则和程序数据获取规则;

数据结构确定模块2,用于根据待测试案例确定待生成的测试数据的数据结构;

数据类别获取模块3,用于获取所述数据结构对应的数据类别;

规则确定模块4,用于在所述测试数据准备规则中确定与所述数据类别对应的所述测试数据准备规则;

数据生成模块5,用于根据所述数据类别对应的所述测试数据准备规则,从各个测试数据准备规则对应的源数据中生成测试数据。

相应的,所述规则生成模块包括:

第一规则生成单元,用于根据数据类别中的关键词在被测系统数据库中抽取测试数据,生成数据抽取规则;

第二规则生成单元,用于获取历史测试完成的执行案例,将所述执行案例的案例号与所述执行案例的测试数据记载为映射关系,生成案例数据准备规则;

第三规则生成单元,用于根据所述数据类别中的关联信息,将所述数据类别关联到对应的被测系统数据中,生成关联数据获取规则;

第四规则生成单元,用于根据所述数据类别创建数据获取程序,通过所述数据获取程序获取所述数据类别对应的测试数据,生成程序数据获取规则。

具体的,所述数据类别获取模块包括:

分组单元,用于将所述数据结构按照结构类型进行分组,得到具有相同数据结构的数据结构组;

划分单元,用于将每一个数据结构组中的数据结构按照业务角度进行划分,得到多个数据类别;

存储单元,用于将每个数据类别所对应的数据存储在同一列中,生成所述每个数据类别的存储格式。

对应的,所述第二规则生成单元还包括:

案例库生成子单元,用于生成执行案例库;

保存子单元,用于将测试完成的测试案例按照案例号与测试数据对应的映射关系,保存至所述执行案例库。

对应的,所述第四规则生成单元还包括:

程序库生成子单元,用于生成数据获取程序对应的程序库;

存储子单元,用于将编译的数据获取程序存储到所述程序库中。

在本发明的实施例三中,预设生成了测试数据准备规则,该测试数据准备规则除了涵盖现有技术中通用的数据抽取规则外,还包括了案例数据准备规则、关联数据获取规则和程序数据获取规则,这样测试数据获取方式全部保存在数据类别的测试数据准备规则中,可以高效自动化地提取和娇艳数据。在确定了数据类别后,根据不同的数据类别选取对应的测试数据准备规则,生成测试数据。可以同时为自动化和手工测试提供全量的测试数据,在保证测试数据提供全面性的基础上,保证测试的充分性。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1