一种数据生成方法及装置
技术领域
本申请属于计算机数据处理技术领域,尤其涉及一种数据生成方法及装置。
背景技术
计算机产品在研发过程中前通常编写测试代码进行功能测试,例如,根据已知产品的功能设计规格对产品进行测试,或者根据产品研发的内部工作过程进行持续集成测试等,以验证产品的每个功能是否符合要求。因此,良好健康的测试数据对产品的功能测试显得十分重要。
通常情况,现有技术中测试时使用的测试数据往往都是由作业人员提前构造好的。而在现有的很多产品研发的测试阶段,还存在同一份测试数据被多人或在多个功能模块使用,这样会造成数据的相互干扰问题,使得持续集成存在较大的不稳定风险,容易引起系统的持续集成任务执行失败。对于一些产品应用,尤其是较为复杂的重大产品研发,人工编写测试数据无疑会增加编写时间,从而增加测试成本。以某支付产品现有的系统举例,账务系统的功能模块需要一份账号数据,内部户系统的功能模块也需要一份账户数据,账务系统的账号数据是从内部户系统获取。当两个系统的持续集成同时在执行并使用到同一个账号时,由于两个系统的业务场景不同,会造成某一个系统的持续集成失败(由于测试数据被改动)。同时现有方式使用的测试数据也无法解决服务器上的持续集成和开发本地的用例回归的同时执行时的干扰问题。而且大量的测试数据预先或遇到持续集成失败时进行编写或修改,相同测试数据的反复使用、存放等,这些数据操作行为均缺少可靠有效的整体管理,导致容易积压大量的脏数据,使得持续集成在测试数据的使用、数据隔离上存在很多干扰,以至于持续集成稳定性不高。
现有技术中使用的预先构造好的测试数据在测试时常常出现数据干扰问题,导致系统在持续集成任务执行失败,降低了持续集成的稳定性。
发明内容
本申请目的在于提供一种数据生成方法及装置,可以以设定的数据关系的方式自动构造符合要求的不同的多份测试数据,可以解决测试过程中的数据相互干扰问题,达到系统在持续集成的快速、稳定运行的目的。
本申请提供的一种数据生成方法及装置是这样实现的:
一种数据生成方法,所述方法包括:
确定待生成数据中数据字段的生成规则;
基于设定的待生成数据之间的第一业务关联关系确定用于生成目标数据的第一数据单元信息;
基于所述第一数据单元信息和所述数据字段的生成规则生成目标数据。
一种数据生成装置,所述装置包括:
数据字段生成规则模块,用于存储预先设置确定的待生成数据中数据字段的生成规则信息;
数据单元模块,用于存储基于设定的待生成数据之间的第一业务关联关系确定用于生成目标数据的第一数据单元信息;
数据生成模块,用于基于所述数据字段生成规则和所述数据单元模块中存储设置的第一数据单元信息和数据字段的生成规则信息生成目标数据。
本申请提供的一种数据生成方法及装置,所述的数据生成方法可以基于预先定义的数据关系的方式自动、快速的构造符要求的全局性的唯一测试数据。这些构造生成的数据可以用于系统持续集成时的测试数据,保障数据服务的唯一性,大大降低数据之间尤其是在系统持续集成应用场景下测试数据的干扰问题,有效提高持续集成的稳定性。并且,本申请实施方法可以通过对数据关系规则的管理即可实现对生成数据的有效管理,可以减少脏数据的产生,便于数据维护,提高数据使用者的使用体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种数据生成方法一种实施例的方法流程示意图;
图2是本申请提供的一种数据生成方法另一种实施例的方法流程示意图;
图3是本申请提供的一种数据生成方法另一种实施例的方法流程示意图;
图4是本申请提供的一种数据生成方法另一种实施例的方法流程示意图;
图5是本申请提供的一种数据生成装置一种实施例的模块结构示意图;
图6是本申请提供的一种数据生成装置另一种实施例的模块结构示意图;
图7是本申请提供的一种数据生成装置另一种实施例的模块结构示意图;
图8是本申请提供的一种数据生成装置另一种实施例的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
下面结合附图对本申请所述的一种数据生成方法进行详细的说明。图1是本申请所述一种数据生成方法一种实施例的方法流程图。虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本申请所述的数据生成方法可以基于预先定义的数据关系的方式自动、快速的构造符要求的不同的多份数据。这些构造生成的数据可以用于系统持续集成时的测试数据,保障数据服务的唯一性,大大降低数据之间尤其是在系统持续集成应用场景下测试数据的干扰问题,有效提高持续集成的稳定性。并且,本申请实施方法可以通过对数据关系规则的管理即可实现对生成数据的有效管理,可以减少脏数据的产生,便于数据维护,提高数据使用者的使用体验。需要说明的是,本申请各个实施例提供的数据生成方法、装置等,可以应用于系统持续集成时使用的测试数据,但并不限于此应用场景。采用本申请所述方法生成的数据也可以作为用例使用的数据、采样样本数据、随机验证数据等等。下面本申请以系统持续集成使用的测试数据的应用场景为实施例对本申请方案进行说明,具体的如图1所示,本申请提供的数据生成方法的一种实施例中,所述方法可以包括:
S1:确定待生成数据中数据字段的生成规则。
在本实施例中,可以预先定义生成的数据中所包括的各个数据字段的生成规则,确定待生成数据中数据字段的生成规则信息。所述的生成规则可以根据测试数据的需求进行自定义的设置,包括数据字段的含义、每个字段的取值方式或取值范围。本申请中所述的待生成数据可以理解为使用者通过本申请实施方案需要生成的目标数据。在本申请实施例中,可以统一通过数据关系规则化的描述信息,自动生成独立的多份完整测试数据,以解决数据干扰问题,提升系统持续集成稳定性。
具体的例如本实施例用户账号测试数据的应用场景中,生成的测试数据可以以数据表的形式存在。基于不同的业务需求通常对测试中使用的数据表有一定的表格式和字段设置要求,本申请测试数据中的数据表格式和数据表中的每个字段的取值都可以通过预习定义设置好的规则描述出来。如整数类型int可以定义为取值范围为[0~9],账号可以定义为account_no,取值范围方式为100{random(10,20)}0156,枚举可以定义为code、时间可以定义为now()等,其中一些数据字段如code或now()可以自定义设置枚举内容或者通过参数传入(如调用系统时间或其他应用、服务器的结果数据)确定取值。本实施例系统持续集成使用的测试数据的应用场景中可以定义需要生成的两张数据表:用户账号数据表account、支付数据表api的字段如下表1和表2所示。
表1:account数据表生成规则描述信息
表名 |
Account |
字段 |
生成规则描述 |
Id |
Int[0-999] |
Account_no |
1088{random(10,15)}0156 |
Status |
Default{I,F,S} |
Create_time |
Now() |
Modify_time |
Now() |
表2:api数据表生成规则描述信息
表名 |
Api |
字段 |
生成规则描述 |
Id |
Int[0-999] |
Account_no |
1088{random(10,15)}0156 |
Api |
Icbc{random(9,4)} |
Create_time |
Now() |
Modify_time |
Now() |
所述的生成规则可以描述对应到的每张数据表,对数据表中的每个字段进行生成规则的定义。在一些实施例中,对于不同数据表中的相同数据字段通常可以采取不同的生成规则,取值也可以不相同。在本申请实施例的应用场景中,单个子系统持续集成需要的一份完整的测试数据往往包括多个数据表的信息数据,并且由于业务之间的相关性,数据表之间也是往往具有一定的关联关系。因此,在定义数据字段的生成规则时,可以采用不同数据表中相同类型的数据字段或相同名称的数据字段采用相同的数据字段生成规则,这样可以进一步保障生成数据的规则统一性,提高生成目标数据的实用性和稳定性,进而提高系统持续集成的稳定性。
一般的,为保障每次测试数据生成的唯一性,在确定数据字段的生成规则时通常设置某一个或者多个数据字段按照一定规则方式生成。例如,可以设置某个字段以设定的初始值按照设定步长顺序依次生成,或者在某个取值区间范围内随机生成等。具体的例如上表中的Id字段可以在实际取值设置时定义成在0至999之间取随机整数类型的值,当然,也可以设置为以0为初始取值,再下次生成该字段Id数据时取值加1,一直取值到999时,下次取值归零。具体实际的字段取值可以根据数据需求进行自定义的设置。在本申请提供的一个具体实施例中,所述数据字段的生成规则可以包括采用下述中的至少一种实施方式:
S101:至少一个被设置成关键字段的数据字段以设定的初始值为起始值按照设定步长生成相对应的数据;
或者,
S102:至少一个被设置成关键字段的数据字段在设定取值区间范围内随机生成数据。
上述所述数据字段的生成规则可以使用其中的一项实施方式设置所有的数据字段生成规则,其他的实施方式中也可以采用其中的任意一项作为指定某些字段的生成规则,包括不同的数据字段采用不同的生成规则的实施方式。本申请实施例中可以预先定义确定待生成数据中各个数据字段的生成规则。当然,所述数据字段的生成规则也可以包括除上述数据表之外的其他描述方式。在其他的可选实施方式中如可以预先定义可能使用到的1000个数据字段的生成规则,在实际根据应用场景随机生成一份测试用的目标数据时可以实际用到其中的200个数据字段,并不限定使用生成规则定义的全部数据字段。
S2:基于设定的待生成数据之间的第一业务关联关系确定用于生成目标数据的第一数据单元信息。
待生成数据之间往往具有业务上的关联关系。如上述用户账号测试数据的应用场景中,在一份测试数据中,account为测试时使用的用户账号信息的数据表,api为相同账号的支付数据表。所述的第一业务关联关系可以根据业务场景的需求进行自定义的设置,实现方式可以将Account_no设置为数据表account和数据表api的关联字段,可以表示基于的相同账号将账号数据和支付数据进行关联。在确定了待生成数据中各个数据表涉及到的所有数据字段的生成规则后,可以将具有设定的第一业务关联关系的一组数据表的关系信息集合在一个基本数据单元进行定义描述,生成第一数据单元信息。在具体的实现方式上,所述第一数据单元信息可以通过应用编程设计语言描述实现。如本申请实施例中,在定义了数据表account和数据表api以及相应数据表中数据字段的生成规则后,可以定义accountUnit数据单元,所述accountUnit数据单元可以描述具有关联关系的组数据表的集合,可以用于生成具有一定关联关系(如本实施例应用场景中定义的第一关联关系)的数据,如生成账号数据表account和支付数据表api。所述账号数据表account和支付数据表api可以通过在所述第一数据单元信息中设置的关联字段进行关联。下表3为本申请实施例中以数据单元的形式表示所述第一数据单元信息的描述信息。
表3:第一数据单元描述信息
数据单元名 |
accountUnit |
|
表名 |
规则 |
生成数据条数 |
Account |
account.account_no=api.account_no |
1 |
Api |
account.account_no=api.account_no |
1 |
关键字段 |
Account.account_no,api.api |
|
上述数据单元accountUnit集合了具有第一业务关联关系的数据表account、api,并且还可以定义数据表之间的关联字段,如上述数据单元中设置的通过数据表名引起数据字段方式的关键字段Account.account_no、api.api。上述数据单元accountUnit中描述的生成数据条数可以表示在实际生成目标数据时需要产生的数据记录的条数,如表名为Account的生成数据条数为1,可以表示利用Account数据表中的生成规则生成一条account数据表。
本申请实施例中,可以在所述第一数据单元信息中为数据表设置用于与其他数据表或其他数据单元信息产生关联的关联字段,如上述账号表account和支付表api中的Account_no为两张表的关联字段。本申请的一种实施例中,可以设置不同数据表设置的关联字段中相同的关联字段为相同的取值。这样可以基于关联字段建立数据表之间有序的关联关系,便于测试业务中具有业务关系的多个数据表的生成和生成数据的管理。因此,本申请的一种实施例中,所述第一数据单元信息被设置成:
将所述第一数据单元信息中设置的待生成数据的相同关联字段设置为相同的取值。
如上述待生成数据账号数据表account和支付数据表api中的Account_no、api为两张表的关联字段,本实施例方案在生成最终测试数时需要将上述两张数据表中的关联字段Account_no和api的取值分别设置成相同的取值。具体的可以采用编程设计语言的相关字段控制设置成相同关联字段的取值为相同,例如若先生成账号数据表account,则account数据表中的关联字段Account_no会先于api数据表中的Account_no生成。在account数据表中的Account_no通过设置的数据字段生成规则的描述信息随机生成当前的一份测试数据data_test中的账号信息,那么在当前测试数据data_test的api数据表中的关联字段Account_no可以被设置成与account数据表中的Account_no的取值相同,生成api数据表时api数据表中的account_no与account数据表中的account_no取值相同。这样,在同一份测试数据中将同一个用户账号的不同数据表进行关联起来,可以保障通过数据关系规则的描述生产需要的测试数据。同时基于关联字段将数据表进行关联还可以便于数据关联的管理和维护。
本申请实施例可以以数据单元的形式确定用于描述具有关联关系的一组数据表的第一数据单元信息,所述的数据单元可以基于描述的数据表之间的第一业务关联关系生成相应的数据。
S3:基于所述第一数据单元信息和所述数据字段的生成规则生成目标数据。
如前所述,在本申请实施例方案中,可以预先定义待生成数据中每个数据字段的生成规则,以及用于描述具有关联关系的一组数据表集合的第一数据单元信息。这样各个系统在持续集成每次需要使用测试数据时,可以基于预先定义设置数据表或者数据单元之间关系规则的方式自动、快速的生成符合要求的测试数据。本申请提供的数据生成方法,通过对数据生成规则、数据单元要素的描述(如本实施例中定义的数据表中数据字段的生成规则、第一数据单元信息),达到数据即用即生的状态,并且可以保障每次生成的数据的唯一性,满足系统持续集成的测试数据要,解决由于数据干扰问题引起的持续集成任务执行失败,大大提高了系统持续集成的稳定性。
具体的实现方式上,可以通过程序实现自动化生成想要的数据,包括但不限于如js、c#之类的应用编程设计语言。并且在本申请实施方案中,测试数据编程设计人员可以实现仅需要关心对数据关系规则的管理即可实现对生成数据的统一、高效管理,可以减少脏数据的产生,便于数据维护,提高数据使用者的使用体验。
上述所述方法可以通过数据单元自动构建符合要求的多份测试数据。在其他的一些实施应用场景中,单个数据单元可能无法满足测试数据需求。为了描述一份完整的可用的数据,还可以将需要生成的数据描述成多个数据单元,甚至是多份相应的数据单元组成。因此,在一些实际使用数据的应用场景中,本申请实施方案还可以设置数据单元与数据单元自己的嵌套关系。具体的,本申请的另一种实施例中,所述数据生成方法还可以包括:
S4:根据设定的第一数据单元信息之间的单元嵌套规则确定用于生成目标数据的第二数据单元信息;
相应的,基于所述第一数据单元信息和所述数据字段的生成规则生成目标数据包括基于所述第一数据单元信息、第二数据单元信息和所述数据字段的生成规则生成目标数据。
图2是本申请提供的一种数据生成方法另一种实施例的方法流程示意图。基于数据之间的业务关系,一般的,数据单元和数据单元之间会存在一定的关联关系,例如生成的数据表与数据表之间的主键/外键关联。本申请实施例所述的单元嵌套规则也可以包括一个数据单元的数据生成需要依赖另一个数据单元的数据的实施场景。基于数据单元信息之间的数据关系描述可以确定同样可以生成需要的目标数据的第二数据单元信息。
具体的例如本实施例用户账号测试数据的应用场景中,需要生成的测试数据除了账号数据表account和支付数据表api之外,还需要生成每个测试使用的用户账号的业务数据表bill。所述的业务数据表bill可以用来记录相关账号的多条业务数据,因此,可以设置业务数据表bill和账号数据表account之间的数据关系。在本实施例中可以设置一个billUnit数据单元,用于描述生成业务数据表bill的第二数据单元信息。所述的billUnit数据单元billUnit单元依赖于accountUnit单元,在生成accountUnit单元数据后,通过返回的account_no和api字段的值确定了业务数据表bill中实际的产生数据。下表4为本实施例应用场景中设置的嵌套数据单元billUnit描述信息的示意表。
表4:第二数据单元描述信息
本申请实施例中所述的第二数据单元信息可以是用于描述具有关联关系的一组第一数据单元信息的集合,以数据关系化描述生成目标数据的数据单元之间的规则信息。在实现方式上如前所述的数据单元,可以程序化设置嵌套数据单元billUnit。所述嵌套数据单元billUnit中设定的规则描述了生成业务数据表时需要依赖accountUnit数据单元。如果accountUnit数据单元还没有生成,则billUnit数据单元不能产生。当然,在所述第二数据单元信息中也可以设置通过关联字段将数据单元之间或者数据单元与数据表之间进行关联,如上表4中设置的关键字段bill.id、bill.amount等。同样,可以通过设置三张数据表account、api、bill中的关联字段取值相同实现三张数据表的数据对应关系。因此,本申请加入了描述数据单元之间嵌套规则的数据关系化规则的第二数据单元信息的实施例中,所述第二数据单元信息可以被设置成:
将所述第二数据单元信息中设置的待生成数据的相同关联字段设置为相同的取值。
需要说明的,本申请中所述的关键字段可以为设置的不同数据表中的关联字段,也可以包括待生成数据中设置的关键字段与设置的不同数据表的关联字段可以全部或者部分相同。当然,所述关键字段和关联字段可以设置为全部不相同。
本申请实施例通过预先定义设置需要生成数据的数据字段的生成规则、描述具有关联关系的数据单元和数据单元之间嵌套关系的嵌套数据单元这三个要素的描述,通过程序化实现即可自动化的生成想要的目标数据。尤其是在系统持续集成时,可以通过本申请实施例方法快速生成符合要求的随机测试数据,保障数据服务唯一性的同时达到数据即用即生的状态,可以有效解决现有技术中各个系统在每次持续集成时无法做到测试数据的自动生成、预先构造的相同的测试数据在持续集成中被多个不同的任务使用导致持续集成任务执行失败的问题,提高系统持续集成的稳定性。
需要说明的是,本申请实施例提供的技术方案在系统持续集成的应用场景下每次使用数据时,可以通过执行第一数据单元信息或第二数据单元信息确定的数据关系化规则描述信息快速生成符合要求的测试数据。但申请实施方案并不限于测试数据的生成应用场景,在其他的数据需求应用场景,如产生样本数据、验证数据等,均可以通过本申请中实施方案中的数据关系化规则进行管理即可生成满足规则设计需要的数据。
如上表1、2所示,本申请实施方案可以通过数据字段的生成规则设置生成随机的测试数据,保障系统持续集成时每次执行任务使用的数据可以是唯一的,以解决测试数据之间的干扰问题。本申请提供的技术方案在具体的实现过程中,还可以将时间戳、线程等作为生成数据实际值的计算因子,以实现进一步的保障每次生成数据的唯一性。因此,本申请所述数据生成方法的另一种实施例中,所述方法还可以包括:
S5:以时间戳、线程标识中的至少一项信息数据作为数据字段取值的计算因子,
相应的,所述生成目标数据包括:根据所述计算因子确定相应数据字段的实际取值,生成目标数据。
图3是本申请提供的一种数据生成方法另一种实施例的方法流程示意图。具体的实施过程中,所述的时间戳可以以当前系统时间为取值对象,所述的线程标识可以以指定应用的线程的ID为取值对象。在计算数据字段最终的实际取值时可以加入这些计算因子,例如将获取的计算因子信息处理后最为系数计算数据字段的实际取值,或者也可以将所述计算因子之间添加至指定的数据字段中确定实际取值。具体的可以根据数据处理需求进行自定义的设置。
本申请采用基于数据关系规则的方式生成数据的实施方案,还可以实现解决数据管理的问题。例如数据的生成、数据隔离、数据生命周期管理等。这样在大量测试数据需求的应用场景中可以实现对测试数据的整体管理,减少脏数据的产生,提高整个测试任务运行的稳定性。图4是本申请提供的一种数据生成方法另一种实施例的方法流程示意图,具体的,如图4所示,本申请所述方法的另一种实施例中,所述方法还可以包括:
S6:设置生成的所述目标数据的有效生命周期,并在达到所述有效生命周期时执行包括下述中的任意一项操作:
销毁达到所述有效生命周期的目标数据;
将所述达到有效生命周期的目标数据按照设定方式隔离至指定位置。
具体的实施过程中,可以设置生成的目标数据使用完一次后就自动销毁,或者将其进行隔离,以减少数据长期使用导致产生大量脏数据的问题。本实施例申请方案可以进一步实现生成数据的整体、规范、高效管理,节约数据维护成本。
本申请提供的数据生成方法,可以通过数据生成规则、数据单元这个两个或者以及嵌套数据单元这三个要求的描述确定需要生成的数据之间对应关系,可以自动生成符合要求的独立的数据,可以有效解决测试过程中的数据干扰问题,达到持续集成快速稳定运行的目的。并且,设计人员可以实现仅需要关心对数据关系规则的管理即可实现对生成数据的统一、高效管理,可以减少脏数据的产生,便于数据维护,提高数据使用者的使用体验。
基于本申请所述的数据生成方法,本申请还提供一种数据生成装置。所述数据生成装置可以用于系统持续集成时自动生成满足需求的测试数据,并且生成的测试数据可以有效解决因长期或多次使用相同的预选设置的测试数据而可能存在的数据干扰、大量脏数据产生的问题。当然,本申请提供的数据生成装置生成的数据不限于作为应用、系统等开发测试时的测试数据使用,利用申请所述数据生成装置同样可以达到以设定的数据关系的方式自动、快速构造符合要求的不同的多份数据。具体的,图5是本申请提供的一种数据生成装置一种实施例的模块结构示意图,如图5所示,所述装置可以包括:
数据字段生成规则模块101,可以用于存储预先设置确定的待生成数据中数据字段的生成规则信息;
数据单元模块102,可以用于存储基于设定的待生成数据之间的第一业务关联关系确定用于生成目标数据的第一数据单元信息;
数据生成模块103,可以用于基于所述数据字段生成规则101和所述数据单元模块102中存储设置的第一数据单元信息和数据字段的生成规则信息生成目标数据。
进一步的,在一些例如对应用进行系统持续集成等的应用场景中,需要使用的测试数据往往是多样、复杂的,基于测试对象业务的关系,往往需要多个数据单元结合以及相互作用才能生成满足测试需要的数据。这样,数据单元和数据单元之间往往存在着如并列、嵌套的关系。图6是本申请提供的一种数据生成装置另一种实施例的模块结构示意图,如图6所示,所述装置还可以包括:
数据单元嵌套模块104,可以用于存储根据设定的第一数据单元信息之间的单元嵌套规则确定用于生成目标数据的第二数据单元信息;
相应的,所述数据生成模块103基于所述数据字段生成规则101和所述数据单元模块102中存储设置的第一数据单元信息和数据字段的生成规则信息生成目标数据包括:所述数据生成模块103基于所述数据字段生成规则101、数据单元模块102、数据单元嵌套模块104中存储设置的第一数据单元信息、第二数据单元信息、数据字段的生成规则信息生成目标数据。
在本申请实施例方案中,可以预先定义待生成数据中每个数据字段的生成规则,以及用于描述具有关联关系的一组数据表集合的第一数据单元信息。这样各个系统在持续集成每次需要使用测试数据时,可以基于预先定义设置数据表或者数据单元之间关系规则的方式自动、快速的生成符合要求的测试数据。本申请提供的数据生成装置,通过对数据生成规则、数据单元要素的描述,可以达到数据即用即生的效果,并且可以保障每次生成的数据的唯一性,满足系统持续集成的测试数据要,解决由于数据干扰问题引起的持续集成任务执行失败,大大提高了系统持续集成的稳定性。
上述所述数据生成装置的实施方式中,数据单元模块102存储的具有第一关联关系数据表的规则信息或者数据单元嵌套模块104中存储的具有第二关联关系的数据单元模块之间的规则信息或者数据单元模块与数据表之间的规则信息可以通过设置关联字段的方式实现数据关系。本申请的一种实施例中,在生成一份完整独立的数时可以将需要生成的数据表中的关联字段设置为相同的取值,如上述系统持续集成使用的测试数据的应用场景中可以以用户账户“account_no”为关联字段将所有需要生成的数据表进行关联。在最终生成多份数据表时,每份数据表中的关联字段“account_no”可以设置为取值相同。因此,本申请所述数据生成装置的另一种实施例中,所述数据单元模块102中存储的第一数据单元信息被设置成:
将所述第一数据单元信息中设置的待生成数据的相同关联字段设置为相同的取值。
当然,如果所述装置还包括了不同数据单元模块之间的数据单元嵌套模块,相应的,本申请所述装置的另一种实施例中,所述数据单元嵌套模块104中存储的第二数据单元信息被设置成:
将所述第二数据单元信息中设置的待生成数据的相同关联字段设置为相同的取值。
所述的数据字段的生成规则具体的可以根据实际生成的数据需求进行自定义的设置。本申请所述装置的一种实施例提供了一种数据生成规则信息的实施方式。具体的,本申请所述装置的另一种实施例中,所述数据字段生成规则模块中存储的数据字段的生成规则可以包括采用下述中的至少一种实施方式:
至少一个被设置成关键字段的数据字段以设定的初始值为起始值按照设定步长生成相对应的数据;
至少一个被设置成关键字段的数据字段在设定取值区间范围内随机生成数据。
需要说明的,本申请中所述的关键字段可以为设置的不同数据表中的关联字段,也可以包括待生成数据中设置的关键字段与设置的不同数据表的关联字段可以全部或者部分相同。当然,所述关键字段和关联字段可以设置为全部不相同。
图7是本申请提供的一种数据生成装置另一种实施例的模块结构示意图。如图7所示,在具体的实施过程中,还可以根据时间戳、线程等信息作为最终生成数据提取值的计算因子,可以进一步保障每次生成数据的不同,进一步提供数据尤其是作为系统持续集成时使用的测试数据唯一性,提供系统持续集成的稳定性。具体的,本申请提供的一种数据生成装置的另一种实施例中,所述装置还可以包括:
计算因子提取模块105,可以用于以时间戳、线程标识中的至少一项信息数据作为数据字段取值的计算因子;
相应的,所述数据生成模块103生成目标数据可以包括:根据所述计算因子确定相应数据字段的实际取值,生成目标数据。
体的实施过程中,所述的时间戳可以以当前系统时间为取值对象,所述的线程标识可以以指定应用的线程的ID为取值对象。在计算数据字段最终的实际取值时可以加入这些计算因子,例如将获取的计算因子信息处理后最为系数计算数据字段的实际取值,或者也可以将所述计算因子之间添加至指定的数据字段中确定实际取值。具体的可以根据数据处理需求进行自定义的设置。
图8是本申请提供的一种数据生成装置另一种实施例的模块结构示意图。如图8所示,所述装置还可以包括:
数据管理模块106,可以用于设置生成的所述目标数据的有效生命周期,并在达到所述有效生命周期时执行包括下述中的任意一项操作:
销毁达到所述有效生命周期的目标数据;
将所述达到有效生命周期的目标数据按照设定方式隔离至指定位置。
本实施例中采用基于数据关系规则的方式生成数据的实施方案,还可以实现解决数据管理的问题。例如数据的生成、数据隔离、数据生命周期管理等。这样在大量测试数据需求的应用场景中可以实现对测试数据的整体管理,减少脏数据的产生,提高整个测试任务运行的稳定性。本实施例申请方案可以实现生成数据的整体、规范、高效、便捷的管理,节约数据维护成本。
本申请实施例提供的数据生成装置可以基于预先定义的数据关系的方式自动、快速的构造符要求的不同的多份数据。这些构造生成的数据可以用于系统持续集成时的测试数据,保障数据服务的唯一性,大大降低数据之间尤其是在系统持续集成应用场景下测试数据的干扰问题,有效提高持续集成的稳定性。并且,本申请实施方法可以通过对数据关系规则的管理即可实现对生成数据的有效管理,可以减少脏数据的产生,便于数据维护,提高数据使用者的使用体验。
本申请上述实施例所述的数据生成方法及装置,可以通过包括但不限于计算机应用编程设计语言如js、c++,或者数据库语言、页面设计语言等在内计算机可读程序,结合必要的硬件(如存储器)以及逻辑处理单元(如CPU)的方式实现。
尽管本申请内容中提到数据字段定义、数据单元、数据表有关的数据处理,以及通过关联字段进行多个数据表关联、生成数据隔离、存储,以及js、c++编程设计语言等的数据定义、信息交互、存储、编程设计的描述,但是,本申请并不局限于必须是完全标准、设计语言规则或者所提及的方式的数据交互、处理的情况。本申请中各个实施例所涉及的上述描述仅是本申请中的一些实施例中的应用,在某些标准、方法、设计语言的基础上略加修改后的处理方法也可以实行上述本申请各实施例的方案。当然,在符合本申请上述各实施例的中所述的处理方法步骤的其他无创造性的变形,仍然可以实现相同的申请,在此不再赘述。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、单元、模块、或装置可以以可读程序嵌入控制器方式实现,所述控制器按具体要求实现。例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、AtmelAT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端仪表设备、服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、手持设备或便携式设备、基于微处理器的系统、可编程的电子设备、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。