首页> 中国专利> 一种数据库的测试数据的自动生成方法、装置及测试系统

一种数据库的测试数据的自动生成方法、装置及测试系统

摘要

本发明提供了一种数据库的测试数据的自动生成方法、装置及测试系统,所述方法包括:选择需要生成测试数据的数据库表;查询所述数据库表的参数;根据所述数据库表的所述参数选择所述测试数据的生成规则,生成测试数据;选择所述测试数据的插入规则,基于所述插入规则将生成的所述测试数据插入到数据库表中。本发明解决了字段关联外键识别的技术难题,提供了多种灵活的测试数据生成规则,提出智能化插入规则,使数据插入速度大幅提供,提供了用户界面,易于操作。

著录项

  • 公开/公告号CN105512042A

    专利类型发明专利

  • 公开/公告日2016-04-20

    原文格式PDF

  • 申请/专利权人 广东金赋信息科技有限公司;

    申请/专利号CN201510981715.4

  • 发明设计人 区洪杨;张伟昌;

    申请日2015-12-22

  • 分类号G06F11/36(20060101);

  • 代理机构北京孚睿湾知识产权代理事务所(普通合伙);

  • 代理人李丹丹

  • 地址 528200 广东省佛山市南海区桂城深海路17号瀚天科技城A区5号楼三楼

  • 入库时间 2023-12-18 15:29:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-04

    授权

    授权

  • 2016-11-16

    著录事项变更 IPC(主分类):G06F11/36 变更前: 变更后: 申请日:20151222

    著录事项变更

  • 2016-05-18

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20151222

    实质审查的生效

  • 2016-04-20

    公开

    公开

说明书

技术领域

本发明涉及测试数据的自动生成方法、装置及测试系统,特别是 涉及一种在数据库中自动地生成测试数据的自动生成方法、装置及测 试系统。

背景技术

在软件测试中非常重要的一个工作就是测试数据的准备和维护, 制作测试数据是软件测试执行前重要和必要的一个环节,而这个工作 恰恰是繁琐、费时、重复而极容易出错的,所以找到一种通用的、可 视化的方法来生成测试数据是非常有意义和重要的事。尤其在数据库 自动化测试和性能测试领域,需要大量测试数据来进行测试,测试数 据的需求量会是十万级、百万级甚至千万级,并且需要的数据一般不 会是固化单一数据,而是有一定规则的数据,数据之间还会存在着各 种的关系,因此测试数据的准备工作需要耗费大量的人力和时间。而 且,生成和插入的测试数据量越大,测试数据规则就越复杂,所耗费 的人力就越多,现有的测试工具数据生成规则单一,基本上靠人手工 来生成和维护,生成的数据可靠性差,数据之间的整合性差,给测试 工作带来了很大的困扰。

特别是在现有的数据库测试数据生成时,无法对数据库表中的字 段是否关联外键进行判断,导致生成的测试数据不准确,无法检验数 据库的表之间的关联数据是否正确。

现有技术中,将生成的测试数据通过java的批处理操作插入到 数据库中,由于java的批处理插入数据库会涉及效率问题,字段数 量、大小、类型等不同,会直接影响到插入效率,而批量插入量不同 也会影响到插入效率。

现有的数据库测试无法进行可视操作,操作效率低下,准确率低 下。

发明内容

本发明的目的就是为了弥补上述现有技术中的缺陷,提供了一种 数据库的测试数据的自动生成方法,该方法包括以下步骤:

S1、选择需要生成测试数据的数据库表;

S2、查询所述数据库表的参数;

S3、根据所述数据库表的所述参数来选择所述测试数据的生成规 则,生成测试数据;以及

S4、选择所述测试数据的插入规则,基于所述插入规则将生成的 所述测试数据插入到所述数据库表中。

更进一步地,所述参数包括:所述数据库表的字段名称、字段类 型、字段是否唯一、字段是否可为空、以及字段是否为关联外键。

更进一步地,通过编程语句获取所述字段名称、字段类型、字段 是否唯一以及字段是否可为空,其中,所述编程语句包括java语句。

