基于蒙特卡洛树搜索算法的模糊测试方法及设备

文档序号:34456613发布日期:2023-06-14 21:17阅读:37来源:国知局
基于蒙特卡洛树搜索算法的模糊测试方法及设备

本发明实施例涉及网络安全,尤其涉及一种基于蒙特卡洛树搜索算法的模糊测试方法及设备。


背景技术:

1、当前,网络空间安全面临着严峻的挑战,最大的威胁因素是漏洞。漏洞是指程序代码中存在的、能够被威胁所采用的缺陷。漏洞一经采用,造成数据泄露、系统瘫痪、数据篡改危害,甚至影响到生命财产安全。因此,漏洞挖掘技术被提出用于检测网络空间中是否存在漏洞,近年来备受学术界和工业界的关注。传统的代码覆盖率引导的模糊测试技术用一个种子队列的结构存储测试用例,然后按照一定的种子调度策略从中选择一个测试用例作为种子。这个种子经过随机变异生成大量的新的测试用例,这些新的测试用例作为输入来测试目标程序。如果测试用例覆盖新的程序执行路径就会被添加到种子队列中,参与下一轮的种子调度。现有的种子调度策略往往只关注于种子自身的特征,如长度、执行时长、覆盖路径的频率,忽略种子之间的变异关系对模糊测试的影响。变异关系指的是一个种子通过随机变异生成新的种子,这两个种子之间存在变异关系。有变异关系的种子所覆盖的路径之间存在很高程度的相似性。忽略种子之间的变异关系会造成模糊测试重复测试同一代码区域,无法平衡对程序状态的探索和采用,影响模糊测试的效率。因此,开发一种基于蒙特卡洛树搜索算法的模糊测试方法及设备,可以有效克服上述相关技术中的缺陷,就成为业界亟待解决的技术问题。


技术实现思路

1、针对现有技术存在的上述问题,本发明实施例提供了一种基于蒙特卡洛树搜索算法的模糊测试方法及设备。

2、第一方面,本发明的实施例提供了一种基于蒙特卡洛树搜索算法的模糊测试方法,包括:步骤1,初始化种子变异树,初始化一个树形结构根节点,将所有初始测试用例以节点的形式存储在树形结构中,所有的初始测试用例为根节点的子节点;步骤2,在所述的种子变异树上,基于蒙特卡洛树搜索算法选择出一个种子;步骤3,种子变异,对选中的节点对应的测试用例进行随机变异,生成新的测试用例;步骤4,用新生成的测试用例测试目标程序,查看程序是否运行异常,如果异常则生成异常报告,否则查看是否覆盖新的程序执行路径;步骤5,将覆盖新的程序路径的测试用例以节点的形式加入到树型结构中,根据种子之间的变异关系,新加入的节点为步骤2中选出来的节点的子节点,树形结构中的每个节点为一个种子,每条边为种子之间的变异关系;步骤6,更新种子变异树中记录的节点的选中次数以及覆盖的独特分支树;步骤7,重复步骤2到步骤6直到停止模糊测试运行。

3、在上述方法实施例内容的基础上,本发明实施例中提供的基于蒙特卡洛树搜索算法的模糊测试方法,步骤2具体包括:步骤2.1,从根节点开始,标记根节点为当前选中的节点;步骤2.2,计算当前节点的所有子节点的分数,基于上限置信区间算法提出分数的计算方式,具体为:

4、

5、独特分枝指的是在当前要计算分数的子节点和其兄弟节点范围内,只被该节点覆盖的而其它兄弟节点未覆盖的分支,节点被选中的次数为从模糊测试开始该节点在步骤2时被选为当前节点的次数,父节点被选中次数为从模糊测试开始该节点的父节点在步骤2时被选为当前节点的次数;分数计算方式有效平衡模糊测试对程序状态空间的探索和采用;步骤2.3,选择所有子节点中分数最高的子节点;步骤2.4,重复步骤2.1到2.3直到选择的节点是一个叶子节点。

