数据的生成方法、装置、电子设备和存储介质
文献发布时间:2024-05-31 01:29:11
技术领域
本申请属于数据处理技术领域,尤其涉及一种数据的生成方法、装置、电子设备、存储介质和计算机程序产品。
背景技术
在进行系统功能和性能测试时,需要大量有效的测试数据,才能保证测试结果的准确性。
在现有技术中,往往通过以下几种方式生成测试数据:
1)直接从生产环境导出数据到测试环境,审批周期较长,且为了防止敏感数据泄露,导出数据量有限。
2)人工在数据库中插入或者直接修改已有数据来生成测试数据,测试数据生成效率慢,数据量较小,无法满足测试需求。
3)人工在测试环境通过编写存储过程脚本,即直接往数据库中插入数据,需要花费较长时间编写脚本,且每一种数据库的语法不一致,需要针对不同种类的数据库语法进行编写,数据的生成效率不高。
因此,现有技术存在无法快速生成大量有效的测试数据的问题。
发明内容
本申请实施例提供一种数据的生成的方法、装置、电子设备、存储介质和计算机程序产品,解决了现有技术无法快速生成大量有效的测试数据进行测试的问题。
第一方面,本申请实施例提供了一种数据的生成方法,包括:
响应于用户输入的数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息;
根据多个表标识和字段引用关系,确定多个表的排列顺序;
根据排列顺序,确定待填写的目标表;
根据字段引用关系,确定目标表中每个字段的字段数据;
将字段数据填入目标表。
在一些可能的实现方式中,数据生成请求还包括每个表中待填写的分组的数量阈值;根据字段引用关系,确定目标表中每个字段的字段数据,包括:
根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,其中,N为小于或等于目标表的数量阈值的正整数。
在一些可能的实现方式中,根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,包括:
根据字段引用关系,确定目标表第N个分组中每个字段的字段类型;
根据字段类型,确定目标表第N个分组中每个字段的字段数据。
在一些可能的实现方式中,字段类型包括基本类型和被引用类型;在字段类型为基本类型或被引用类型的情况下,数据生成请求还包括字段的埋数函数名的信息;根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
在目标表第N个分组中的第一字段属于基本类型或被引用类型的情况下,在预设的函数名与函数实体的对应关系中,获取第一字段的埋数函数名对应的目标函数实体;
运行目标函数实体,得到函数返回结果;
将函数返回结果作为第一字段的字段数据。
在一些可能的实现方式中,在第一字段属于被引用类型的情况下,方法还包括:
将第一字段的字段数据,存储至数据缓存区。
在一些可能的实现方式中,字段类型包括引用类型;根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
在目标表第N个分组中的第一字段属于引用类型的情况下,在数据缓存区中,获取目标字段数据,其中,目标字段数据为第一字段引用的第二字段的字段数据;
将目标字段数据作为第一字段的字段数据。
在一些可能的实现方式中,在响应于数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息之前,方法还包括:
响应于任务创建请求,显示第一页面;
接收用户在第一页面中的第一输入,第一输入包括数据生成请求的信息。
第二方面,本申请实施例还提供了一种数据的生成装置,包括:
获取模块,用于响应于用户输入的数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息;
确定模块,用于根据多个表标识和字段引用关系,确定多个表的排列顺序;
确定模块,还用于根据排列顺序,确定待填写的目标表;
确定模块,还用于根据字段引用关系,确定目标表中每个字段的字段数据;
填写模块,用于将字段数据填入目标表。
在一些可能的实现中,数据生成请求还包括每个表中待填写的分组的数量阈值;确定模块还用于根据字段引用关系,确定目标表中每个字段的字段数据,包括:
确定单元,用于根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,其中,N为小于或等于目标表的数量阈值的正整数。
在一些可能的实现中,确定模块还用于根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,包括:
确定单元,用于根据字段引用关系,确定目标表第N个分组中每个字段的字段类型;
确定单元,还用于根据字段类型,确定目标表第N个分组中每个字段的字段数据。
在一些可能的实现中,字段类型包括基本类型和被引用类型;在字段类型为基本类型或被引用类型的情况下,数据生成请求还包括字段的埋数函数名的信息;确定模块还用于根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
获取单元,用于在目标表第N个分组中的第一字段属于基本类型或被引用类型的情况下,在预设的函数名与函数实体的对应关系中,获取第一字段的埋数函数名对应的目标函数实体;
运行单元,还用于运行目标函数实体,得到函数返回结果;
确定单元,用于将函数返回结果作为第一字段的字段数据。
在一些可能的实现中,在第一字段属于被引用类型的情况下,该装置还包括存储模块:
存储模块,用于将第一字段的字段数据,存储至数据缓存区。
在一些可能的实现中,字段类型包括引用类型;确定模块还用于根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
获取单元,用于在目标表第N个分组中的第一字段属于引用类型的情况下,在数据缓存区中,获取目标字段数据,其中,目标字段数据为第一字段引用的第二字段的字段数据;
确定单元,用于将目标字段数据作为第一字段的字段数据。
在一些可能的实现中,在获取模块用于响应于数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息之前,该装置还包括显示模块、接收模块:
显示模块,用于响应于任务创建请求,显示第一页面;
接收模块,用于接收用户在第一页面中的第一输入,第一输入包括数据生成请求的信息。
第三方面,本申请实施例还提供了一种电子设备,该电子设备包括处理器以及存储有计算机程序指令的存储器;处理器执行计算机程序指令时实现第一方面,或第一方面中的任一可能实现方式中的数据的生成方法。
第四方面,本申请实施例还提供了一种计算机存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现第一方面,或第一方面中的任一可能实现方式中的数据的生成方法。
第五方面,本申请实施例提供了一种计算机程序产品,计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行第一方面,或第一方面中的任一可能实现方式中的数据的生成方法。
本申请实施例的数据的生成方法、装置、电子设备、存储介质和计算机程序产品,通过响应于用户输入的数据生成请求,可以获取该数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息,然后根据多个表标识和不同表之间的字段引用关系,可以确定多个表的排列顺序,并根据多个表的排列顺序,确定待填写的目标表,接着根据不同表之间的字段引用关系,可以确定该目标表中每个字段的字段数据,并将确定的字段数据填入目标表中。通过用户自定义的不同表之间的字段引用关系可以对多个表进行排序,得到待填写的表顺序,可以防止填数任务失败或阻塞,可以支持多个表之间多字段数据关联,可以快速生成大量有效的测试数据。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一个数据的生成方法流程示意图;
图2是本申请实施例提供的另一个数据的生成方法流程示意图;
图3是本申请实施例提供的又一个数据的生成方法流程示意图;
图4是本申请实施例提供的再一个数据的生成方法流程示意图;
图5是本申请实施例提供的又一个数据的生成方法流程示意图;
图6是本申请实施例提供的一个数据的生成装置示意图;
图7是本申请实施例提供的一个数据的生成设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
如背景技术所述,在进行系统功能和性能测试时,需要大量有效的测试数据,才能保证测试结果的准确性。
在现有技术中,往往通过以下几种方式生成测试数据:
1)直接从生产环境导出数据到测试环境,审批周期较长,且为了防止敏感数据泄露,导出数据量有限。
2)人工在数据库中插入或者直接修改已有数据来生成测试数据,测试数据生成效率慢,数据量较小,无法满足测试需求。
3)人工在测试环境通过编写存储过程脚本,即直接往数据库中插入数据,需要花费较长时间编写脚本,且每一种数据库的语法不一致,需要针对不同种类的数据库语法进行编写,数据的生成效率不高。
因此,现有技术存在无法快速生成大量有效的测试数据的问题。
基于此,本申请实施例提供了一种数据的生成方法、装置、电子设备、存储介质和是计算机程序产品,能够解决现有技术无法快速生成大量有效的测试数据的问题。
下面结合附图对本申请实施例提供的数据的生成方法进行详细阐述。
图1是本申请实施例提供的一种数据的生成方法流程示意图,如图1所示,该方法可以包括步骤S110~S150。
S110,响应于用户输入的数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息。
数据生成请求,指的是用户在选择了待填写的多个表的表标识、自定义了不同表之间的字段引用关系之后生成的请求。
在一个示例中,该数据生成请求中包括的用户设置的信息可以为:多个表标识的信息、不同表之间的字段引用关系的信息、每个表中待填写的分组的数量阈值、字段的埋数函数名的信息等。
具体地,步骤S110可以理解为,在接收到用户输入的数据生成请求的情况下,响应于用户输入的数据生成请求,可以获取该数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息。
在一些实施例中,如图2所示,在步骤S110响应于数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息之前,该方法还包括步骤S160:
S160,响应于任务创建请求,显示第一页面;接收用户在第一页面中的第一输入,第一输入包括数据生成请求的信息。
任务创建请求,指的是创建一个新任务的请求指令。在本申请实施例中,生成数据时创建的是任务,任务可以保存、重启、修改、停止,可以实现一次配置,随时可用,使数据的生成更加方便,灵活性更高。
第一页面,指的是用户可以设置信息的页面,该页面可以称为第一页面。在第一页面中,用户可以设置待填写的多个表的表标识、不同表之间的字段引用关系、每个表中待填写的分组的数量阈值、字段的埋数函数名的信息等信息。
例如,如图3所示,第一页面中可以包括场景信息设置区、表信息设置区、表字段展示区、不同表之间的字段引用关系设置区和函数设置区。其中,设置区是需要用户自定义信息的区域,展示区是只供用户查阅不能更改的区域。
1)场景信息设置区:用户在该区域中,可以自定义场景名称,即任务名称,以便于下次生成数据时直接重启该任务即可;该区域中还可以选择用户所用的物理子系统,还可以添加备注等信息。设置完上述信息后,用户可以点击“添加表”,从而可以进入表信息设置区。
2)表信息设置区:用户可以在多个表标识库中选择待填写的表的表标识,例如用户选择了三张待填写数据的表,包括表标识_1、表标识_2和表标识_3。接着还需要在该区域中设置具体的表信息,例如可以设置数据库表格式、造数数量、任务ID等信息,其中,造数数量指的是待填写的表中待填写的分组数量。
3)表字段展示区:如图3所示,在表3中包括7个字段,例如,用户选择了表标识_3,就会在表字段展示区显示表标识_3中的字段的字段名和数据类型。
4)字段引用关系设置区:用户在表字段展示区可以知道每个字段的字段名和数据类型,因此可以依次设置每个字段中的字段数据的生成规则,该生成规则可以是在字段引用关系设置区设置不同表之间的字段引用关系。例如,如图3所示,表标识_3中的“字段_1”对应的字段引用关系设置区中,可以设置为“表一、字段_2、一对一”,指的是表标识_3中的字段_1可以引用表一中字段_2的字段数据,“一对一”指的是表标识_1中字段_2的字段数据在表3中只被引用一次。其中,关系也可以选择“一对多”,指的是表标识_1中字段_2的字段数据在表标识_3中可以被引用多次,灵活性更高,更多样化。
5)函数设置区:在设置每个字段中的字段数据的生成规则时,除了可以在字段引用关系设置区设置不同表之间的字段引用关系外,还可以通过在函数设置区中以下拉列表的方式在丰富的函数库选择字段的埋数函数名的方式来生成数据。例如,如图3所示,用户可以在字段_1对应的函数设置区中,选择函数名为“生成指定长度的数据”,数据内容为18bit位。其中,函数库中可以包括各种预设的数据生成函数的函数名。例如,函数库中可以包括“随机生成中文姓名”、“使用固定值”、“随机生成邮箱地址”、“根据给定值及给定比例生成数据”等函数名。
用户在图3所示的第一页面中可以自定义信息,通过可视化界面即可设置任务场景名称、选择待填写的多个表的表标识、根据数据生成数量需求设置每个表中待填写的分组的数量阈值、自定义不同表之间的字段引用关系、字段的埋数函数名等信息,能够满足用户需求,系统操作简单,用户使用学习成本低。
具体地,步骤S160可以理解为,在接收到用户输入的任务创建请求的情况下,响应于该任务创建请求,向用户显示第一页面,然后用户可以在第一页面中自定义任务场景名称、待填写的多个表、每个表中待填写的分组的数量阈值、不同表之间的字段引用关系、字段的埋数函数名等数据生成请求的信息,然后可以接收用户在第一页面中的数据生成请求的信息。
S120,根据多个表标识和字段引用关系,确定多个表的排列顺序。
多个表的排列顺序,指的是多个表的填写顺序。在一个示例中,用户输入的表标识有3个,分别为表A、B、C,那么根据多个表标识和字段引用关系,例如,表A引用了表B中的字段,表B引用了表C中的字段,则可以确定多个表的填写顺序为表C、B、A,确定填写顺序可以防止填数任务失败或阻塞。
需要说明的是,不同表之间的字段引用关系,指的是单向引用关系,例如,表A是用户表,表B是订单表,先有用户再有用户对应的订单,因此可以先生成表A,再生成表B,即字段引用关系为:表B中的字段引用表A中的字段。单向引用关系,指的是表B中的字段引用了表A中的字段,则表A中的字段不能再引用表B中的字段。
具体地,步骤S120可以理解为,根据多个表标识和不同表之间的字段引用关系,可以确定多个表的填写顺序,可以防止填数任务失败或阻塞。
S130,根据排列顺序,确定待填写的目标表。
待填写的目标表,指的是当前需要填写的多个表中的一张表,该表可以称为目标表。
具体地,步骤S130可以理解为,根据填写顺序,可以确定当前要填写的是哪张表。例如,多个表的填写顺序为表C、B、A,因此第一次需要填写的目标表是表C,那么表C填写完成后可以继续根据填写顺序,可以确定接下来要填写的目标表是表B,表B填写完成后可以继续根据填写顺序确定接下来要填写的目标表是表A。
S140,根据字段引用关系,确定目标表中每个字段的字段数据。
目标表,每张目标表中都有提前定义好的多个字段,在本申请实施例中可以生成每个字段名对应的字段数据,该字段数据可以用来作为测试数据。
具体地,步骤S140可以理解为,根据字段引用关系,可以确定目标表中每个字段对应的字段数据。
在一些实施例中,数据生成请求还包括每个表中待填写的分组的数量阈值;步骤S140根据字段引用关系,确定目标表中每个字段的字段数据,包括:
根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,其中,N为小于或等于目标表的数量阈值的正整数。
其中,待填写的目标表可以包括多个分组,用户在数据生成请求中可以请求每张表中待填写的分组的数量有多少,即待填写的分组的数量阈值。例如,表一所示,目标表中共有7个字段cst_id、cst_nm、crdt_tp、crdt_no、insid、sex、email,每个字段可以包括多个字段数据,在填表时,可以一行一行的填写,每一行可以称为一个分组。例如,用户设置的目标表待填写的分组的数量阈值为1000,则在填写时需要填写1000行数据。
表一
具体地,确定目标表中每个字段的字段数据时可以以组为单位分别确定目标表中每个分组中每个字段的字段数据:根据字段引用关系,可以分别确定目标表第1个分组、第2个分组、第3个分组,...,第数量阈值个分组中每个字段的字段数据。在本申请实施例中,用户在填写表标识、字段引用关系的同时,还需要填写每个表中待填写的分组的数量阈值,因此可以根据用户需求,快速生成用户需要的大量测试数据,由于数据生成请求中包括的内容都是用户可以自定义的,因此灵活性更高。
需要说明的是,由于数据库表中,行和列的概念是相对的,也就是说,可以一行一行地填写,也可以一列一列地填写,都可以称为是一个分组一个分组地填写。每个分组中的字段数量和字段名称都是一样的,只不过每个字段的字段数据会有不同。
在一个示例中,在填写每个分组的字段的字段数据时,可以采用多个CPU同时填写多个分组,即通过多线程生成数据,提高了埋数效率。
在一些实施例中,如图5所示,步骤S140根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,可以包括:
S141,根据字段引用关系,确定目标表第N个分组中每个字段的字段类型;
S142,根据字段类型,确定目标表第N个分组中每个字段的字段数据。
具体地,步骤S140根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,可以包括步骤S141和步骤S142,根据字段引用关系,可以确定目标表第N个分组中每个字段的字段类型,例如基本类型、引用类型或被引用类型,然后根据字段类型,可以确定目标表第N个分组中每个字段的字段数据。
在一些实施例中,字段类型包括基本类型和被引用类型;在字段类型为基本类型或被引用类型的情况下,数据生成请求还包括字段的埋数函数名的信息;步骤S142根据字段类型,确定目标表第N个分组中每个字段的字段数据,可以包括:
在目标表第N个分组中的第一字段属于基本类型或被引用类型的情况下,在预设的函数名与函数实体的对应关系中,获取第一字段的埋数函数名对应的目标函数实体;
运行目标函数实体,得到函数返回结果;
将函数返回结果作为第一字段的字段数据。
其中,字段类型,指的是由不同表之间的字段引用关系得到的字段所属的类型,例如基本类型、被引用类型或引用类型。
基本类型,指的是既没有被其他字段引用也没有引用其他字段。
被引用类型,指的是被其他字段引用了。
需要说明的是,在字段类型为基本类型或被引用类型的情况下,说明该字段没有引用其他字段,无法通过其他字段确定该字段的字段数据,因此用户填写的数据生成请求还包括字段的埋数函数名的信息,需要通过字段埋入的函数的函数返回值来确定该字段的字段数据。
引用类型,指的是引用了其他字段。
具体地,目标表第N个分组中的字段,该字段可以称为第一字段,在目标表第N个分组中的第一字段属于基本类型或被引用类型的情况下,说明该字段没有引用其他字段,无法通过其他字段确定该字段的字段数据,因此用户填写的数据生成请求还包括字段的埋数函数名的信息,需要通过字段埋入的函数的函数返回值来确定该字段的字段数据,则可以在预设的函数名与函数实体的对应关系中,获取第一字段的埋数函数名对应的目标函数实体,接着运行该目标函数实体,可以得到函数返回结果,然后可以将函数返回结果作为第一字段的字段数据,由此可以快速确定基本类型或被引用类型的字段的字段数据。
在一些实施例中,在第一字段属于被引用类型的情况下,该方法还包括:
将第一字段的字段数据,存储至数据缓存区。
具体地,在目标表第N个分组中的第一字段属于被引用类型的情况下,在生成第一字段的字段数据之后,还可以将第一字段的字段数据,存储至数据缓存区,以用于数据的共享,可以方便其他表直接从数据缓存区中拿数,不同格式的数据库表之间无需直接对话,可以解决数据库格式不兼容的问题,兼容性更强,可以随意扩展其他任意格式的数据库表,通过数据缓存区中存储被引用的字段的字段数据,可以解决不同格式的数据库不兼容的问题,具有可扩展性,例如可以支持扩展MPP、ClickHouse等类型的数据库表。
在一些实施例中,字段类型包括引用类型;根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
在目标表第N个分组中的第一字段属于引用类型的情况下,在数据缓存区中,获取目标字段数据,其中,目标字段数据为第一字段引用的第二字段的字段数据;
将目标字段数据作为第一字段的字段数据。
具体地,字段属于引用类型时,确定字段数据的过程为:在目标表第N个分组中的第一字段属于引用类型的情况下,说明第一字段引用了其他表中的字段,则可以在数据缓存区中,第一字段引用的第二字段的字段数据,该字段数据可以称为目标字段数据。在本申请实施例中,如果字段引用了其他表的字段,直接从数据缓存区中拿数即可,可以解决数据库格式不兼容的问题,兼容性更强。
在一个示例中,被引用的字段和对应的字段数据可以以键值对的形式存储至数据缓存区中。例如可以把数据生成请求等效为一张表,如表二所示。
表二
在表二中,用户选择的待填写的三张表为A表、B表、C表,A表中包括字段A1~A5,B表中包括字段B1~B6,C表中包括字段C1~C4,其中,A表中的字段A1引用了B表中的字段B1,A表中的字段A4引用了C表中的字段C1,因此需要先生成B表和C表的数据,再生成A表的数据,从而防止填数任务失败或阻塞,进一步地,由于B表中的字段B4引用了C表中的字段C2,因此需要先填写C表中的字段的字段数据。因此,可以得到如表三所示的填写顺序:C表、B表、A表。
表三
接着,在填写C表时,可以一个分组一个分组地填写,每个分组中都需要填写字段C1~C4的字段数据,通过埋数函数可以确定C1~C4的字段数据,可以分别在生成C1、C2的字段数据后将字段名、字段数据以键值对的形式暂存至数据缓存区,如表四所示。
表四
表四中的C1、C2的字段名在存储时,需要加入任务场景ID号、表标识、字段名,因为不同数据库表的字段名有可能相同,但是同一数据库表中的字段名是不同的,因此在数据缓存区中可以以“场景ID-表标识-字段名”的形式存储字段名,可以防止字段的混淆,有利于字段的有序存储,有利于属于引用类型的第一字段快速、准确、方便地从数据缓存区获取被引用的第二字段的目标字段数据。
在又一个示例中,属于基本类型或被引用类型的字段,需要通过埋数函数来确定其字段数据。例如,由表三中的引用关系可知,字段C1属于被引用类型,又由于数据生成请求中还包括字段的埋数函数名的信息,例如字段C1的埋入函数名对应的函数实体为getRandomNumber{},则可以调用该函数实体,运行后得到的函数返回值作为C1的字段数。
S150,将字段数据填入目标表。
具体地,步骤S150可以理解为,确定了目标表中的每个字段的字段数据后,可以将字段数据填入目标表中。
在本申请实施例中,通过响应于用户输入的数据生成请求,可以获取该数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息,然后根据多个表标识和不同表之间的字段引用关系,可以确定多个表的排列顺序,并根据多个表的排列顺序,确定待填写的目标表,接着根据不同表之间的字段引用关系,可以确定该目标表中每个字段的字段数据,并将确定的字段数据填入目标表中。通过用户自定义的不同表之间的字段引用关系可以对多个表进行排序,得到待填写的表顺序,可以防止填数任务失败或阻塞,可以支持多个表之间多字段数据关联,可以快速生成大量有效的测试数据。
在一个示例中,用户通过在第一页面上自定义场景并配置数据库表及数据生成规则提交至后台生成测试数据的过程如下:
1)用户在页面上自定义:场景信息,表信息、字段对应埋数函数、不同表之间的字段引用关系等,生成数据生成请求发送给系统后台。
2)系统接收到数据生成请求以后根据不同表之间的字段引用信息,解析表的填写顺序。
经发明人研究发现,当表数据存在字段引用关系,则必须要保证埋数时,被关联的表作为数据生产方要先进入埋数流程,否则会导致数据使用方拿不到需要的数据导致任务阻塞。所以需要根据用户设置的字段引用关系,解析引用与被引用的关系,重新对埋数的表进行排序,具体过程可以参见上述表二和表三。
如表二所示,如果不进行重新排序处理,则会按照顺序优先埋A表的数据,当生成A1字段数据时,由于B表数据未开始,则获取不到引用的B1字段数据,导致A表数据埋数任务失败或阻塞。因此需要依次遍历每张表的每个字段,当循环到A1字段时,解析到A表会引用B表的数据,此时判断B表序号是否小于A表,如果不小于,则调整B表序号至A表前面。依次类推,直到完成排序,完成排序后如表三。
3)解析不同表之间的字段引用关系,并初始化消息队列
再次解析不同表之间的字段引用关系,为每个被引用的表初始化消息队列,用于保存产生的数据,即以键值对的形式存储至数据缓存区中。可以参见表四。
4)解析每张表每个字段设置的埋数函数
在字段为基本类型或被引用类型的情况下,由于系统接收到的用户为每个字段设置的埋数函数名为字符串数据,系统需要在函数名与函数实体的对应关系中获取函数名对应的函数实体。
根据顺序提交埋数任务,并将被引用的字段数据放入数据缓存区。
6)系统根据填表顺序为每张表的每个字段生成数据并插入数据库表中。
需要说明的是,在生成每个字段的字段数据时,首先判断有没有引用其他表字段的字段数据,如有,则通过字段引用关系从数据缓存区中取出对应的目标字段数据作为该字段的数据,否则,根据自身的埋数函数生成字段数据。生成字段数据后,判断字段的字段数据有没有被其他字段引用,如有被引用,则根据将字段数据存入数据缓存区中,供其他表字段使用。
如图6所示,本申请实施例还提供了一种数据的生成装置,该装置600,可以包括获取模块610、确定模块620和填写模块630:
获取模块610,用于响应于用户输入的数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息;
确定模块620,用于根据多个表标识和字段引用关系,确定多个表的排列顺序;
确定模块620,还用于根据排列顺序,确定待填写的目标表;
确定模块620,还用于根据字段引用关系,确定目标表中每个字段的字段数据;
填写模块630,用于将字段数据填入目标表。
在本申请实施例提供的数据的生成装置中,通过响应于用户输入的数据生成请求,可以获取该数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息,然后根据多个表标识和不同表之间的字段引用关系,可以确定多个表的排列顺序,并根据多个表的排列顺序,确定待填写的目标表,接着根据不同表之间的字段引用关系,可以确定该目标表中每个字段的字段数据,并将确定的字段数据填入目标表中。通过用户自定义的不同表之间的字段引用关系可以对多个表进行排序,得到待填写的表顺序,可以防止填数任务失败或阻塞,可以支持多个表之间多字段数据关联,可以快速生成大量有效的测试数据。
在一些实施例中,数据生成请求还包括每个表中待填写的分组的数量阈值;确定模块还用于根据字段引用关系,确定目标表中每个字段的字段数据,包括:
确定单元,用于根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,其中,N为小于或等于目标表的数量阈值的正整数。
在一些实施例中,确定模块还用于根据字段引用关系,确定目标表第N个分组中每个字段的字段数据,包括:
确定单元,用于根据字段引用关系,确定目标表第N个分组中每个字段的字段类型;
确定单元,还用于根据字段类型,确定目标表第N个分组中每个字段的字段数据。
在一些实施例中,字段类型包括基本类型和被引用类型;在字段类型为基本类型或被引用类型的情况下,数据生成请求还包括字段的埋数函数名的信息;确定模块还用于根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
获取单元,用于在目标表第N个分组中的第一字段属于基本类型或被引用类型的情况下,在预设的函数名与函数实体的对应关系中,获取第一字段的埋数函数名对应的目标函数实体;
运行单元,还用于运行目标函数实体,得到函数返回结果;
确定单元,用于将函数返回结果作为第一字段的字段数据。
在一些实施例中,在第一字段属于被引用类型的情况下,该装置还包括存储模块:
存储模块,用于将第一字段的字段数据,存储至数据缓存区。
在一些实施例中,字段类型包括引用类型;确定模块还用于根据字段类型,确定目标表第N个分组中每个字段的字段数据,包括:
获取单元,用于在目标表第N个分组中的第一字段属于引用类型的情况下,在数据缓存区中,获取目标字段数据,其中,目标字段数据为第一字段引用的第二字段的字段数据;
确定单元,用于将目标字段数据作为第一字段的字段数据。
在一些实施例中,在获取模块用于响应于数据生成请求,获取数据生成请求中的多个表标识的信息、不同表之间的字段引用关系的信息之前,该装置还包括显示模块、接收模块:
显示模块,用于响应于任务创建请求,显示第一页面;
接收模块,用于接收用户在第一页面中的第一输入,第一输入包括数据生成请求的信息。
本申请实施例提供的数据的生成装置中的各个模块,可以实现图1至图5提供的数据的生成方法的各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
图7示出了本申请实施例提供的数据的生成设备的硬件结构示意图。
在数据的生成设备可以包括处理器701以及存储有计算机程序指令的存储器702。
具体地,上述处理器701可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器702可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器702可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器702可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器702可在数据的生成设备的内部或外部。在特定实施例中,存储器702是非易失性固态存储器。
存储器可包括只读存储器(Read OnlyMemory,ROM),随机存取存储器(RandomAccess Memory,RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器701通过读取并执行存储器702中存储的计算机程序指令,以实现上述实施例中的任意一种数据的生成方法。
在一个示例中,数据的生成设备还可包括通信接口703和总线704。其中,如图7所示,处理器701、存储器702、通信接口703通过总线704连接并完成相互间的通信。
通信接口703,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线704包括硬件、软件或两者,将数据的生成设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(IndustryStandard Architecture,ISA)总线、无限带宽互连、低引脚数(Linear PredictiveCoding,LPC)总线、存储器总线、微信道架构(MicroChannel Architecture,MCA)总线、外围组件互连(Peripheral Component Interconnect,PCI)总线、PCI-Express(PeripheralComponent Interconnect-X,PCI-X)总线、串行高级技术附件(Serial AdvancedTechnology Attachment,SATA)总线、视频电子标准协会局部(VESA Local Bus,VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线704可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该设备可以基于数据的生成装置中的各个单元/部件执行本申请实施例中的数据的生成方法,从而实现结合图1至图5描述的数据的生成方法。
另外,结合上述实施例中的数据的生成方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据的生成方法。
本申请还提供了一种计算机程序产品,所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行实现上述任意一种数据的生成方法实施例的各个过程。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、只读存储器(Read-OnlyMemory,ROM)、闪存、可擦除只读存储器(Erasable ReadOnly Memory,EROM)、软盘、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光盘、硬盘、光纤介质、射频(Radio Frequency,RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
- 蒙皮数据生成方法以及装置、电子设备及存储介质
- 基于大数据的报表生成方法及装置、电子设备、存储介质
- 数据分布存储方法、装置、存储介质及电子设备
- 多版本数据存储管理方法及装置、电子设备、存储介质
- 海量数据存储方法、装置、存储介质及电子设备
- 数据生成方法、数据生成装置、电子设备及存储介质
- 数据包生成方法、数据包生成装置、电子设备及存储介质