一种基于多数据库类型的测试数据自动构造方法与流程

文档序号:20029433发布日期:2020-02-28 10:12阅读:455来源:国知局
一种基于多数据库类型的测试数据自动构造方法与流程

本发明属于互联网领域,尤其是涉及一种基于多数据库类型的测试数据自动构造方法。



背景技术:

如今的互联网属于大数据时代,数据是产品的主心骨。要保证数据正常执行、大数据产品质量,测试过程中需要从数据源出发:根据业务特点构建多样化的测试数据,同时还需要构造海量数据进行测试,查看系统业务是否正常。所以,大数据测试工作中,构造测试数据是必备的前提工作。

构造测试数据时,一个个的创建不同类型的数据库表,再一条条的创建数据并插入数据,效率低下且步骤繁琐。另一方面,测试数据需要满足输入限制规则,且尽可能覆盖到满足规则的不同类型的数据。考虑到以上情况,自动化构造数据可大幅度提升测试效率。

随着数据种类增多,数据量增大,应用需求多样化,数据库种类的不断增多,目前的数据构造工具就存在一些弊端:无法提供多数据库类型的随意切换,数据类型不够丰富,数据生成规则不够灵活、千万级数据量的执行效率不可控。



技术实现要素:

有鉴于此,本发明旨在提出一种基于多数据库类型的测试数据自动构造方法,以提高数据构造执行效率。

为达到上述目的,本发明的技术方案是这样实现的:

一种基于多数据库类型的测试数据自动构造方法,包括如下步骤:

s1.输入配置信息;

s2.配置解析模块,读取配置信息;

s3.调度模块读取数据库类型调用相应代码;

s4.连接数据库判断库表是否存在;

a1.存在,跳过步骤s5;

a2.不存在,依次执行步骤;

s5.调用数据库操作模块,创建库表;

s6.执行模块读取数据量、线程数,均衡分布单线程的数据量;

s7.数据生成模块,读取配置的数据规则生成数据,将所有表字段的生成数据组合成一条待入库数据;

s8.执行数据库操作模块的插入操作,将组合后的数据插入到目标库表;

s9.判断线程数、数据量循环是否结束;

b1.结束,步骤依次执行;

b2.未结束,跳入步骤s7;

s10.输出结果。

进一步的,所述步骤s1输入配置信息包括两种方法:

c1.通过可视化界面直接进行输入;

c2.通过上传包含配置信息的.yaml配置文件,配置信息包括数据库类型配置、数据库连接信息配置、数据量配置、数据库表结构配置、表字段类型配置、数据生成规则配置、执行线程数配置。

进一步的,所述步骤s2配置解析模块,读取配置信息方法包括:

配置解析模块会解析配置文件,将数据库相关信息进行结构化处理、变量化,后面可直接调用;根据数据库类型、表结构信息,按需生成sql语句,供后面执行数据库操作时使用。

进一步的,所述步骤s3调度模块读取数据库类型调用相应代码的方法包括:

调度模块读取数据库类型,调用对应的数据库执行代码,执行连接数据库操作。

进一步的,所述步骤s6执行模块读取数据量、线程数,均衡分布单线程的数据量的方法包括:

执行模块会读取数据量、线程数,根据数据量和线程数计算出单个线程需要执行的数据入库量,以达到均衡并发执行。

进一步的,所述步骤s7的方法包括:

调度模块根据配置文件中每个表字段的数据类型,调用对应数据类型的数据生成模块,数据生成模块根据数据生成规则生成数据,每个字段的数据生成完毕后进行组合,组合成一条待插入的测试数据

进一步的,所述步骤s10输出结果包括:系统输出入库成功总数据量及执行时长。

相对于现有技术,本发明具有以下优势:

(1)本发明简化了工具的使用性:以可视化的方式输入配置信息,并对输入的数据库类型、数据字段类型等信息做合理校验,执行完毕后,系统返回入库总数量及入库时长给用户查看,提高工具的交互性。

(2)进一步丰富了数据构造工具的功能:集成了多种数据库类型的数据构造功能;除了常用的数据类型外,还增加了数组、json等非关系数据库支持的类型;丰富灵活的数据生成规则。

(3)为了有效控制数据构造执行效率,用户可自行根据数据量设置线程数,系统会根据线程数、数据量均衡分布单线程的数据量,合理的控制数据构造执行效率。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的系统流程图;

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。

下面将参考附图并结合实施例来详细说明本发明。

根据图1所示,包括如下步骤