更进一步地,所述步骤S2还包括获取所述字段是否为关联外键 的步骤,用于获取所述字段是否为关联外键,包括:

S21、获取该数据库表的建表语句;以及

S22、解析所述建表语句,确定所述建表语句中是否存在外键, 如果存在,所述字段为关联外键,并基于所述建表语句确定与所述外 键相关联的其他数据库表。

更进一步地,所述测试数据的所述生成规则包括:根据随机数生 成、通过输入生成、根据配置文件生成、根据数据库中已有的数据库 表中的数据生成,其中,生成每个所述测试数据的所述生成规则相同 或者不同。

更进一步地,所述步骤S4还包括生成所述插入规则的步骤,用 于生成所述插入规则,包括:

S41、生成存储有插入规则的插入配置文件;

S42、初始化所述插入配置文件,在所述插入配置文件中初始化 每条插入数据的初始插入量;

S43、确定待插入的字段的数量、大小和类型,使用所述初始插 入量进行数据的插入,并确定初始插入速度;以及

S44、调整所述初始插入量,并记录相应的插入速度,进行多次 调整以确定最大插入速度及相应的数据插入量,使用与所述最大插入 速度相应的所述数据插入量来更新所述插入配置文件中的所述初始 插入速度,生成所述插入配置文件。

本申请还提供了一种数据库的测试数据的自动生成装置,包括:

选择模块,用于选择需要生成测试数据的数据库表;

查询模块,用于查询所述数据库表的参数;

测试数据生成模块,用于根据所述数据库表的所述参数来选择所 述测试数据的生成规则,生成测试数据;以及

测试数据插入模块,用于选择所述测试数据的插入规则,基于所 述插入规则将生成的所述测试数据插入到所述数据库表中。

更进一步地,所述参数包括:所述数据库表的字段名称、字段类 型、字段是否唯一、字段是否可为空、以及字段是否为关联外键。

更进一步地,通过编程语句获取所述字段名称、字段类型、字段 是否唯一以及字段是否可为空,其中,所述编程语句包括java语句。

更进一步地,所述查询模块包括关联外键获取模块,用于获取所 述字段是否为关联外键,所述关联外键获取模块包括:

获取模块,用于获取该数据库表的建表语句;以及

解析模块,用于解析所述建表语句,确定所述建表语句中是否存 在外键,如果存在,所述字段为关联外键,并基于所述建表语句确定 与所述外键相关联的其他数据库表。

更进一步地,所述测试数据的所述生成规则包括:根据随机数生 成、通过输入生成、根据配置文件生成、根据数据库中已有的数据库 表中的数据生成,其中,生成每个所述测试数据的所述生成规则相同 或者不同。

更进一步地,所述测试数据插入模块还包括插入规则生成模块, 用于生成所述插入规则,所述插入规则生成模块包括:

插入配置文件生成模块,用于生成存储有插入规则的插入配置文 件;

初始化模块,用于初始化所述插入配置文件,在所述插入配置文 件中初始化每条插入数据的初始插入量;

确定模块,用于确定待插入的字段的数量、大小和类型,使用所 述初始插入量进行数据的插入,并确定初始插入速度;以及

调整模块,用于调整所述初始插入量,并记录相应的插入速度, 进行多次调整以确定最大插入速度及相应的数据插入量,使用与所述 最大插入速度相应的所述数据插入量来更新所述插入配置文件中的 所述初始插入速度,生成所述插入配置文件。

本申请还提供了一种数据库测试系统,还包括所述数据库的测试 数据的自动生成装置;

其中,用户通过所述用户界面操作所述测试数据的自动生成装置, 生成所述测试数据并插入到所述数据库中。

本发明的技术效果在于:解决了字段关联外键识别难的技术难题, 提供了多种灵活的测试数据生成规则,提出智能化插入规则,使数据 插入速度大幅提高,并提供了用户界面,易于用户操作,能够大量且 高速地生成符合要求的测试数据,提高了软件开发与测试的效率。

