System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及模糊测试,具体是涉及一种回归模糊测试方法、装置、设备及存储介质。
技术介绍
1、程序源代码的版本发生变更之后,会产生新的代码,或程序源代码中的部分代码会发生改变,新的代码或发生改变的代码就是目标代码。可以采用回归模糊测试技术测试因执行目标代码所产生的回归漏洞。现有针对回归测试场景的模糊测试技术仅考虑控制流信息,而没有考虑可能更容易触发回归漏洞的数据流信息,因此限制了对回归漏洞的检测能力。
2、综上所述,现有技术没有考虑针对回归漏洞的检测能力。
3、因此,现有技术还有待改进和提高。
技术实现思路
1、为解决上述技术问题,本专利技术提供了一种回归模糊测试方法、装置、设备及存储介质,解决了现有技术没有考虑针对回归漏洞的检测能力的问题。
2、为实现上述目的,本专利技术采用了以下技术方案:
3、第一方面,本专利技术提供一种回归模糊测试方法,其中,包括:
4、获取程序源代码因版本变更而产生的目标代码,并提取所述目标代码的控制流信息和数据流信息;
5、将测试用例输入至所述程序源代码,当输入所述测试用之后的所述程序源代码未崩溃时,监测所述控制流信息的控制流覆盖和所述数据流信息的数据流覆盖;
6、依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,得到最终测试用例。
7、在一种实现方式中,所述提取所述目标代码的控制流信息和数据流信息,包括:
8、提取所述
9、提取所述目标代码与所述调用函数相关的控制流信息;
10、解析所述目标代码所包含的基本块,所述基本块为只有一个输入口和一个输出口的代码块;
11、从所述基本块中筛选出用于定义变量的定义基本块,从所述基本块中筛选出用于调用变量的使用基本块;
12、确定所述定义基本块之间的数据依赖图;
13、将所述定义基本块、所述使用基本块、所述数据依赖图作为数据流信息。
14、在一种实现方式中,所述监测所述控制流信息的控制流覆盖和所述数据流信息的数据流覆盖,包括:
15、在所述程序源代码上插装监测程序;
16、通过所述监测程序监测所述控制流信息的执行次数,并依据所述控制流信息的执行次数,得到控制流覆盖;
17、通过所述监测程序监测所述数据流信息的数据流覆盖。
18、在一种实现方式中,所述通过所述监测程序监测所述数据流信息的数据流覆盖,包括:
19、通过所述监测程序监测目标定义的所述数据依赖图所包含的最近距离和最远距离,所述目标定义为所述定义基本块所在的定义;
20、依据每个所述目标定义的所述最近距离和所述最远距离,得到每个所述目标定义的定义子分数;
21、依据每个所述目标定义的定义子分数,从所有的所述目标定义的定义子分数中筛选出目标定义分数;
22、通过所述监测程序监测每个目标使用所对应的所述使用基本块的执行次数,并依据每个所述目标使用所对应的执行次数,得到目标使用分数,所述目标使用为所述使用基本块所在的使用;
23、将所述目标定义分数和所述目标使用分数作为数据流覆盖。
24、在一种实现方式中,所述依据每个所述目标使用所对应的执行次数,得到目标使用分数,包括:
25、累加每个所述目标使用所对应的执行次数,得到目标使用分数。
26、在一种实现方式中,所述依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,得到最终测试用例,包括:
27、当所述控制流覆盖大于第一阈值和/或所述目标定义分数大于第二阈值和/或所述目标使用分数大于第三阈值时,确定所述测试用例的测试变异用例;
28、将所述测试变异用例输入至所述程序源代码,当输入所述测试变异用例之后的所述程序源代码未崩溃时,更新所述测试用例,直至所述程序源代码崩溃,得到目标测试用例。
29、在一种实现方式中,所述依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,得到最终测试用例,还包括:
30、当输入所述测试变异用例之后的所述程序源代码崩溃时,将所述测试变异用例作为目标测试用例。
31、第二方面,本专利技术实施例还提供一种回归模糊测试装置,其中,所述装置包括如下组成部分:
32、信息提取模块,用于获取程序源代码因版本变更而产生的目标代码,并提取所述目标代码的控制流信息和数据流信息;
33、监测模块,用于将测试用例输入至所述程序源代码,当输入所述测试用之后的所述程序源代码未崩溃时,监测所述控制流信息的控制流覆盖和所述数据流信息的数据流覆盖;
34、更新模块,用于依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,得到最终测试用例。
35、第三方面,本专利技术实施例还提供一种终端设备,其中,所述终端设备包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的回归模糊测试程序,所述处理器执行所述回归模糊测试程序时,实现上述所述的回归模糊测试方法的步骤。
36、第四方面,本专利技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有回归模糊测试程序,所述回归模糊测试程序被处理器执行时,实现上述所述的回归模糊测试方法的步骤。
37、有益效果:本专利技术首先提取目标代码的控制流信息和数据流信息,当将测试用例输入至程序源代码之后,监测目标代码的控制流信息的控制流覆盖和数据流信息的数据流覆盖,并控制流覆盖和所述数据流覆盖,更新测试用例,直至程序源代码崩溃,得到最终测试用例,也就是找到能让程序源代码崩溃的测试用例。从上述分析可知,本专利技术使用控制流覆盖和数据流覆盖引导更新测试用例,使数据流覆盖能够充分覆盖目标代码及其相关的代码,以提升回归漏洞检测能力。
本文档来自技高网...【技术保护点】
1.一种回归模糊测试方法,其特征在于,包括:
2.如权利要求1所述的回归模糊测试方法,其特征在于,所述提取所述目标代码的控制流信息和数据流信息,包括:
3.如权利要求2所述的回归模糊测试方法,其特征在于,所述监测所述控制流信息的控制流覆盖和所述数据流信息的数据流覆盖,包括:
4.如权利要求3所述的回归模糊测试方法,其特征在于,所述通过所述监测程序监测所述数据流信息的数据流覆盖,包括:
5.如权利要求4所述的回归模糊测试方法,其特征在于,所述依据每个所述目标使用所对应的执行次数,得到目标使用分数,包括:
6.如权利要求4所述的回归模糊测试方法,其特征在于,所述依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,得到最终测试用例,包括:
7.如权利要求6所述的回归模糊测试方法,其特征在于,所述依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,得到最终测试用例,还包括:
8.一种回归模糊测试装置,其特征在于,所述装置包括如下组成部分:
9
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有回归模糊测试程序,所述回归模糊测试程序被处理器执行时,实现如权利要求1-7任一项所述的回归模糊测试方法的步骤。
...【技术特征摘要】
1.一种回归模糊测试方法,其特征在于,包括:
2.如权利要求1所述的回归模糊测试方法,其特征在于,所述提取所述目标代码的控制流信息和数据流信息,包括:
3.如权利要求2所述的回归模糊测试方法,其特征在于,所述监测所述控制流信息的控制流覆盖和所述数据流信息的数据流覆盖,包括:
4.如权利要求3所述的回归模糊测试方法,其特征在于,所述通过所述监测程序监测所述数据流信息的数据流覆盖,包括:
5.如权利要求4所述的回归模糊测试方法,其特征在于,所述依据每个所述目标使用所对应的执行次数,得到目标使用分数,包括:
6.如权利要求4所述的回归模糊测试方法,其特征在于,所述依据所述控制流覆盖和所述数据流覆盖,更新所述测试用例,直至所述程序源代码崩溃,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。