1 .一种GBase数据库模糊测试用例生成方法,其特征在于,包括:
S1、获取被测GBase数据库的元数据;
S2、使用Antlr文法规则依据GBase数据库的SQL语法定义语法规则,通过指定的元数据
规则定义与所述被测GBase数据库的元数据相关的词法规则;
S3、基于所述语法规则和词法规则,使用Antlr工具生成Antlr抽象语法树;通过前序遍
历的方式访问所述Antlr抽象语法树生成SQL语句模板;
S4、对生成的SQL语句模板进行识别,准确识别SQL语句模板中的全部语法成分,生成
SQL抽象语法树;访问SQL抽象语法树,将指定的元数据规则替换成真正的元数据字面量,生
成随机SQL语句;
S5、对被测GBase数据库执行所述随机SQL语句,并返回执行结果;从执行结果和数据库
状态两大方面进行结果分析;
S6、循环执行步骤S3‑S5,直到生成指定数量的随机SQL语句或数据库崩溃。
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执行组件、结果分析组件、主程序组
件;
主程序组件是所有组件执行的入口,控制其他所有组件的执行逻辑;
所述连接器组件创建连接到被测GBase数据库的连接对象;
所述元数据组件通过连接器组件创建的被测GBase数据库的连接对象,从系统表中获
取到被测GBase数据库的元数据;
所述SQL语法组件使用Antlr文法规则依据GBase数据库的SQL语法定义语法规则,通过
指定的元数据规则定义与所述被测GBase数据库的元数据相关的词法规则;
所述SQL语句模板组件对SQL语法组件进行解析,使用Antlr工具生成Antlr抽象语法
树;通过前序遍历的方式访问所述Antlr抽象语法树生成SQL语句模板;
所述SQL语义组件包含基于SQL语法组件生成的SQL文法解析器,对生成的SQL语句模板
进行识别,准确识别SQL语句模板中的全部语法成分,生成SQL抽象语法树;访问SQL抽象语
法树,将指定的元数据规则替换成真正的元数据字面量,生成随机SQL语句;
权 利 要 求 书
1/2 页
2
相关文档
评论