本发明专利技术提供一种生成限定范围的随机测试数据的方法及系统,所述方法包括以下步骤:根据预先定义的列类型放入测试数据,形成数据字典;其中,所述预先定义的列类型中规定了数据范围;根据用户需求建立列的映射关系和列顺序;根据所述列顺序和列类型从所述数据字典中随机抽取数据,生成随机测试数据。本发明专利技术的方法及系统,通过数据字典固化数据的生成方式,只需要简单的配置即可动态生成所有数据均属于特定数据集合、但出现位置和顺序没有规律的测试数据。采用本发明专利技术的方案极大的减少了人工参与时间,从而生成限定范围的随机测试数据的速度更快,大量的节约了生成数据的时间,并且能够更好的保证数据的随机性以及绝对保证所生成数据的范围。
【技术实现步骤摘要】
本专利技术涉及数据库性能测试领域,特别是涉及一种生成限定范围的随机测试数据的方法以及一种生成限定范围的随机测试数据的系统。
技术介绍
在数据库性能测试中,需要生成包含一定数据量并且所有数据均属于特定数据集合、但出现位置和顺序没有规律的数据。例如:我们希望生成带有id、name、sex、address列的测试数据,且期望生成的数据符合如下规则:1、主键id值只能在1000到2000之间;2、name由三个字的人名构成;3、sex为‘男’或‘女’;4、address只包含“深圳南山”和“深圳福田“两种地址。这种将值范围限定在一定范围内的数据称之为限定范围的数据。如下表: 主键id Name Sex Address 1003 张XX 男 深圳南山 1034 李XX 女 深圳福田 1902 何XX 男 深圳南山 1034 李XX 男 深圳福田 1167 张XX 女 深圳福田另外,每次生成的数据必须带有随机性,相邻两次生成的数据不应相同,且列数据中不能存有某种明显顺序,如主键ID列内容不能为:1000、1001、1002、…、2000这样的顺序值。目前,传统的生成限定范围的随机测试数据的方法中,是由测试人员采用手工的方式生成SQL(Structured Query Language,结构化查询语言)语句,然后将SQL语句循环插入到数据库中,以此生成所需数据。然而,上述采用手工方式生成随机测试数据,一方面将耗费大量时间;另一方面,由于受到人为因素(如人员的习惯和工作方法等)的影响,因此无法真正保证数据出现的顺序是随机的,且有些期望加入的数据可能并没有包含在当前数据中。
技术实现思路
基于此,有必要针对上述由于采用手工方式生成数据所带来的耗费大量时间、无法保证数据的随机性以及无法保证数据范围的问题,提供一种生成限定范围的随机测试数据的方法及系统。一种生成限定范围的随机测试数据的方法,包括以下步骤:根据预先定义的列类型放入测试数据,形成数据字典;其中,所述预先定义的列类型中规定了数据范围;根据用户需求建立列的映射关系和列顺序;根据所述列顺序和列类型从所述数据字典中随机抽取数据,生成随机测试数据。一种生成限定范围的随机测试数据的系统,其特征在于,包括:数据字典生成模块,用于根据预先定义的列类型放入测试数据,形成数据字典;其中,所述预先定义的列类型中规定了数据范围;映射关系及列顺序建立模块,用于根据用户需求建立列的映射关系和列顺序;随机测试数据生成模块,用于根据所述列顺序和列类型从所述数据字典中随机抽取数据,生成随机测试数据。由以上方案可以看出,本专利技术的一种生成限定范围的随机测试数据的方法及系统,通过预先建立自定义的列类型的方法,把所有限定范围的数据先缓存到一个数据字典中来,然后从这个数据字典中随机抽取数据生成用户所需要的测试数据。本专利技术的这种通过数据字典固化数据的生成方式,只需要简单的配置即可动态生成所有数据均属于特定数据集合、但出现位置和顺序没有规律的测试数据。本专利技术的方法及系统与传统采用人工生成SQL语句的方式相比,极大的减少了人工参与时间,从而生成限定范围的随机测试数据的速度更快,大量的节约了生成数据的时间,并且能够更好的保证数据的随机性以及绝对保证所生成数据的范围。附图说明图1为一个实施例中一种生成限定范围的随机测试数据的方法流程示意图;图2为一个实施例中一种生成限定范围的随机测试数据的系统结构示意图。具体实施方式以下结合其中的较佳实施方式对本专利技术方案进行详细阐述。参见图1所示,一种生成限定范围的随机测试数据的方法,包括以下步骤:步骤S101,根据预先定义的列类型放入测试数据,形成数据字典,然后进入步骤S102。本专利技术实施例中首先根据通用数据类型来建立自定义列类型,即在已有通用数据类型的基础上,定义新的列类型,以便在后续过程中对列内容进行控制。本专利技术实施例中所形成的数据字典是一种限定的数据集合,其内部数据结构可以参见下表:在结构化查询语言中有五种数据类型:字符型、文本型、数值型(包括整数型)、逻辑型和日期型,上表中仅以文本类型和数值型中的整数类型为例进行描述。从上表可知,本专利技术实施例区别于传统对数据结构的定义方式,在通用数据类型的基础上,创造性的在列类型中规定了数据范围,如上表中:“varchar(5,20)”除了表示数据类型为文本型之外,还表示该列内容长度必须为“>=5,<=20”,只有同时满足上面这两个条件的数据才能被放进数据字典中。步骤S102,根据用户需求建立列的映射关系和列顺序,然后进入步骤S103。例如,若用户需要生成id、name两个列组成的测试数据时,则可以到数据字典中检索到相应的自定义列类型,并对其进行匹配和映射,如下表所示: 用户实际需要的列和类型 对应自定义列 Id(int类型) Int(1000) Name(varchar文本类型) varchar(3,3)步骤S103,根据所述列顺序和列类型,从所述数据字典中随机抽取数据,生成最终的随机测试数据。根据步骤S102中配置的映射关系,可以抽取到自定义列类型;再根据自定义列类型到数据字典中随机抽取值,即可组合成最终的随机测试数据。如下表所示,在一个实施例中,生成的随机测试数据Id列包含的值只能是int(1000)中提供的值,Name列包含的值只能是varchar(3,3)中提供的值,并且每一列下的值出现顺序是随机分布的,具体参见下表: Id Name 456 张XX 345 张XX 789 王XX另外,为了保证数据字典中所存放数据的准确性,作为一个较好的实施例,在所述步骤S101形成数据字典之后、步骤S102建立列的映射关系和列顺序之前,还可以包括如下步骤:校验在所述数据字典中所放入的测试数据是否符合所述列类型的规则。校验是否符合规则,首先要看数据类型是否符合,并且在数据类型符合的条件下,还要求数据范围也要符合,这样才算满足条件(即符合所述列类型的规则)。需要说明的是,在上一步骤中,如果校验的结果是本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种生成限定范围的随机测试数据的方法,其特征在于,包括以下步骤:
根据预先定义的列类型放入测试数据,形成数据字典;其中,所述预先定
义的列类型中规定了数据范围;
根据用户需求建立列的映射关系和列顺序;
根据所述列顺序和列类型从所述数据字典中随机抽取数据,生成随机测试
数据。
2.根据权利要求1所述的生成限定范围的随机测试数据的方法,其特征在
于,在所述形成数据字典之后、建立列的映射关系和列顺序之前,还包括步骤:
校验在所述数据字典中所放入的测试数据是否符合所述列类型的规则。
3.根据权利要求1或2所述的生成限定范围的随机测试数据的方法,其特
征在于,所述生成随机测试数据之后,还包括步骤:将所生成的随机测试数据
转换为SQL语句并执行到数据库中。
4.根据权利要求1或2所述的生成限定范围的随机测试数据的方法,其特
征在于,所述生成随机测试数据之后,还包括步骤:将所生成的随机测试数据
通过接口的方式提供给用户;所述接口的方式包括:图形界面、表格、文本文
件、Excel。
5.一种生成限定范围的随机测试数据的系统,其特征在于,包括:
数据字典生...
【专利技术属性】
技术研发人员:范明明,
申请(专利权)人:深圳市金蝶中间件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。