一种批量生成测试数据的方法、系统和装置的制作方法

文档序号:6468313阅读:310来源:国知局
专利名称:一种批量生成测试数据的方法、系统和装置的制作方法
技术领域
本发明涉及计算机技术领域,特别涉及一种批量生成测试数据的方法、 系统和装置。
背景技术
对于绝大多数软件项目而言,测试都是非常重要的环节,测试成败直接 决定了软件项目的成败。在测试过程中,通常情况下,都需要为多个相互关 联的表生成测试数据,并且这些数据之间要有一定的关系。而制造测试数据 始终是一件麻烦的事情,尤其是需要制造大量测试数据的情况。
当需要批量生成测试数据时,这批测试数据的大部分内容都是相同的, 只有部分数据如数据库主键、日期等需要变化,当然具体哪些数据需要变化 要由业务需求来决定。因此,批量制造测试数据的难点在于如何生成这些变 化的内容,以及如何保证这些批量制造出的测试数据、在数据库内具有关联 关系的表和表之间存在正确的关联关系。
目前解决这类问题的主要办法有两种
1) 手工录入数据
具体的,由人手工往数据库中一条一条的插入数据,这种方式最主要的 缺点是效率低下,而且非常容易出错。尤其是在多表关联的情况下更是如此。
2) 通过函数录入数据
具体的,通过数据库工具如PL/SQL,编写一段函数,利用该编写的函 数直接往数据库中具有关联关系的各个表中插入数据。这种方式最主要的缺 点是过于复杂,必须由专业的数据库开发人员才能编写出所需要的函数,并 且很难保证具有关联关系的各个表中测试数据完全对应,即很容易出错。