附图说明

图1为本发明的数据库的测试数据的自动生成方法的流程图;

图2为本发明的确定字段是否关联外键的流程图;

图3为本发明的生成插入规则的流程图;

图4为本发明的数据库的测试数据的自动生成装置的结构图;

图5为本发明的查询模块的结构图;

图6为本发明的测试数据插入模块的结构图;

图7为本发明的数据库测试系统的示意图。

具体实施方式

下面,参照附图来说明本发明涉及的实施方式,不过本发明不局 限于此。以下说明的实施方式的结构要素能够适地当组合。此外,也 存在不使用一部分结构要素的情况。

数据库的测试数据的自动生成方法

图1示意性地示出了本发明的数据库的测试数据的自动生成方 法。该自动生成方法用于在软件开过与测试过程中,自动地在目标数 据库中,依据一定的生成规则和插入规则来生成测试数据。具体而言, 该方法包括以下步骤:S1、选择需要生成测试数据的数据库表;S2、 查询所述数据库表的参数;S3、根据所述数据库表的所述参数来选择 所述测试数据的生成规则,生成测试数据;以及S4、选择所述测试 数据的插入规则,基于所述插入规则将生成的所述测试数据插入到所 述数据库表中。

下面,详细地说明本发明的数据库的测试数据的自动生成方法的 详细步骤。

数据库表以及字段

数据库是以一定方式储存在一起、能为多个用户共享、具有尽可 能小的冗余度、与应用程序彼此独立的数据集合。数据库由数据库表 组成,其中,数据库表是数据库中存储数据的一种数据组织形式,具 有多个字段,举例而言,用户需要借助数据库来保存一个班级中所有 学生的信息,该情况下,可以以班级为单位创建一个数据库,命名为 “class”,这个数据库中包括一个学生基本信息表,命名为“stu”, 一个是学生的科目考试成绩表,命名为“score”。学生基本信息表包 括“姓名”、“性别”、“学号”这三个字段,每个字段都可以存储一个 特定类型的信息,比如“张三”、“男”、“200110010”。科目考试成绩 表与学生基本信息表相同,包括“学号”、“科目”、“成绩”这三个字 段,可以存储例如“200110010”、“语文”、“80”。其中,每个字段都 具有特定的属性,代表不同的含义。这里,在进行测试数据准备的时 候,就需要知晓学生基本信息表与科目考试成绩表这两个表之间的关 系以及每个字段的属性,换而言之,就需要知晓待插入数据的插入规 则。否则,准备的插入数据之间就不符合数据内在的逻辑结构,从而 导致所准备的数据是无效的,或者至少是质量不高的数据。

数据库表字段的参数

为对数据库表进行操作,比如插入或者修改数据库表中的数据, 需要获得其参数,参数一般包括:字段名称、字段类型、字段是否唯 一、字段是否可为空、字段是否为关联外键。数据库表中字段属性唯 一的就可作为主键,主键的要求是所存储的数据是唯一的就可以,可 以是一个字段,也可以是组合字段。关联外键的含义是通过一个数据 库表中的某个字段可以外部连接到其他的数据库表,如上述学生基本 信息表和科目考试成绩表这两个表的“学号”字段,可以是关联外键。

一般来说,通过编程语句可以获取字段名称、字段类型、字段是 否唯一及字段是否可为空,编程语句可以是Java语句、C、C++、VC++ 等各种编程语言,本发明中对于编程语言没有限定,可以是任何的编 程语言,只要能够实现对数据库表生成语句实现解析就可以。

字段是否是关联外键的确定

但是,现有的编程语言例如Java语句无法获取一个字段是否关 联外键的信息,本申请提出了确定字段是否关联外键的方法,如图2 所示,包括:S21、获取该数据库表的建表语句;S22、解析所述建表 语句,确定所述建表语句中是否存在外键,即是否存在类似于 “FOREIGNKEY”的语句,如果存在,相应字段为关联外键,并基于 所述建表语句确定与所述外键相关联的其他数据库表。

