一种数据库测试数据的生成方法及系统技术方案

技术编号:7837843 阅读:204 留言:0更新日期:2012-10-12 02:42
本发明专利技术提供一种数据库测试数据的生成方法及系统,本发明专利技术方法包括以下步骤。获取用户操作对应的程序语句,根据所述程序语句中包含的数据表名获取所述数据表的字段信息。根据所述字段信息及用户指定数量为所述数据表的不同字段分别生成所述指定数量的呈正态分布的测试数据。

【技术实现步骤摘要】

本专利技术属于数据库应用领域,尤其涉及一种数据库测试数据的生成方法及系统
技术介绍
随着信息化社会的飞速发展,数据库在企业、学校以及图书馆中都得到了普遍的应用。在日常应用中,数据库系统需要存储大量数据,随着业务的不断发展,数据量不断增加,数据库的负荷越来越大。为保证数据库运行的稳健性,从数据库建立到修改的过程中,维护人员需要对数据库进行大数据量的压力测试。在测试数据的生成方面,目前主要依靠数据生成装置如gen-data,但其缺点是过于僵化,不能模拟现实用户的使用习惯,数据真实性不高。另一方面,对不同的业务操作类型,现有技术也不能按照用户期望的场景,自动生成数据
技术实现思路
本专利技术提供一种数据库测试数据的生成方法及系统以解决上述问题。本专利技术提供一种数据库测试数据的生成方法,包括以下步骤。获取用户操作对应的程序语句,根据所述程序语句中包含的数据表名获取所述数据表的字段信息。根据所述字段信息及用户指定数量为所述数据表的不同字段分别生成所述指定数量的呈正态分布的测试数据。本专利技术提供一种数据库测试数据的生成系统,包括生成模块及处理模块,所述生成模块连接所述处理模块。所述生成模块,用于获取用户操作对应的程序语句,根据所述程序语句中包含的数据表名获取所述数据表的字段信息。所述处理模块,用于根据所述字段信息及用户指定数量为所述数据表的不同字段分别生成所述指定数量的呈正态分布的测试数据。相较于先前技术,根据本专利技术提供的数据库测试数据的生成方法及系统,通过获取用户操作对应的程序语句,并根据语句中包含的数据表名获取数据表的字段信息。根据用户业务需求提取相关数据表的字段信息,增强了业务针对性。根据所述字段信息及用户指定数量为数据表的不同字段分别生成指定数量的呈正态分布的测试数据。如此,通过模拟现实用户的使用方式,增加了测试数据的真实度。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中图I所示为根据本专利技术的较佳实施例提供的数据库测试数据的生成方法的流程图;图2所示为根据本专利技术的较佳实施例提供的数据库测试数据的生成系统的示意图。具体实施例方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。图I所示为根据本专利技术的较佳实施例提供的数据库测试数据的生成方法的流程图。如图I所示,本专利技术的较佳实施例提供的数据库测试数据的生成方法包括步骤IOf 102。步骤101 :获取用户操作对应的程序语句,根据所述程序语句中包含的数据表名获取所述数据表的字段信息。具体而言,所述数据表可以为所有关系型数据库中的数据表,对应的程序语言为 任意一种结构化查询语言。当用户在浏览器页面进行某项操作时,获取并解析用户操作对应的程序语句,将该语句中包含的所有数据表的字段信息分别导出。所述字段信息包括数据表的字段名、字段类型、字段最大宽度及是否允许字段为空。其中,字段类型包括字符型、整数型、日期型及浮点型。举例而言,若现用户在某网站进行注册,点击注册按钮后,对应的程序语句为Insert into user values,语句中包含的数据表为user表。获取user表中所有的字段信息例如下表所示。字段名字段类型字段最大宽度是否允许字段为空userjd整数型10否email字符型40否p^d字符型32^username字符型24否birth日期型10是类似地,若需要在学生查课系统中查询编号为A的学生的选课情况,用户在系统界面上点击查询按钮,对应的程序语句为Select course. *from course left joinstu-course on course. id=stu-course. id where stu_id=A0 语句中包含课程表 course及学生课程关系表stu-course,则利用数据库功能分别导出上述两数据表的字段信息。所述字段信息格式与上表相同,字段信息具体内容可根据各数据表应用自行设置,于此不再一一举例说明。步骤102 :根据所述字段信息及用户指定数量为所述数据表的不同字段分别生成所述指定数量的呈正态分布的测试数据。具体而言,根据字段信息中的字段类型、字段最大宽度及用户指定的数量为字段信息中包含的每个字段生成测试数据,且所述测试数据呈正态分布。若所述字段类型为字符型,该字段对应的测试数据由任意字符组成;若所述字段类型为浮点型,该字段对应的测试数据由包含小数点的数字组成;若所述字段类型为整数型或日期型,该字段对应的测试数据由整数组成。此外,于本实施例中,若数据表中含有字段内容为系统自动编号的字段,则不为该字段生成测试数据。举例而言,按照步骤101的示例,若用户需要为程序语句Insert into uservalues包含的user表每个字段生成10万条测试数据。以user表的pwd字段为例,该字段的字段类型为字符型,且字段最大宽度为32。下面以调用函数R,即NORMRND(MU,SIGMA,M,N)为例说明为pwd字段生成测试数据的过程。其中,MU值为pwd字段最大宽度与最小宽度的中间值。按照步骤101,pwd字段不允许为空,则该字段最小宽度为1,故所述MU值为(32+1)/2=16. 5。于本实施例中,生成的测试数据按标准正态分布,故函数R中的SIGMA值为I,于其它实施例中,可按非标准正态分布生成测试数据,对此本专利技术不作限定。此外,当用户需对每个字段分别生成N条测试数据时,函数中M和N值为用户需生成的测试数据排列成矩阵后的行数和列数,S卩,若用户对pwd字段生成100000条测试数据,排列成矩阵为1*100000,故函数R中的M=l,N=100000。将上述各值代入函数,则程序调用函数NORMRND (16. 5,1,1,100000)后,可为user表的pwd字段生成呈标准正态分布的100000条测试数据。除上述调用函数生成测试数据的方式外,本实施例还提供以程序代码生成测试数据的方式。仍以Pwd字段为例,生成100000条呈标准正态分布的测试数据的代码如下 const int N = 100000;//const double MAX = 32.0; //const double MIN = 1,0; //consl double MTU = 16.5;//const double SIGMA= 1.0;static Random aa = new Random! (int)(DateTime.Now.Ticks / N)); public double AverageRandom(double mk, double max)//产 §£(min,max)t_ 均句分布的随机数 { int MINiiteger = (int)(miii 傘 N);int MAXnteger = (_(max N); int resultliiteger = m.K1 ext(MMnteger, MAXnteger); return resultlnteger / N;} puijlic double NormalCdotible x, do本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种数据库测试数据的生成方法,其特征在于,包括以下步骤 获取用户操作对应的程序语句,根据所述程序语句中包含的数据表名获取所述数据表的字段息; 根据所述字段信息及用户指定数量为所述数据表的不同字段分别生成所述指定数量的呈正态分布的测试数据。2.根据权利要求I所述的方法,其特征在于,所述数据表的字段信息包括字段名、字段类型、字段最大宽度及是否允许所述字段为空。3.根据权利要求2所述的方法,其特征在于,所述字段类型包括字符型、整数型、...

【专利技术属性】
技术研发人员:胡加明刘晓东
申请(专利权)人:苏州阔地网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1