一种数据库的测试数据的自动生成方法、装置及测试系统的制作方法
【技术领域】
[0001]本发明涉及测试数据的自动生成方法、装置及测试系统,特别是涉及一种在数据库中自动地生成测试数据的自动生成方法、装置及测试系统。
【背景技术】
[0002]在软件测试中非常重要的一个工作就是测试数据的准备和维护,制作测试数据是软件测试执行前重要和必要的一个环节,而这个工作恰恰是繁琐、费时、重复而极容易出错的,所以找到一种通用的、可视化的方法来生成测试数据是非常有意义和重要的事。尤其在数据库自动化测试和性能测试领域,需要大量测试数据来进行测试,测试数据的需求量会是十万级、百万级甚至千万级,并且需要的数据一般不会是固化单一数据,而是有一定规则的数据,数据之间还会存在着各种的关系,因此测试数据的准备工作需要耗费大量的人力和时间。而且,生成和插入的测试数据量越大,测试数据规则就越复杂,所耗费的人力就越多,现有的测试工具数据生成规则单一,基本上靠人手工来生成和维护,生成的数据可靠性差,数据之间的整合性差,给测试工作带来了很大的困扰。
[0003]特别是在现有的数据库测试数据生成时,无法对数据库表中的字段是否关联外键进行判断,导致生成的测试数据不准确,无法检验数据库的表之间的关联数据是否正确。
[0004]现有技术中,将生成的测试数据通过java的批处理操作插入到数据库中,由于java的批处理插入数据库会涉及效率问题,字段数量、大小、类型等不同,会直接影响到插入效率,而批量插入量不同也会影响到插入效率。
[0005]现有的数据库测试无法进行可视操作,操作效率低下,准确率低下。
【发明内容】
[0006]本发明的目的就是为了弥补上述现有技术中的缺陷,提供了一种数据库的测试数据的自动生成方法,该方法包括以下步骤:
[0007]S1、选择需要生成测试数据的数据库表;
[0008]S2、查询所述数据库表的参数;
[0009]S3、根据所述数据库表的所述参数来选择所述测试数据的生成规则,生成测试数据;以及
[0010]S4、选择所述测试数据的插入规则,基于所述插入规则将生成的所述测试数据插入到所述数据库表中。
[0011]更进一步地,所述参数包括:所述数据库表的字段名称、字段类型、字段是否唯一、字段是否可为空、以及字段是否为关联外键。
[0012]更进一步地,通过编程语句获取所述字段名称、字段类型、字段是否唯一以及字段是否可为空,其中,所述编程语句包括java语句。
[0013]更进一步地,所述步骤S2还包括获取所述字段是否为关联外键的步骤,用于获取所述字段是否为关联外键,包括:
[0014]S21、获取该数据库表的建表语句;以及
[0015]S22、解析所述建表语句,确定所述建表语句中是否存在外键,如果存在,所述字段为关联外键,并基于所述建表语句确定与所述外键相关联的其他数据库表。
[0016]更进一步地,所述测试数据的所述生成规则包括:根据随机数生成、通过输入生成、根据配置文件生成、根据数据库中已有的数据库表中的数据生成,其中,生成每个所述测试数据的所述生成规则相同或者不同。
[0017]更进一步地,所述步骤S4还包括生成所述插入规则的步骤,用于生成所述插入规则,包括:
[0018]S41、生成存储有插入规则的插入配置文件;
[0019]S42、初始化所述插入配置文件,在所述插入配置文件中初始化每条插入数据的初始插入量;
[0020]S43、确定待插入的字段的数量、大小和类型,使用所述初始插入量进行数据的插入,并确定初始插入速度;以及
[0021 ] S44、调整所述初始插入量,并记录相应的插入速度,进行多次调整以确定最大插入速度及相应的数据插入量,使用与所述最大插入速度相应的所述数据插入量来更新所述插入配置文件中的所述初始插入速度,生成所述插入配置文件。
[0022]本申请还提供了一种数据库的测试数据的自动生成装置,包括:
[0023]选择模块,用于选择需要生成测试数据的数据库表;
[0024]查询模块,用于查询所述数据库表的参数;
[0025]测试数据生成模块,用于根据所述数据库表的所述参数来选择所述测试数据的生成规则,生成测试数据;以及
[0026]测试数据插入模块,用于选择所述测试数据的插入规则,基于所述插入规则将生成的所述测试数据插入到所述数据库表中。
[0027]更进一步地,所述参数包括:所述数据库表的字段名称、字段类型、字段是否唯一、字段是否可为空、以及字段是否为关联外键。
[0028]更进一步地,通过编程语句获取所述字段名称、字段类型、字段是否唯一以及字段是否可为空,其中,所述编程语句包括java语句。
[0029]更进一步地,所述查询模块包括关联外键获取模块,用于获取所述字段是否为关联外键,所述关联外键获取模块包括:
[0030]获取模块,用于获取该数据库表的建表语句;以及
[0031 ]解析模块,用于解析所述建表语句,确定所述建表语句中是否存在外键,如果存在,所述字段为关联外键,并基于所述建表语句确定与所述外键相关联的其他数据库表。
[0032]更进一步地,所述测试数据的所述生成规则包括:根据随机数生成、通过输入生成、根据配置文件生成、根据数据库中已有的数据库表中的数据生成,其中,生成每个所述测试数据的所述生成规则相同或者不同。
[0033]更进一步地,所述测试数据插入模块还包括插入规则生成模块,用于生成所述插入规则,所述插入规则生成模块包括:
[0034]插入配置文件生成模块,用于生成存储有插入规则的插入配置文件;
[0035]初始化模块,用于初始化所述插入配置文件,在所述插入配置文件中初始化每条插入数据的初始插入量;
[0036]确定模块,用于确定待插入的字段的数量、大小和类型,使用所述初始插入量进行数据的插入,并确定初始插入速度;以及
[0037]调整模块,用于调整所述初始插入量,并记录相应的插入速度,进行多次调整以确定最大插入速度及相应的数据插入量,使用与所述最大插入速度相应的所述数据插入量来更新所述插入配置文件中的所述初始插入速度,生成所述插入配置文件。
[0038]本申请还提供了一种数据库测试系统,还包括所述数据库的测试数据的自动生成装置;
[0039]其中,用户通过所述用户界面操作所述测试数据的自动生成装置,生成所述测试数据并插入到所述数据库中。
[0040]本发明的技术效果在于:解决了字段关联外键识别难的技术难题,提供了多种灵活的测试数据生成规则,提出智能化插入规则,使数据插入速度大幅提高,并提供了用户界面,易于用户操作,能够大量且高速地生成符合要求的测试数据,提高了软件开发与测试的效率。
【附图说明】
[0041]图1为本发明的数据库的测试数据的自动生成方法的流程图;
[0042]图2为本发明的确定字段是否关联外键的流程图;
[0043]图3为本发明的生成插入规则的流程图;
[0044]图4为本发明的数据库的测试数据的自动生成装置的结构图;
[0045]图5为本发明的查询模块的结构图;
[0046]图6为本发明的测试数据插入模块的结构图;
[0047]图7为本发明的数据库测试系统的示意图。
【具体实施方式】
[0048]下面,参照附图来说明本发明涉及的实施方式,不过本发明不局限于此。以下说明的实施方式的结构要素能够适地当组合。此外,也存在不使用一部分结构要素的情况。
[0049]数据库的测试数据的自动生成方法
[0050]图1示意性地示出了本发明的数据库的测试数据的自动生成方法。该自动生成方法用于在软件开过与测试过程中,自动地在目标数据库中,依据一定的生成规则和插入规则来生成测试数据。具体而言,该方法包括以下步骤:S1、选择需要生成测试数据的数据库表;S2、查询所述数据库表的参数;S3、根据所述数据库表的所述参数来选择所述测试数据的生成规则,生成测试数据;以及S4、选择所述测试数据的插入规则,基于所述插入