发明内容
本发明实施例在于提供一种批量生成测试数据的方法、系统和装置,以本发明实施例提供的一种批量生成测试数据的方法,包括设置模板文 件,所述模板文件包括待生成测试数据的原始语句,所述原始语句中包含用 变量表示的测试数据的动态变化部分以及固定值部分;所述方法还包括由 数据生成器协调模板解析器、模板合成器和文件存储器配合操作,其中,
模板解析器解析所述模板文件,识别所述模板文件中的变量和固定值部
分;
模板合成器根据所述变量的类型以及所述变量的生成方式,生成真实的 数据,依次用真实的数据替换所述变量,生成批量测试数据的动态部分,根
据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据的动态
部分和静态部分,生成批量的测试数据;
文件存储器将所述批量的测试数据存储到结果文件中。
其中,所述方法还包括将所述结果文件中的批量测试数据导入到数据
库的内存在关联的各个表中。
其中,所述变量的生成方式包括以教:值的方式递增或递减,以字符的方
式递增或递减,或者,由多个值构成且有几个值就生成几条记录,且可以嵌套。
本发明实施例提供的一种批量生成测试数据的系统,包括
配置单元,用于设置模板文件,所述模板文件包括待生成测试数据的原
始语句,所述原始语句中包含用变量表示的测试数据的动态变化部分以及固
定值部分;
测试数据生成装置,用于解析所述模板文件,识别所述模板文件中的变 量和固定值部分;根据所述变量的类型以及所述变量的生成方式,生成真实 的数据,依次用真实的数据替换所述变量,生成批量测试数据的动态部分, 根据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据的动 态部分和静态部分,生成批量的测试数据;将所述批量的测试数据存储到结 果文件中。
其中,所述系统还包括导入单元,用于将所述结果文件中的批量测试 数据导入到数据库的内存在关联的各个表中。其中,所述变量的生成方式包括以数值的方式递增或递减,以字符的方 式递增或递减,或者,由多个值构成且有几个值就生成几条记录,且可以嵌 套。
本发明实施例提供的一种测试数据生成装置,包括
数据生成器,用于协调模板解析器、模板合成器和文件存储器配合操作;
模板解析器,用于在数据生成器的控制下,解析已配置的模板文件,识 别所述模板文件中的变量和固定值部分;
模板合成器,用于在数据生成器的控制下,根据所述变量的类型以及所 述变量的生成方式,生成真实的数据,依次用真实的数据替换所述变量,生 成批量测试数据的动态部分,根据所述固定值部分生成批量测试数据的静态 部分;合并所述测试数据的动态部分和静态部分,生成批量的测试数据;
文件存储器,用于在数据生成器的控制下,将所述批量的测试数据存储 到结果文件中。
其中,所述变量的生成方式包括以数值的方式递增或递减,以字符的方 式递增或递减,或者,由多个值构成且有几个值就生成几条记录,且可以嵌 套。
应用本发明,即便是一个不懂数据库的人,也可以在很短的时间内生成 大量的复杂的测试数据,并可以确保生成的数据是正确的,同时,可以准确 地处理多表关联的数据。不但提高了工作效率,而且降低了测试数据的出错 几率。应用本发明实施例提供的方法、系统和装置,筒单、灵活,可以创造 任何复杂的数据,从而满足各种复杂的业务需求。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有 技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附 图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创 造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的批量生成测试数据的系统结构示意图; 图2是根据本发明实施例的测试数据生成装置的结构示意图;图3是根据本发明实施例的批量生成测试数据的流程图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,其是根据本发明实施例的批量生成测试数据的系统结构示意
图,该系统包括
配置单元101,用于设置模板文件,所述模板文件包括待生成测试数据 的原始语句,所述原始语句中包含用变量表示的测试凄t据的动态变化部分以 及固定值部分。所述模板文件位于计算机本地的硬盘等存储器中。
测试数据生成装置102,用于解析所述才莫板文件,识别所述才莫板文件中 的变量和固定值部分;根据所述变量的类型以及所述变量的生成方式,生成 真实的数据,依次用真实的数据替换所述变量,生成批量测试数据的动态部 分,根据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据 的动态部分和静态部分,生成批量的测试数据;将所述批量的测试数据存储 到结果文件中。所述结果文件位于计算机本地的硬盘等存储器中。
也就是说,操作人员需要通过配置单元在模板文件中编写要生成的SQL 语句的模板,其中需要动态变化的字段用变量表示,而不需变化的字段用固 定值部分表示;然后运行测试数据生成装置,由测试数据生成装置自动读取 模板文件,并对其中的变量进行解释,根据模板生成最终的SQL语句;最后 测试数据生成装置将生成的SQL语句保存到结果文件中。本实施例是以SQL 语句为例进行说明,在实际应用中可以是各种编辑凝:据库的工具,如PL、 SQL 等等,本发明并不对具体使用的语言进行限定。
上述批量生成测试数据的系统还可以包括导入单元(图未示),用于将所 述结果文件中的批量测试数据导入到数据库中存在关联关系的各个数据表 中。例如,假设USER数据表中存在用户名(NAME)和标识(ID)这两个变量,
而用户名(NAME)变量在两个表中相同,那么USER数据表和USER ADDR数据表就是存在关联关系的两个表。也就是说,可以通过PL/SQL等工具将
结果文件中的SQL语句直接导入数据库中。
上述变量的生成方式包括但不限于以下三种方式之一或任意组合 方式一、以数值的方式递增或递减,如基数为value值,该类型的变量
每次变化过程是在value的基础上增加一 固定值或减少一固定值, <叚设value
为10000,变量每次变化后可依次为10001、 10002等;
方式二、以字符的方式递增或递减,如以字符为"张三",基数为o为例, 该类型的变量每次变化过程是在字符"张三"不变的情况下让已设定的基数 增加一固定值或减少一固定值,如变量每次变化后可以依次为"张三r、"张
三2"等;
方式三、由多个值构成,有几个值就生成几条记录,且可以嵌套,如一 个用户有同一用户名命名的多个邮箱,此处的多个邮箱相当于多个值,而用 户名本身又是一个变量,其可以嵌套于邮箱之中,这样就可以生成多条记录, 例如,对于用户名"张三1",可生成的邮箱有"张三l@yahoo.cn"、"张三 l@msn.com"等多条记录。
参见图2,其是根据本发明实施例的测试数据生成装置的结构示意图,其 包括
数据生成器(DataGenerator) 201,用于协调模板解析器、模板合成器和 文件存储器配合操作;也就是说,数据生成器是整个装置的入口,负责协调 模板解析器、模板合成器和文件存储器共同完成测试数据生成任务。
模板解析器(TemplateParser) 202,用于在数据生成器的控制下,解析 已配置的模板文件,识刘所述模板文件中的变量和固定值部分;
才莫板文件就是一个普通的文本文件,定义了测试数据的原始语句,动态 部分用变量表示,静态部分用固定值表示。整个装置就根据这个冲莫4反文件来 生成最终的测试数据。
模板合成器(TemplateMerger) 203,用于在数据生成器的控制下,根据 所述变量的类型以及所述变量的生成方式,生成真实的数据,依次用真实的 数据替换所述变量,生成批量测试数据的动态部分,4艮据所述固定值部分生 成批量测试数据的静态部分;合并所述测试数据的动态部分和静态部分,生成批量的测试数据;
上述,生成真实数据的过程,也就是根据具体已设定的变量的类型以及 变量的生成方式,在变量每次变化后得到的结果,例如,对于变量的生成方
式为以数值的方式递增或递减时,当基数value的值为10000时,该类型的 变量每次变化后生成的真实数据依次为10001、 10002等;其他的变量生成方 式不再举例i兑明。
文件存储器(FileStorer) 204,用于在凄t据生成器的控制下,将所述批量 的测试数据存储到位于本地的结果文件中。该本地可以是如硬盘等存储器。
结果文件也是一个普通地文本文件,保存最终生成的测试数据。这些数 据可以直接导入数据库中使用。
上述变量的生成方式包括以数值的方式递增或递减,以字符的方式递增 或递减,或者,由多个值构成且有几个值就生成几条记录,且可以嵌套。
参见图3,其是根据本发明实施例的批量生成测试数据的流程图。
步骤l,设置模板文件,所述模板文件包括待生成测试数据的原始语句, 所述原始语句中包含用变量表示的测试凌t据的动态变化部分以及固定值部 分;本例中,模板文件具体如下,其中#表示解释说明性语句,sql表示模板 文件中实际的原始语句
弁向USER表中插入一条数据,id和name都是变量
sql.create.l=INSERT INTO USER(ID,NAME) VALUES ({id},{name});
弁向USER一ADD樣中增加一条数据,id和email是变量,country是固定值 "中国"
sql.create.2=INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES ((id》,"中国",(email));
弁下面三行表示第一个变量的名字是id,类型是A,值为1000000。对于A 类变量,值以数值的方式递增,基数为value的值。 sql.param. 1 .name=id sql.param. 1 .type=A sql.param. 1 .value=l 000000弁下面三行表示第二个变量的名字是name,类型是B,值为"张三"。对于 B类变量,值以字符的方式递增,基数为0。 sql.param.2.name=name sql.param.2.type=B sql.param.2.value:张三
存下面三行表示第三个变量的名字是email,类型是C。对于C类变量,可 以包括多个值,有几个值就生成几条记录,而且变量可以嵌套。 sql.param.3 .name-email sql.param.3 .type=C
sql.param.3 .value={name} @yahoo.cn, {name} @msn. com, {name} @alipay.c
om
#生成8组数据 sql.num=8
步骤2 5,数据生成器接收运行请求,控制模板解析器开始操作,所述 才莫板解析器解析所述模板文件,识别所述模板文件中的变量和固定值部分; 具体的,模板解析器从模板文件中获取原始语句,并对该原始语句进行解析,
从而识别出模板文件中的变量和固定值部分。
步骤6,当对模板文件解析完毕后,数据生成器控制模板合并器开始操 作,模板合并器根据所述变量的类型以及所述变量的生成方式,生成真实的
数据,依次用真实的数据替换所述变量,生成批量测试数据的动态部分,根 据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据的动态 部分和静态部分,生成批量的测试数据;
所述变量的生成方式包括以数值的方式递增或递减,以字符的方式递增 或递减,或者,由多个值构成且有几个值就生成几条记录,且可以嵌套。步骤7 8,生成批量的测试数据后,数据生成器控制文件存储器开始操 作,文件存储器将所述批量的测试数据存储到结果文件中。
针对前述模板文件,所生成的测试数据如下
INSERT INTO USER(ID,NAME) VALUES (1000000,'张三0');
INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三0⑨yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三0(gmsn.com'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (1000000,'中国','张三0②alipay.com');
INSERT INTO USER(ID,NAME) VALUES (100000l,'张三l');
INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (1000000,'中国','张三l@yahoo.cn'); INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三l@msn.com'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三l@alipay.com');
INSERT INTO USER(ID,NAME) VALUES (1000002,'张三2');
INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三2⑥yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三2(gmsn.com'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三2⑨alipay.com');
INSERT INTO USER(ID,NAME) VALUES (1000003,'张三3');
INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三3⑨yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三3@111311.(;0111'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三3⑨alipay.com');
INSERT INTO USER(ID,NAME) VALUES (1000004,'张三4');
INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三4⑨yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三4(gmsn.com'); INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三4⑨alipay.com');
INSERT INTO USER(ID,NAME) VALUES (1000005,'张三5');INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三5⑨yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三5(^msn.com'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (1000000,'中国','张三5⑨alipay.com');
INSERT INTO USER(ID,NAME) VALUES (1000006,'张三6');
INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三6⑨yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三6②msn.com'); INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三6⑨alipay.com');
INSERT INTO USER(ID,NAME) VALUES (1000007,'张三7');
INSERT INTO USER一ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三7②yahoo.cn'); INSERT INTO USER—ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三7(gmsn.com'); INSERT INTO USER_ADDR(ID,COUNTRY,EMAIL) VALUES (IOOOOOO,'中国','张三7⑥alipay.com');
commit;
至此,根据上面配置的模板文件生成了8组测试数据,完成了批量测试数 据的生成操作。上述批量测试数据每组4条,其中1条是主表数据即针对USER 表的数据,其余3条是与USER^存在关联的关联表数据即针对USER一ADDR 表的数据。
在此之后还可以包4舌
步骤9 ,将所述结果文件中的批量测试数据导入到数据库中存在关联关系 的各个数据表中。
应用本发明提供的方法、系统和装置,即便是一个不懂数据库的人,也 可以在很短的时间内生成大量的复杂的测试数据,并可以确保生成的数据是 正确的,同时,可以准确地处理多表关联的数据。不但提高了工作效率,而 且降低了测试数据的出错几率。应用本发明实施例提供的方法、系统和装置, 筒单、灵活,可以创造任何复杂的数据,从而满足各种复杂的业务需求。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均 包含在本发明的保护范围内。
权利要求
1、一种批量生成测试数据的方法,其特征在于,包括设置模板文件,所述模板文件包括待生成测试数据的原始语句,所述原始语句中包含用变量表示的测试数据的动态变化部分以及固定值部分;所述方法还包括由数据生成器协调模板解析器、模板合成器和文件存储器配合操作,其中,模板解析器解析所述模板文件,识别所述模板文件中的变量和固定值部分;模板合成器根据所述变量的类型以及所述变量的生成方式,生成真实的数据,依次用真实的数据替换所述变量,生成批量测试数据的动态部分,根据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据的动态部分和静态部分,生成批量的测试数据;文件存储器将所述批量的测试数据存储到结果文件中。
2、 根据权利要求1所述的方法,其特征在于,还包括将所述结果文件 中的批量测试数据导入到数据库的内存在关联的各个表中。
3、 根据权利要求1所述的方法,其特征在于,所述变量的生成方式包括 以数值的方式递增或递减,以字符的方式递增或递减,或者,由多个值构成 且有几个值就生成几条记录,且可以嵌套。
4、 一种批量生成测试数据的系统,其特征在于,包括配置单元,用于设置模板文件,所述模板文件包括待生成测试数据的原 始语句,所述原始语句中包含用变量表示的测试数据的动态变化部分以及固 定值部分;测试数据生成装置,用于解析所述才莫4反文件,识别所述冲莫板文件中的变 量和固定值部分;根据所述变量的类型以及所述变量的生成方式,生成真实 的数据,依次用真实的数据替换所述变量,生成批量测试数据的动态部分, 根据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据的动 态部分和静态部分,生成批量的测试数据;将所述批量的测试数据存储到结 果文件中。
5、 根据权利要求4所述的系统,其特征在于,所述系统还包括 导入单元,用于将所述结果文件中的批量测试数据导入到数据库的内存在关联的各个表中。
6、 根据权利要求4所述的系统,其特征在于,所述变量的生成方式包括 以数值的方式递增或递减,以字符的方式递增或递减,或者,由多个值构成 且有几个值就生成几条记录,且可以嵌套。
7、 一种测试数据生成装置,其特征在于,包括数据生成器,用于协调模板解析器、模板合成器和文件存储器配合操作;模板解析器,用于在数据生成器的控制下,解析已配置的模板文件,识 别所述模板文件中的变量和固定值部分;模板合成器,用于在数据生成器的控制下,根据所述变量的类型以及所 述变量的生成方式,生成真实的数据,依次用真实的数据替换所述变量,生 成批量测试数据的动态部分,根据所述固定值部分生成批量测试数据的静态 部分;合并所述测试数据的动态部分和静态部分,生成批量的测试数据;文件存储器,用于在数据生成器的控制下,将所述批量的测试数据存储 到结果文件中。
8、 根据权利要求7所述的装置,其特征在于,所述变量的生成方式包括 以数值的方式递增或递减,以字符的方式递增或递减,或者,由多个值构成 且有几个值就生成几条记录,且可以嵌套。
全文摘要
本发明公开了一种批量生成测试数据的方法、系统和装置,所述方法包括设置模板文件,所述模板文件包括待生成测试数据的原始语句,所述原始语句中包含用变量表示的测试数据的动态变化部分以及固定值部分;所述方法还包括解析所述模板文件,识别所述模板文件中的变量和固定值部分;根据所述变量的类型以及所述变量的生成方式,依次用真实的数据替换所述变量,生成批量测试数据的动态部分,根据所述固定值部分生成批量测试数据的静态部分;合并所述测试数据的动态部分和静态部分,生成批量的测试数据;将所述批量的测试数据存储到结果文件中。应用本发明,可以确保生成的数据是正确的,同时,可以准确地处理多表关联的数据。
文档编号G06F11/36GK101430661SQ200810180930
公开日2009年5月13日 申请日期2008年11月18日 优先权日2008年11月18日
发明者尤占涛 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1