【技术实现步骤摘要】
一种分布式模糊测试加速方法及系统
[0001]本专利技术涉及模糊测试
,具体涉及一种分布式模糊测试加速方法及系统。
技术介绍
[0002]模糊测试通过模糊测试器生成大量随机数据,触发软件深层缺陷,再通过各类检测器进行问题分析与定位,可以帮助发现、修复应用、协议、内核、数据库等各种被测软件的bug,减少测试的人力成本,提升软件系统安全性与健壮性。模糊测试技术持续自动持续生成测试数据,测试时间长,计算量大,对CPU、内存等硬件资源消耗较大是其突出特点。
[0003]现有的模糊测试产品,从测试任务运行方式上来说,可以分为两种:
[0004]第一种是单点运行,如Defensics、Peach等工具,模糊测试器以单体软件的形式执行,对待测对象进行测试,待测对象只运行一个实例。不具备大规模并行测试支持,因而测试能力将受限于计算资源限制。随着软件复杂度提升,测试效率成为瓶颈,对于复杂测试对象表现为覆盖率低,无法发现深层bug。
[0005]另一类支持分布式测试,如Google推出的ClusterFuzz平台、 ...
【技术保护点】
【技术特征摘要】
1.一种分布式模糊测试加速方法,其特征在于,所述方法包括:将模糊测试任务拆分为多个不同的轻量级fuzz任务切片,每个轻量级fuzz任务对应一个局部用例集合,所述局部用例集合包含数个聚类得到的测试用例;在一个迭代周期内,将多个不同的轻量级fuzz任务分配到多个并行的轻量级模糊测试节点执行测试,并在测试过程中获取各个用例对待测对象的覆盖信息,任务执行完后将每个测试节点新生成的测试用例汇总得到全局用例集合,并将全局用例集合根据各用例的覆盖信息通过聚类算法再拆分成多个局部用例集合,生成多个新的轻量级fuzz任务,并开始下一轮迭代。2.根据权利要求1所述的一种分布式模糊测试加速方法,其特征在于,所述全局用例集合是一个全局映射表,key中存储了各个用例对目标代码的详细覆盖信息;用例集合更新时,覆盖信息表现相同的用例会被替换。3.根据权利要求1所述的一种分布式模糊测试加速方法,其特征在于,所述方法还包括:轻量级模糊测试执行时间固定而且时间切片低于预设值,使得全局用例集合能够不断迭代更新。4.根据权利要求1所述的一种分布式模糊测试加速方法,其特征在于,将全局用例集合根据各用例的覆盖信息通过聚类算法再拆分成多个局部用例集合,具体包括:第一步,Fuzz过程中获取各个用例对待测对象的详细覆盖信息,使用一个N纬向量来标记,其中N表示待测对象的代码总行数,0代表这一行被用例覆盖,1代表这一行没有被用例覆盖,把所有的用例都向量化;第二步,任意选取k个向量,使用向量间的几何距离作为初始质心;第三步,计算各个向量到质心的距离,距离把它划为跟质心同一聚簇之中;第四步,每一个聚簇内,计算每一个向量到其他所有向量的距离,距离聚簇内所有其他向量最近的那个向量作为新的质心;第五步,重复第三步到第四步,直到收敛。5.根据权利要求1所述的一种分布式模糊测试加速方法,其特征在于,所述方法还包括:通过动态调整K值,调整一个模糊测试任务的资源分配,K代表用例聚类的数量,同时也代表轻量级任务并发数,在资源比较紧张的情况或者重要性相对较低的任务,适当降低K值,反之则提高K值。6.一种分布式模糊测试加速系统,其特征在于,所述系统包括云端服务器以及多个分布式测试节点;所述云端服务器包括节点管理器和任务管理器;所述节点管理器用于测试节点管理、测试集群...
【专利技术属性】
技术研发人员:孙锐,白易元,
申请(专利权)人:北京水木羽林科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。