System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于模糊测试,具体涉及一种面向模糊测试的语句序列变异方法。
技术介绍
1、数据库管理系统(database management system,dbms)是现代软件系统的数据基础设施,为现代软件系统提供数据持久化服务,其安全性至关重要。近年来,dbms的可靠性和安全性受到工业界和学术界越来越多的关注,研究人员广泛使用模糊测试技术验证dbms的功能和挖掘漏洞,取得了有效的进展,证明了模糊测试技术在dbms漏洞挖掘是一种行之有效的技术方法。
2、模糊测试的核心思想是通过自动化或者半自动化的方法构造出海量的测试用例,然后输入到目标测试程序,以发现目标测试程序中的潜在漏洞。模糊测试的工作过程一般分成几个阶段的工作,如图1所示,分别是测试用例生成阶段、测试用例执行和监控阶段、异常分析阶段。测试用例生成阶段生成可用的测试用例,测试用例执行和监控阶段把测试用例输入给目标程序执行并监控目标程序的执行状态,判断是否触发异常,异常分析阶段对触发异常的测试用例进行分析,找出目标程序的异常位置和异常原因以方便后续进行修复。
3、在整个模糊测试过程中,测试用例生成阶段至关重要,生成的测试用例的好坏直接影响着整个模糊测试过程的效率。一方面,测试用例应尽可能满足待测程序对输入格式的要求,以便进入待测程序的深层路径。另一方面,测试用例应该足够的特别,以便对这些输入的处理很可能出乎程序设计者的考虑,从而导致待测程序运行失败。
4、数据库管理系统通常在四个阶段处理sql语句,分别是语法解析、语义验证,优化查询计划和执行
技术实现思路
1、(一)要解决的技术问题
2、本专利技术要解决的技术问题是:针对有源码的面向数据库模糊测试的灰盒场景,对测试用例进行更加彻底地变异,更好地挖掘种子潜力,并保证生成的测试用例的语法正确性。
3、(二)技术方案
4、为了解决上述技术问题,本专利技术提供了一种面向模糊测试的语句序列变异方法,该语句序列变异方法针对有源码的面向数据库模糊测试的灰盒场景设计,先把sql文本解析为sql语句序列,然后对语句序列执行变异操作,得到新的语句序列,保证生成的测试用例的语法正确性。
5、优选地,把sql文本解析为sql语句序列的过程如下:接收一个sql文本的字符串作为输入,解析后,输出解析出的sql语句放入vector数组。
6、优选地,接收一个sql文本的字符串作为输入之后,把sql文本中的换行符替换为空字符,然后,以分号作为标识符,把整个sql文本的字符串分割成只包含单个sql语句的字符串,并把单个sql语句的字符串放入vector数组中返回。
7、优选地,对语句序列执行变异操作时,以单独的sql语句为单位执行变异操作,改变sql文本中包含的语句类型和sql文本的语句顺序,变异得到的sql序列将依次被拼接成sql文本,进行语法检验,通过语法检验的sql文本将被解析成抽象语法树ast返回,供后续ast变异使用。
8、优选地,改变sql文本中包含的语句类型和sql文本的语句顺序的操作具体包括:随机打乱sql文本中sql语句的顺序、在sql文本中插入sql语句、从sql文本中删除sql语句、在sql文本中替换sql语句,以及交换两个sql文本中的某些行。
9、本专利技术还提供了一种用于实现所述方法的系统。
10、本专利技术还提供了一种基于所述方法实现的模糊测试方法。
11、优选地,该方法为dbms模糊测试方法。
12、优选地,该方法包括测试用例生成阶段、测试用例执行和监控阶段、异常分析阶段。
13、优选地,在测试用例生成阶段,使用语句序列变异方法来对测试用例进行变异,保证生成的测试用例语法的正确性。
14、(三)有益效果
15、针对有源码的面向数据库模糊测试的灰盒场景,本专利技术设计的语句序列变异方法是先把sql文本解析为sql语句序列,然后对语句序列执行shuffle(打乱)、delete(删除)等变异操作,得到新的语句序列。该方法可以对测试用例进行更加彻底地变异,更好地挖掘种子潜力,并保证生成的测试用例的语法正确性。
本文档来自技高网...【技术保护点】
1.一种面向模糊测试的语句序列变异方法,其特征在于,该语句序列变异方法针对有源码的面向数据库模糊测试的灰盒场景设计,先把SQL文本解析为SQL语句序列,然后对语句序列执行变异操作,得到新的语句序列,保证生成的测试用例的语法正确性。
2.如权利要求1所述的方法,其特征在于,把SQL文本解析为SQL语句序列的过程如下:接收一个SQL文本的字符串作为输入,解析后,输出解析出的SQL语句放入vector数组。
3.如权利要求2所述的方法,其特征在于,接收一个SQL文本的字符串作为输入之后,把SQL文本中的换行符替换为空字符,然后,以分号作为标识符,把整个SQL文本的字符串分割成只包含单个SQL语句的字符串,并把单个SQL语句的字符串放入vector数组中返回。
4.如权利要求3所述的方法,其特征在于,对语句序列执行变异操作时,以单独的SQL语句为单位执行变异操作,改变SQL文本中包含的语句类型和SQL文本的语句顺序,变异得到的SQL序列将依次被拼接成SQL文本,进行语法检验,通过语法检验的SQL文本将被解析成抽象语法树AST返回。
5.如权
6.一种用于实现如权利要求1至5中任一项所述方法的系统。
7.一种基于如权利要求1至5中任一项所述方法实现的模糊测试方法。
8.如权利要求7所述的方法,其特征在于,该方法为DBMS模糊测试方法。
9.如权利要求8所述的方法,其特征在于,该方法包括测试用例生成阶段、测试用例执行和监控阶段、异常分析阶段。
10.如权利要求9所述的方法,其特征在于,在测试用例生成阶段,使用语句序列变异方法来对测试用例进行变异,保证生成的测试用例语法的正确性。
...【技术特征摘要】
1.一种面向模糊测试的语句序列变异方法,其特征在于,该语句序列变异方法针对有源码的面向数据库模糊测试的灰盒场景设计,先把sql文本解析为sql语句序列,然后对语句序列执行变异操作,得到新的语句序列,保证生成的测试用例的语法正确性。
2.如权利要求1所述的方法,其特征在于,把sql文本解析为sql语句序列的过程如下:接收一个sql文本的字符串作为输入,解析后,输出解析出的sql语句放入vector数组。
3.如权利要求2所述的方法,其特征在于,接收一个sql文本的字符串作为输入之后,把sql文本中的换行符替换为空字符,然后,以分号作为标识符,把整个sql文本的字符串分割成只包含单个sql语句的字符串,并把单个sql语句的字符串放入vector数组中返回。
4.如权利要求3所述的方法,其特征在于,对语句序列执行变异操作时,以单独的sql语句为单位执行变异操作,改变sql文本中包含的语句类型和sql文本的语句顺序,变异得到的sql序列将依...
【专利技术属性】
技术研发人员:曾颖明,王斌,贾琼,罗济凡,汪美琴,张卫国,任益辰,方永强,赵琛,
申请(专利权)人:北京计算机技术及应用研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。