System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种GBase数据库模糊测试用例生成方法及装置制造方法及图纸_技高网

一种GBase数据库模糊测试用例生成方法及装置制造方法及图纸

技术编号:41239753 阅读:3 留言:0更新日期:2024-05-09 23:52
本发明专利技术提出一种GBase数据库模糊测试用例生成方法及装置,获取被测GBase数据库的元数据;定义语法规则和词法规则,生成Antlr抽象语法树;访问所述Antlr抽象语法树生成SQL语句模板;对生成的SQL语句模板进行识别,生成SQL抽象语法树;访问SQL抽象语法树,生成随机SQL语句;对被测GBase数据库执行所述随机SQL语句,并返回执行结果;从执行结果和数据库状态两大方面进行结果分析;直到生成指定数量的随机SQL语句或数据库崩溃。本发明专利技术使GBase数据库模糊测试时生成的随机SQL文本满足其执行环境,既在语法上能够通过GBase数据库语法解析器的检查,又在语义上符合运行时的数据库环境。

【技术实现步骤摘要】

本专利技术属于数据库,特别是涉及到一种gbase数据库模糊测试用例生成方法及装置。


技术介绍

1、模糊测试是一种自动化的软件测试技术,通常是通过向软件(例如数据库)输入模糊、无效或异常的数据,来测试其对不良输入的反应能力。传统的模糊测试数据生成方法,是通过编程语言生成随机sql文本,但应用于gbase数据库时,由于生成的文本存在与gbase数据库语法无关、语义无关的问题,导致无法通过gbase数据库语法解析器的语法检查,进而导致之后的优化器、计划生成器、执行器等一系列数据库组件都无法被测试到。


技术实现思路

1、本专利技术提出一种gbase数据库模糊测试用例生成方法及装置,解决模糊测试随机生成文本与gbase数据库语法无关和语义无关两个问题。

2、为达到上述目的,本专利技术的技术方案是这样实现的:

3、一种gbase数据库模糊测试用例生成方法,包括:

4、s1、获取被测gbase数据库的元数据;

5、s2、使用antlr文法规则依据gbase数据库的sql语法定义语法规则,通过指定的元数据规则定义与所述被测gbase数据库的元数据相关的词法规则;

6、s3、基于所述语法规则和词法规则,使用antlr工具生成antlr抽象语法树;通过前序遍历的方式访问所述antlr抽象语法树生成sql语句模板;

7、s4、对生成的sql语句模板进行识别,准确识别sql语句模板中的全部语法成分,生成sql抽象语法树;访问sql抽象语法树,将指定的元数据规则替换成真正的元数据字面量,生成随机sql语句;

8、s5、对被测gbase数据库执行所述随机sql语句,并返回执行结果;从执行结果和数据库状态两大方面进行结果分析;

9、s6、循环执行步骤s3-s5,直到生成指定数量的随机sql语句或数据库崩溃。

10、进一步的,步骤s1中所述元数据包括用户表的名称、列的名称、数据类型;内置函数和参数类型;还定义了不同数据类型的数据字面量的生成方法。

11、进一步的,步骤s3中,生成sql语句模板的方法包括:访问所述antlr抽象语法树,如果访问的是词法规则,则直接返回所述词法规则的定义,如果访问的是语法规则,则从语法规则的定义中随机抽取一个语法分支,然后对分支的每个元素继续进行访问,直到返回全部词法规则的定义。

12、更进一步的,随机抽取语法分支时,设置最大递归深度;当语法规则被访问时,访问次数+1,当访问次数大于所述最大递归深度时,选择不会产生递归行为的语法分支,来结束递归。

13、进一步的,步骤s4具体包括:基于所述语法规则和词法规则生成sql文法解析器,sql文法解析器基于sql语句模板识别语法成分,确定元数据之间的关系,生成sql抽象语法树。

14、本专利技术另一方面还提出了一种gbase数据库模糊测试用例生成装置,包括:sql语法组件、sql语义组件、sql语句模板组件、连接器组件、元数据组件、sql执行组件、结果分析组件、主程序组件;

15、主程序组件是所有组件执行的入口,控制其他所有组件的执行逻辑;

16、所述连接器组件创建连接到被测gbase数据库的连接对象;

17、所述元数据组件通过连接器组件创建的被测gbase数据库的连接对象,从系统表中获取到被测gbase数据库的元数据;

18、所述sql语法组件使用antlr文法规则依据gbase数据库的sql语法定义语法规则,通过指定的元数据规则定义与所述被测gbase数据库的元数据相关的词法规则;

19、所述sql语句模板组件对sql语法组件进行解析,使用antlr工具生成antlr抽象语法树;通过前序遍历的方式访问所述antlr抽象语法树生成sql语句模板;

20、所述sql语义组件包含基于sql语法组件生成的sql文法解析器,对生成的sql语句模板进行识别,准确识别sql语句模板中的全部语法成分,生成sql抽象语法树;访问sql抽象语法树,将指定的元数据规则替换成真正的元数据字面量,生成随机sql语句;

21、所述sql执行组件检查连接器组件创建的被测gbase数据库的连接对象,是否可用,然后通过所述连接对象执行所述随机sql语句,并返回执行结果;

22、所述结果分析组件从执行结果和数据库状态两大方面进行结果分析;

23、所述主程序组件控制sql语句模板组件、sql语义组件、sql执行组件、结果分析组件循环执行,直到生成指定数量的随机sql语句或数据库崩溃。