该步骤一般作为查询步骤的子步骤,当然也可以独立执行。

测试数据的生成规则

为灵活的生成测试数据,就需要对测试数据的生成规则进行定义, 测试数据的生成规则是指按照什么方式来生成测试数据,本发明中, 测试数据的生成规则包括但是不限于根据随机数来生成测试数据、通 过手工输入来生成测试数据、通过配置文件来生成测试数据、引用数 据库中已有的数据表中的数据来生成测试数据等。其中,每一字段的 数据可通过不同的方式生成,也可以通过相同的方式生成,在此并不 限定于生成方式,可以根据具体的需求来定。

测试数据的插入规则

由于使用编程语言的批处理插入数据库会涉及效率问题,字段数 量、大小、类型等不同,会直接影响到插入效率,而批量插入量不同 也会影响到插入效率。因此,本发明能够通过程序智能选择去配置批 量插入量来达到一个最优插入速度来插入到数据库。而智能选择批量 插入量是通过配置智能选择插入规则文件去实现,由于插入规则是能 够具体规则的配置文件,因此该智能选择规则可以通过不断的测试之 后不断地去优化,直到寻找到最优的规则文件和最快的插入速度。图 3示出了生成所述插入规则的步骤,用于生成所述插入规则,包括: S41、生成存储插入规则的插入配置文件;S42、初始化所述插入配 置文件,在所述插入配置文件中初始化每次插入数据的初始插入量; S43、确定待插入的字段的数量、大小和类型,使用所述初始插入量 进行数据的插入,并确定初始插入速度;以及S44、调整所述初始插 入量,并记录相应的插入速度,进行多次调整,以确定最大插入速度 及相应的数据插入量,使用与最大插入速度相应的数据插入量,来更 新插入配置文件中的初始插入速度,生成插入配置文件。

这样通过智能的计算,针对不同的数据表、数据类型等,就能够 确定出最合适的插入量,从而提高插入速度。

本发明的上述方法可通过计算机程序实现,计算机至少具备 CPU(CentralProcessingUnit:中央处理单元)、存储控制程序的 ROM(ReadOnlyMemory:只读存储器)、作为CPU的作业区域使用的 RAM(RandomAccessMemory)以及非易失性存储器。非易失性存储 器包括快闪存储器以及硬盘驱动器中的至少一个。所述计算机程序可 以存储在存储器中,存储器可以为以下中任何一个:随机存储器、只 读存储器、光或磁存储器,或者能够存储数字信息的任何合适存储器。 所述存储器可以是系统存储器、可为系统访问的其他存储器或协同处 理器的特定本地存储器。但是不限于此,也可以通过特定的物理电路 来实现,物理电路包括集成电路、大规模集成电路、VLSI(超大规模 集成电路)、FPGA等。

根据本发明的数据库的测试数据的自动生成方法,解决了字段关 联外键识别难的技术难题,能够提供多种灵活的测试数据生成规则, 实现智能化插入,同时能够大量且高速地生成符合要求的测试数据, 提高了软件开发与测试的效率。

数据库的测试数据的自动生成装置

下面,基于图4-图6来说明本发明提供的数据库的测试数据的 自动生成装置。图4示出了本发明的数据库的测试数据的自动生成装 置1,包括:选择模块11,用于选择需要生成测试数据的数据库表; 查询模块12,用于查询数据库表的参数;测试数据生成模块13,用 于根据数据库表的参数选择测试数据的生成规则,生成测试数据;以 及测试数据插入模块14,用于选择测试数据的插入规则,基于插入 规则将生成的测试数据插入到数据库表中。

在查询模块12中设有关联外键获取模块121,如图5所示,其 包括:获取模块1211,用于获取该数据库表的建表语句;解析模块 1212,用于解析建表语句,确定建表语句中是否存在“FOREIGNKEY”, 如果存在,所述字段为关联外键,并基于所述建表语句确定与所述外 键相关联的另一数据库表。

一般来说,关联外键获取模块121可设置于查询模块12中,当 然,其可以是一个独立的模块。