6、在上述方法实施例内容的基础上,本发明实施例中提供的基于蒙特卡洛树搜索算法的模糊测试方法,所述分数计算方式包括:分数计算公其中加号左边为独特分支数与节点被选中的次数的比值,独特分支数越多则为该种子覆盖更多别的种子未覆盖的路径,那么沿着这个种子所覆盖的执行路径探索,模糊测试更有机会覆盖新的程序分支,而不是重复沿着多个种子都覆盖过的分支探索,这么做引导模糊测试沿着有价值的路径深入探索,分数计算公其中加号右边为父节点取自然对数然后乘上二然后与节点被选中次数的比值开根号,其中节点被选中次数高的时候,种子分数会降低,模糊测试不选择这个种子,而把种子变异的机会给选中次数少的种子,让模糊测试对程序未被探索或探索次数少的区域进行测试。

7、在上述方法实施例内容的基础上,本发明实施例中提供的基于蒙特卡洛树搜索算法的模糊测试方法,所述步骤6具体包括:步骤6.1,步骤2选出来的节点的被选中的次数加1,节点覆盖的分支集合为当前的分支集合和新添加的叶子节点覆盖的分支集合的并集;步骤6.2,从步骤2选出来的节点到根节点构成的路径上所有节点的被选中的次数加1,节点覆盖的分支集合为当前的分支集合和新添加的叶子节点覆盖的分支集合的并集。

8、在上述方法实施例内容的基础上,本发明实施例中提供的基于蒙特卡洛树搜索算法的模糊测试方法,还包括:种子变异树初始化模块用于将所有的初始测试用例构建成初始的种子变异树;种子调度模块在所述的种子变异树中按照本发明所述的基于蒙特卡洛树搜索算法的模糊测试方法选择出一个种子;种子变异模块对种子调度模块选出的种子进行随机变异,变异的结果为生成大量新的测试用例;目标程序测试模块将种子变异模块生成的新测试用例测试目标程序,并监控程序运行是否异常;代码覆盖率处理模块将测试用例覆盖的执行路径与当前已覆盖的执行路径比对,查看测试用例是否覆盖新的程序执行路径;种子变异树更新模块把覆盖新的程序执行路径的测试用例以节点的形式按照种子之间的变异关系添加到种子变异树初始化模块的种子变异树中,按照所述的基于蒙特卡洛树搜索算法的模糊测试方法更新节点被选中的次数以及覆盖的分支。

9、第二方面,本发明的实施例提供了一种基于蒙特卡洛树搜索算法的模糊测试装置,包括:第一主模块,用于实现步骤1,初始化种子变异树,初始化一个树形结构根节点,将所有初始测试用例以节点的形式存储在树形结构中,所有的初始测试用例为根节点的子节点;步骤2,在所述的种子变异树上,基于蒙特卡洛树搜索算法选择出一个种子;第二主模块,用于实现步骤3,种子变异,对选中的节点对应的测试用例进行随机变异,生成新的测试用例;步骤4,用新生成的测试用例测试目标程序,查看程序是否运行异常,如果异常则生成异常报告,否则查看是否覆盖新的程序执行路径;第三主模块,用于实现步骤5,将覆盖新的程序路径的测试用例以节点的形式加入到树型结构中,根据种子之间的变异关系,新加入的节点为步骤2中选出来的节点的子节点,树形结构中的每个节点为一个种子,每条边为种子之间的变异关系;第四主模块,用于实现步骤6,更新种子变异树中记录的节点的选中次数以及覆盖的独特分支树;步骤7,重复步骤2到步骤6直到停止模糊测试运行。

10、第三方面,本发明的实施例提供了一种电子设备,包括:

11、至少一个处理器;以及

12、与处理器通信连接的至少一个存储器,其中:

13、存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种实现方式中任一种实现方式所提供的基于蒙特卡洛树搜索算法的模糊测试方法。

14、第四方面,本发明的实施例提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的各种实现方式中任一种实现方式所提供的基于蒙特卡洛树搜索算法的模糊测试方法。

15、本发明实施例提供的基于蒙特卡洛树搜索算法的模糊测试方法及设备,采用上限置信区间算法设计种子的分数计算方式,能够在模糊测试进行的任何时刻的种子调度阶段提供当前最优的种子,平衡模糊测试对程序状态的探索和采用,应用于对软件的漏洞挖掘领域,可以有效提高模糊测试的代码覆盖率以及漏洞挖掘能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1