24、进一步的,元数据组件中,所述元数据包括用户表的名称、列的名称、数据类型;内置函数和参数类型;还定义了不同数据类型的数据字面量的生成方法。

25、进一步的,sql语句模板组件中,生成sql语句模板时,访问所述antlr抽象语法树,如果访问的是词法规则,则直接返回所述词法规则的定义,如果访问的是语法规则,则从语法规则的定义中随机抽取一个语法分支,然后对分支的每个元素继续进行访问,直到返回全部词法规则的定义。

26、更进一步的,sql语句模板组件中,随机抽取语法分支时,设置最大递归深度;当语法规则被访问时,访问次数+1,当访问次数大于所述最大递归深度时,选择不会产生递归行为的语法分支,来结束递归。

27、进一步的,sql语义组件中,基于所述语法规则和词法规则生成sql文法解析器,sql文法解析器基于sql语句模板识别语法成分,确定元数据之间的关系,生成sql抽象语法树。

28、与现有技术相比,本专利技术具有的有益效果包括:

29、本专利技术可以使gbase数据库模糊测试时生成的随机sql文本满足其执行环境,既在语法上能够通过gbase数据库语法解析器的检查,又在语义上符合运行时的数据库环境。

本文档来自技高网...

【技术保护点】

1.一种GBase数据库模糊测试用例生成方法,其特征在于,包括:

2.根据权利要求1所述的GBase数据库模糊测试用例生成方法,其特征在于,步骤S1中所述元数据包括用户表的名称、列的名称、数据类型;内置函数和参数类型;还定义了不同数据类型的数据字面量的生成方法。

3.根据权利要求1所述的GBase数据库模糊测试用例生成方法,其特征在于,步骤S3中,生成SQL语句模板的方法包括:访问所述Antlr抽象语法树,如果访问的是词法规则,则直接返回所述词法规则的定义,如果访问的是语法规则,则从语法规则的定义中随机抽取一个语法分支,然后对分支的每个元素继续进行访问,直到返回全部词法规则的定义。

4.根据权利要求3所述的GBase数据库模糊测试用例生成方法,其特征在于,随机抽取语法分支时,设置最大递归深度;当语法规则被访问时,访问次数+1,当访问次数大于所述最大递归深度时,选择不会产生递归行为的语法分支,来结束递归。

5.根据权利要求1所述的GBase数据库模糊测试用例生成方法,其特征在于,步骤S4具体包括:基于所述语法规则和词法规则生成SQL文法解析器,SQL文法解析器基于SQL语句模板识别语法成分,确定元数据之间的关系,生成SQL抽象语法树。

6.一种GBase数据库模糊测试用例生成装置,其特征在于,包括:SQL语法组件、SQL语义组件、SQL语句模板组件、连接器组件、元数据组件、SQL执行组件、结果分析组件、主程序组件;

7.根据权利要求6所述的GBase数据库模糊测试用例生成装置,其特征在于,元数据组件中,所述元数据包括用户表的名称、列的名称、数据类型;内置函数和参数类型;还定义了不同数据类型的数据字面量的生成方法。

8.根据权利要求6所述的GBase数据库模糊测试用例生成装置,其特征在于,SQL语句模板组件中,生成SQL语句模板时,访问所述Antlr抽象语法树,如果访问的是词法规则,则直接返回所述词法规则的定义,如果访问的是语法规则,则从语法规则的定义中随机抽取一个语法分支,然后对分支的每个元素继续进行访问,直到返回全部词法规则的定义。

9.根据权利要求8所述的GBase数据库模糊测试用例生成装置,其特征在于,SQL语句模板组件中,随机抽取语法分支时,设置最大递归深度;当语法规则被访问时,访问次数+1,当访问次数大于所述最大递归深度时,选择不会产生递归行为的语法分支,来结束递归。

10.根据权利要求6所述的GBase数据库模糊测试用例生成装置,其特征在于,SQL语义组件中,基于所述语法规则和词法规则生成SQL文法解析器,SQL文法解析器基于SQL语句模板识别语法成分,确定元数据之间的关系,生成SQL抽象语法树。

...

【技术特征摘要】

1.一种gbase数据库模糊测试用例生成方法,其特征在于,包括:

2.根据权利要求1所述的gbase数据库模糊测试用例生成方法,其特征在于,步骤s1中所述元数据包括用户表的名称、列的名称、数据类型;内置函数和参数类型;还定义了不同数据类型的数据字面量的生成方法。

3.根据权利要求1所述的gbase数据库模糊测试用例生成方法,其特征在于,步骤s3中,生成sql语句模板的方法包括:访问所述antlr抽象语法树,如果访问的是词法规则,则直接返回所述词法规则的定义,如果访问的是语法规则,则从语法规则的定义中随机抽取一个语法分支,然后对分支的每个元素继续进行访问,直到返回全部词法规则的定义。

4.根据权利要求3所述的gbase数据库模糊测试用例生成方法,其特征在于,随机抽取语法分支时,设置最大递归深度;当语法规则被访问时,访问次数+1,当访问次数大于所述最大递归深度时,选择不会产生递归行为的语法分支,来结束递归。

5.根据权利要求1所述的gbase数据库模糊测试用例生成方法,其特征在于,步骤s4具体包括:基于所述语法规则和词法规则生成sql文法解析器,sql文法解析器基于sql语句模板识别语法成分,确定元数据之间的关系,生成sql抽象语法树。

6.一种gbase数据库模糊测试用例生成装置,其特征在于,包括:sq...

【专利技术属性】
技术研发人员:王未
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:

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

1