如图6所述,在测试数据插入模块14中包括插入规则生成模块 141,其中包括:插入配置文件生成模块1411,用于生成存储插入规 则的插入配置文件;初始化模块1412,用于初始化插入配置文件, 在插入配置文件中初始化每条插入数据的初始插入量;确定模块1413, 用于确定待插入的字段的数量、大小和类型,使用初始插入量进行数 据的插入,并确定初始插入速度;调整模块1414,用于调整初始插 入量,并记录相应的插入速度,经过多次调整,以确定最大插入速度 及相应的数据插入量,使用与最大插入速度相应的所述数据插入量更 新插入配置文件中的所述初始插入速度,生成插入配置文件。

一般来说,插入规则生成模块141可设置于测试数据插入模块 14中,当然,其可以是一个独立的模块。

本发明的数据库的测试数据的自动生成装置1可以通过集成电 路技术实现,如VLSI(超大规模集成电路)、FPGA等,也可以通过计 算机程序模块实现,程序模块包括用来执行特定的任务或实施特定的 抽象数据类型的例行程序、程序、构件、数据结构等等。而且,本领 域技术人员将意识到,本发明方法可以通过其它计算机系统配置而被 实践,包括单处理器或多处理器计算机系统、小型计算机、大型计算 机、以及个人计算机、手持计算设备、基于微处理器的或可编程的消 费者电子设备等等,它们中的每个设备可以操作地被耦合到一个或多 个相关联的设备。

根据本发明的数据库的测试数据的自动生成装置,解决了字段关 联外键识别难的技术难题,能够提供多种灵活的测试数据生成规则, 实现智能化插入,同时能够大量且高速地生成符合要求的测试数据, 提高了软件开发与测试的效率。

数据库的测试数据的自动生成系统

下面,基于图7来说明本发明提供的数据库的测试数据的自动生 成系统。图7示出了,本申请的一种数据库测试系统,包括用户界面 和数据库,还包括如上所述的数据库的测试数据的自动生成装置;其 中,用户通过用户界面操作测试数据的自动生成装置,生成测试数据 并插入到数据库表中。用户使用该用户界面,通过该自动生成装置可 以登录数据库,查询数据库中的数据库表及其字段,该自动生成装置 会在该用户界面上返回数据库表字段、字段的类型、字段是否唯一、 字段是否可为空、字段是否关联外键、该数据库表的建表语句等。用 户在该界面中选择字段的生成规则和/或插入规则,然后选择执行操 作,该自动生成装置根据用户配置的生成规则及插入规则在数据库表 中插入(生成)数据,然后返回结果界面。用户界面是人机交互接口, 供用户输入指定信息,并且按照特定的显示规则显示设备呈现给人的 各种结果。在本申请中,用户通过用户界面可以输入要登陆的数据库 的服务器名、数据库名、用户以及密码等信息,返回给用户的信息就 是指上述数据库表字段、字段的类型、字段是否唯一、字段是否可为 空、字段是否关联外键、该数据库表的建表语句等信息。

根据本发明的数据库的测试数据的自动生成系统,解决了字段关 联外键识别难的技术难题,能够提供多种灵活的测试数据生成规则, 实现智能化插入,同时能够大量且高速地生成符合要求的测试数据, 提高了软件开发与测试的效率,同时由于能够通过可视化用户界面来 选择目标数据库表以及生成规则以及插入规则,对于用户而言,操作 形象直观,能够提高软件开发与测试的效率。

在本申请中,根据存储模型划分,数据库类型主要可分为:网状 数据库(NetworkDatabase)、关系数据库(RelationalDatabase)、 树状数据库(HierarchicalDatabase)、面向对象数据库 (Object-orientedDatabase)等,但是不限于此。其中,关系数据库 包括例如Oracle、DB2、Sybase、MSSQLServer、Informax、MySQL 等,但是不限于此。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例 的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其 他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例 看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求 而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和 范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标 记视为限制所涉及的权利要求。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号