用于生成数据库制造技术

技术编号:39837909 阅读:13 留言:0更新日期:2023-12-29 16:23
本发明专利技术提供了一种用于生成数据库

【技术实现步骤摘要】
用于生成数据库SQL测试用例的方法、存储介质和设备


[0001]本专利技术涉及数据库
,特别是涉及一种用于生成数据库
SQL
测试用例的方法

一种机器可读存储介质和一种计算机设备


技术介绍

[0002]数据库智能模糊测试系统是一种用于检测智能数据库质量与安全性的工具,该系统能够自动生成数据库的
SQL
测试用例,以对关系型数据库

实时数据库等数据库进行漏洞的挖掘,获取数据库的高危漏洞

[0003]在数据库智能模糊测试系统生成
SQL
测试用例的过程中,语法树的遍历算法是自动生成
SQL
测试用例的关键,现有技术中的语法树遍历算法在遍历语法树时,每个元素最终都会被计算出一个具体列表值

由于在生成
SQL
测试用例时,所编写的
SQL
规则文件中,元素可能会进行自身调用,也可能被其他元素多次调用,因此造成所生成的
SQL
测试用例数据量过大,导致数据库的内存消耗增加


技术实现思路

[0004]鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的用于生成数据库
SQL
测试用例的方法

存储介质和设备,能够解决现有技术中所生成的
SQL
测试用例数据量过大,达到减小数据库内存消耗的目的

[0005]具体地,为至少解决上述技术问题,本专利技术提供了一种用于生成数据库
SQL
测试用例的方法,包括:
[0006]获取
SQL
规则文件,并对所述
SQL
规则文件进行词法语法解析,以生成所述
SQL
规则文件对应的语法树;
[0007]采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,并在所述遍历过程中,根据各元素的单元素最大调用深度和所有元素的最大总调用深度进行深度递归计算

[0008]根据本专利技术的一个实施例,
[0009]所述的对所述
SQL
规则文件进行词法语法解析,包括:
[0010]采用预设拆分规则对所述
SQL
规则文件的竖线规则进行处理,以得到相应的元素集合

[0011]根据本专利技术的一个实施例,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:
[0012]获取所述
SQL
规则文件的
SQL
语法定义中空格分隔的元素;
[0013]按照预设拼接规则,对空格分隔的元素进行拼接处理

[0014]根据本专利技术的一个实施例,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:
[0015]获取所述
SQL
规则中各
SQL
算子的配置参数;
[0016]根据所述配置参数确定是否使用相应的
SQL
算子是否出现和出现次数

[0017]根据本专利技术的一个实施例,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:
[0018]获取预设字符长度和预设用例数量;
[0019]根据所述预设字符长度控制所述
SQL
测试用例中
SQL
语句的字符长度,根据所述预设用例数量控制所述
SQL
测试用例的数量

[0020]根据本专利技术的一个实施例,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:
[0021]在生成所述
SQL
测试用例中的
SQL
语句时,增加所述
SQL
语句执行的上下文语境

[0022]根据本专利技术的一个实施例,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:
[0023]采用最小生成
SQL
语句算法获取元素组合,以控制所述
SQL
测试用例的规模

[0024]根据本专利技术的一个实施例,所述的采用最小生成
SQL
语句算法获取元素组合,包括:
[0025]将各元素对应的列表内容分别加载到对应的栈结构中;
[0026]根据所述栈结构的后进先出的特点,将各所述栈结构中的出栈元素做算子运算以生成一组序列,直到各所述栈结构的内容为空

[0027]另一方面,本专利技术还提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时,实现根据上述任一项实施例所述的用于生成数据库
SQL
测试用例的方法

[0028]又一方面,本专利技术还提供了一种计算机设备,包括存储器

处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,所述处理器执行所述机器可执行程序时,实现根据上述任一项实施例所述的用于生成数据库
SQL
测试用例的方法

[0029]本专利技术所提供的技术方案,在获取
SQL
规则文件后,对该
SQL
规则文件进行解析以生成
SQL
规则文件对应的语法树,然后采用预设深度优化算法遍历该语法树,以生成数据库的
SQL
测试用例,并且在采用预设深度优化算法对
SQL
规则文件对应的语法树进行遍历时,根据各元素的单元素最大调用深度和所有元素的最大总调用深度进行深度递归计算,从而防止在进行递归计算时递归深度过大而导致计算时间太长,以及减少生成的相似
SQL
测试用例的数量,减小
SQL
测试用例的规模,达到减小数据库内存消耗的目的

[0030]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的

优点和特征

附图说明
[0031]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例

附图中相同的附图标记标示了相同或类似的部件或部分

本领域技术人员应该理解,这些附图未必是按比例绘制的

附图中:
[0032]图1是根据本专利技术一个实施例的一种生成数据库
SQL
测试用例的方法的示意性流程图;
[0033]图2是根据本专利技术一个实施例的获取
SQL
规则文件和对
...

【技术保护点】

【技术特征摘要】
1.
一种用于生成数据库
SQL
测试用例的方法,其特征在于,包括:获取
SQL
规则文件,并对所述
SQL
规则文件进行词法语法解析,以生成所述
SQL
规则文件对应的语法树;采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,并在所述遍历过程中,根据各元素的单元素最大调用深度和所有元素的最大总调用深度进行深度递归计算
。2.
根据权利要求1所述的用于生成数据库
SQL
测试用例的方法,其特征在于,所述的对所述
SQL
规则文件进行词法语法解析,包括:采用预设拆分规则对所述
SQL
规则文件的竖线规则进行处理,以得到相应的元素集合
。3.
根据权利要求1所述的用于生成数据库
SQL
测试用例的方法,其特征在于,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:获取所述
SQL
规则文件的
SQL
语法定义中空格分隔的元素;按照预设拼接规则,对空格分隔的元素进行拼接处理
。4.
根据权利要求1所述的用于生成数据库
SQL
测试用例的方法,其特征在于,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:获取所述
SQL
规则中各
SQL
算子的配置参数;根据所述配置参数确定是否使用相应的
SQL
算子是否出现和出现次数
。5.
根据权利要求1所述的用于生成数据库
SQL
测试用例的方法,其特征在于,所述的采用预设深度优化算法遍历所述语法树以生成数据库的
SQL
测试用例,包括:获取预设字符长度和预设用...

【专利技术属性】
技术研发人员:王静阮青松
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

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

1