1)输入配置信息,通过两种方式实现:1、通过可视化界面直接进行输入。2、通过上传包含配置信息的.yaml配置文件。配置信息包括数据库类型配置、数据库连接信息配置、数据量配置、数据库表结构配置、表字段类型配置、数据生成规则配置、执行线程数配置。

2)配置解析模块会解析配置文件,将数据库相关信息进行结构化处理、变量化,后面可直接调用;根据数据库类型、表结构信息,按需生成sql语句,供后面执行数据库操作时使用;

3)调度模块读取数据库类型,调用对应的数据库执行代码,执行连接数据库操作;

4)连接数据库成功后,系统会自动判断目标库表是否存在。若不存在,自动执行数据库操作模块的创建库表sql;若库表已经存在,则直接执行下一步;

5)执行模块会读取数据量、线程数,根据数据量和线程数计算出单个线程需要执行的数据入库量,以达到均衡并发执行;

6)调度模块根据配置文件中每个表字段的数据类型,调用对应数据类型的数据生成模块,数据生成模块根据数据生成规则生成数据,每个字段的数据生成完毕后进行组合,组合成一条待插入的测试数据;

7)执行模块会通过调用模块调用数据插入代码,将步骤6组合后的数据插入目标库表。

8)每个线程内嵌入数据量循环,循环内执行步骤6、步骤7,直至线程数及数据量循环结束;

9)所有线程执行完毕后,系统输出入库成功总数据量及执行时长。

所包含模块:

配置解析模块:配置文件标准为.yaml文件,由于数据库类型不同,其内部存储结构不同,配置文件会稍有差别。配置文件解析模块包含多个类(以数据库类型为维度的配置文件处理类、sql语句生成类),分别处理不同数据库类型的配置文件,其主要作用包括两个:

1、将配置信息结构化:提取数据库连接信息、数据库表名、数据库字段信息(类型/长度/规则),以key/value的方式存在字典中。

其中配置文件支持的规则有:

1.数值类型(整数、小数)的数据,根据起始值(start、end)、步长(step),生成对应数据;若无步长则生成数据范围内的随机值。

2.时间类型的数据,根据起始值(start、end)、步长(s/min/hour/day/mouth/year),生成对应数据;若无步长则生成起始值范围内的随机值。

3.字符串类型的数据,根据输入的length,生成字符串长度为0--length范围内的字符串。

4.数组类型的数据,根据数组类型(array_type),数据长度(num)及对应规则(参考1/2/3)生成对应的数组数据。

5.布尔类型的数据,随机生成true/false。

6.json数据,根据json层级数(num),生成随机类型的数据(模板中写死)

2、生成sql语句:根据配置文件中数据库表信息生成createsql语句(判断库表是否存在,不存在创建,存在不创建)和insertsql语句。

数据生成模块:根据数据类型为维度生成数据,获取配置文件中每个字段的类型,根据对应规则生成数据。

其中配置文件支持的规则有(基本覆盖了常用的数据类型):

1.数值类型(整数、小数)的数据,根据起始值(start、end)、步长(step),生成对应数据;若无步长则生成数据范围内的随机值。

2.时间类型的数据,根据起始值(start、end)、步长(s/min/hour/day/mouth/year),生成对应数据;若无步长则生成起始值范围内的随机值。

3.字符串类型的数据,根据输入的length,生成字符串长度为0--length范围内的字符串。

4.数组类型的数据,根据数组类型(array_type),数据长度(num)及对应规则(参考1/2/3)生成对应的数组数据。

5.布尔类型的数据,随机生成true/false。

6.json数据,根据json层级数(num),生成随机类型的数据(模板中写死)

数据库执行模块:该模块封装了不同的数据库类型,目前包括myslq、mongo、hbase等不同数据库类型的数据操作类,主要包括连接数据库操作、创建库表(存在不创建、不存在则创建)操作、插入数据操作、查询数据信息操作及查询数据量操作。

执行模块:

1、根据总数据量和线程数分配单个线程需要执行的数据入库量,以达到均衡并发执行。例:100w数据,10个线程,代码会自动创建10个线程并发,第一个线程1-10w,第二个线程10w+1--20w,以此类推,实现100w不重复的数据导入。

2、数据导入过程中是根据用户输入的数据库类型,调度对应的数据库执行模块。分别执行:连接数据库,创建库表,10个线程并发插入10w数据(插入数据操作),每个线程执行完实时打印数据库的当前数据量,完成。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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