CN112948255A - 分布式的内核模糊测试系统及方法 - Google Patents

分布式的内核模糊测试系统及方法 Download PDF

Info

Publication number
CN112948255A
CN112948255A CN202110311568.5A CN202110311568A CN112948255A CN 112948255 A CN112948255 A CN 112948255A CN 202110311568 A CN202110311568 A CN 202110311568A CN 112948255 A CN112948255 A CN 112948255A
Authority
CN
China
Prior art keywords
test
test task
middleware
task
feedback
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110311568.5A
Other languages
English (en)
Other versions
CN112948255B (zh
Inventor
刘昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hongteng Intelligent Technology Co ltd
Original Assignee
Beijing Hongteng Intelligent Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Hongteng Intelligent Technology Co ltd filed Critical Beijing Hongteng Intelligent Technology Co ltd
Priority to CN202110311568.5A priority Critical patent/CN112948255B/zh
Publication of CN112948255A publication Critical patent/CN112948255A/zh
Application granted granted Critical
Publication of CN112948255B publication Critical patent/CN112948255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于安全测试技术领域,公开了一种分布式的内核模糊测试系统及方法。该系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;测试任务生成装置生成测试用例,将测试用例打包成测试任务发布至测试任务中间件;用例执行装置从测试任务中间件中按照预设选取策略获取测试任务,并根据测试任务进行模糊测试。通过上述方式,将用例生成以及用例执行独立成不同的子系统,使用中间件管理测试任务,实现子系统的并发运行,显著提高运行测试用例的效率,解决了当前内核模糊测试无法并行计算,测试效率低的技术问题。

Description

分布式的内核模糊测试系统及方法
技术领域
本发明涉及安全测试技术领域,尤其涉及一种分布式的内核模糊测试系统及方法。
背景技术
在国产操作系统如火如荼发展的今天,内核安全问题显著影响到系统安全,模糊测试是发现内核安全问题的重要方法。分布式的内核模糊测试框架包括3个主要功能:用例生成、用例执行以及反馈分析;目前大部分的分布式的内核模糊测试框架(例如kafl)将上述三个功能耦合在一起,导致无法并行计算,进而导致无法使用增加计算资源的方式提高效率;而syzkaller虽然在一定程度上支持同时模糊测试多个目标机器,但动态可扩展性较差,无法支持动态添加和删除计算资源。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种分布式的内核模糊测试系统及方法,旨在解决当前内核模糊测试无法并行计算,测试效率低的技术问题。
为实现上述目的,本发明提供了一种分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述测试任务生成装置,用于生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件;
所述用例执行装置,用于从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
可选地,所述分布式的内核模糊测试系统还包括:反馈分析装置;
所述用例执行装置,还用于在测试完成后,将测试反馈发送至所述测试任务中间件;
所述反馈分析装置,用于从所述测试任务中间件中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件,其中,所述高质量种子为通过预设规则筛选后的测试用例;
所述测试任务生成装置,还用于根据所述高质量种子对产生的测试用例进行优化。
可选地,所述用例执行装置还包括:代理服务模块和若干虚拟机;
所述代理服务模块,用于获取若干虚拟机对应的虚拟机状态,根据所述虚拟机状态确定处于空闲状态的虚拟机数目,根据所述虚拟机数目向所述测试任务中间件请求相应数目的测试任务;
所述代理服务模块,还用于在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据所述测试任务进行模糊测试。
可选地,所述用例执行装置还包括:若干对应的代理服务模块以及物理机;
所述代理服务模块,用于在接收到用例执行装置启动指令时,根据所述物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机。
可选地,所述用例执行装置,还用于在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件。
可选地,所述目标代理服务模块,用于向所述测试任务中间件发送连接请求;
所述测试任务中间件,还用于根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块反馈连接成功信息;
所述目标代理服务模块,还用于接收连接成功信息,并从所述测试任务中间件中按照预设选取策略获取测试任务。
可选地,所述虚拟机状态包括:空闲状态、执行状态以及重新启动状态;
所述虚拟机,用于在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。
可选地,所述分布式的内核模糊测试系统还包括:用例存储模块;
所述反馈分析装置,还用于对所述测试反馈进行分析,并根据分析结果将所述测试反馈存储在所述用例存储模块中。
可选地,所述反馈分析装置,还用于对所述测试反馈进行分析,确定所述测试反馈的覆盖率信息,在所述覆盖率信息中包含新的边覆盖率或者块覆盖率时,将对应的测试反馈存储在所述用例存储模块中。
可选地,所述反馈分析装置,还用于将所述覆盖率信息发送至客户端,以使所述客户端根据所述覆盖率信息对覆盖率统计信息进行可视化展示。
可选地,所述测试任务中间件包括:测试任务队列;
所述测试任务生成装置,还用于将测试任务发布至所述测试任务队列;
所述测试任务中间件,用于在接收到所述用例执行装置的测试任务请求信息时,根据所述测试任务请求信息从所述测试任务队列中确定对应的目标测试任务,并将所述目标测试任务发送至所述用例执行装置。
可选地,所述测试任务中间件包括:测试反馈队列;
所述用例执行装置,还用于将测试反馈发送至所述测试反馈队列;
所述测试任务中间件,还用于在接收到所述反馈分析装置的测试反馈请求信息时,根据所述测试反馈请求信息从所述测试反馈队列中确定对应的目标测试反馈,并将所述目标测试反馈发送至所述反馈分析装置。
可选地,所述测试任务中间件包括:高质量种子队列;
所述反馈分析装置,还用于将高质量种子发送至所述高质量种子队列;
所述测试任务中间件,还用于在接收到所述测试任务生成装置的种子请求信息时,根据所述种子请求信息从所述高质量种子队列中确定对应的目标高质量种子队列,并将所述目标高质量种子队列发送至所述测试任务生成装置。
此外,为实现上述目的,本发明还提出一种分布式的内核模糊测试方法,所述分布式的内核模糊测试方法应用于如上所述的分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述分布式的内核模糊测试方法,包括:
所述测试任务生成装置生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
可选地,所述分布式的内核模糊测试系统还包括:反馈分析装置;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试之后,所述方法还包括:
所述用例执行装置在测试完成后,将测试反馈发送至所述测试任务中间件;
所述反馈分析装置从所述测试任务中间件中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件,其中,所述高质量种子为通过预设规则筛选后的测试用例;
所述测试任务生成装置根据所述高质量种子对产生的测试用例进行优化。
可选地,所述用例执行装置还包括:代理服务模块和若干虚拟机;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试,包括:
所述代理服务模块获取若干虚拟机对应的虚拟机状态,根据所述虚拟机状态确定处于空闲状态的虚拟机数目,根据所述虚拟机数目向所述测试任务中间件请求相应数目的测试任务;
所述代理服务模块在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据所述测试任务进行模糊测试。
可选地,所述用例执行装置还包括:若干对应的代理服务模块以及物理机;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试之前,所述方法还包括:
所述代理服务模块在接收到用例执行装置启动指令时,根据所述物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机。
可选地,所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试之后,所述方法还包括:
所述用例执行装置在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件。
可选地,所述用例执行装置在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件之后,所述方法还包括:
所述目标代理服务模块向所述测试任务中间件发送连接请求;
所述测试任务中间件根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块反馈连接成功信息;
所述目标代理服务模块接收连接成功信息,并从所述测试任务中间件中按照预设选取策略获取测试任务。
可选地,所述虚拟机状态包括:空闲状态、执行状态以及重新启动状态;
所述代理服务模块在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机之后,所述方法还包括:
所述虚拟机在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。
本发明提出的系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;测试任务生成装置生成测试用例,将测试用例打包成测试任务发布至测试任务中间件;用例执行装置从测试任务中间件中按照预设选取策略获取测试任务,并根据测试任务进行模糊测试。通过上述方式,将用例生成以及用例执行独立成不同的子系统,使用中间件管理测试任务,实现了分布式内核模糊测试,实现子系统的并发运行,显著提高运行测试用例的效率,解决了当前内核模糊测试无法并行计算,测试效率低的技术问题。
附图说明
图1是本发明分布式的内核模糊测试系统第一实施例的结构框图;
图2是本发明分布式的内核模糊测试系统第二实施例的结构框图;
图3是本发明分布式的内核模糊测试系统第三实施例的结构框图;
图4是本发明分布式的内核模糊测试系统第四实施例的结构框图;
图5是本发明分布式的内核模糊测试系统第五实施例的结构框图;
图6为本发明分布式的内核模糊测试系统第一实施例的流程示意图。
附图标号说明:
标号 名称 标号 名称
10 测试任务生成装置 70 物理机
20 用例执行装置 80 用例存储模块
30 测试任务中间件 90 测试任务队列
40 反馈分析装置 100 测试反馈队列
50 代理服务模块 110 高质量种子队列
60 虚拟机
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1是本发明分布式的内核模糊测试系统第一实施例的结构框图。
如图1所示,本发明实施例提供了一种分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置10、用例执行装置20以及测试任务中间件30;
所述测试任务生成装置10,用于生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件30。本实施例中,测试任务生成装置10主要负责创建新的测试用例,测试用例可以根据已知的协议、接口规范或者随机函数从头开始生成,也可以从现有的数据样本中变异生成,本实施例对此不加以限制。
可以理解的是,模糊测试,也称Fuzz测试,是一种挖掘软件安全漏洞、检测软件健壮性的测试,通过向软件输入非法的字段或者随机坏数据(也称做fuzz),观测被测试软件是否异常,记录遭到破坏的位置。模糊测试将尽可能多的杂乱数据投入程序中,目前大部分的内核模糊测试框架无法并行计算,导致在面对海量的测试用例时,模糊测试的速度远不及测试用例的生成速度,造成模糊测试效率低。测试任务生成装置10将测试用例打包成可供测试任务中间件30接收的格式,测试任务中可以包括测试任务标识信息、证书信息以及优先级信息。
所述用例执行装置20,用于从所述测试任务中间件30中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。本实施例中,用例执行装置20在与测试任务中间件30通信时,根据当前所需要的测试任务个数从测试任务中间件30中获取测试任务,具体过程可以为:用例执行装置20获取当前可执行任务个数,将当前可执行任务个数发送给测试任务中间件30;测试任务中间件30根据当前可执行任务个数从测试任务的队列中提取对应个数的测试任务发送给用例执行装置20;用例执行装置20接收对应个数的测试任务,并分配给各执行单元进行模糊测试。
需要说明的是,预设选取策略可以为根据当前所需任务个数与测试任务中间件30进行通信获取相应个数的测试任务,也可以为抢占式的选取策略,测试任务中间件30在接收到用例执行装置20的请求时,根据任务优先级对测试任务进行排序,将高优先级的测试任务发送给用例执行装置20。
可以理解的是,所述分布式的内核模糊测试系统还包括:反馈分析装置40,反馈分析装置40可以与用例执行装置20在同一个装置,也可以另外独立出一个装置,用于对用例执行装置20测试得到的用例反馈进行分析,得到优质的测试用例,将优质的测试用户通过测试任务中间件30反馈给测试任务生成装置10,从而使测试任务生成装置10根据反馈的优质测试用例优化生成的测试用例。在具体实现中,用例执行装置20根据测试任务进行模糊测试,确定是否能够响应,响应是否正确以及其他测试结果信息,将测试反馈发送给反馈分析装置40。
本实施例提出的系统包括:测试任务生成装置10、用例执行装置20以及测试任务中间件30;测试任务生成装置10生成测试用例,将测试用例打包成测试任务发布至测试任务中间件30;用例执行装置20从测试任务中间件30中按照预设选取策略获取测试任务,并根据测试任务进行模糊测试。通过上述方式,将用例生成以及用例执行独立成不同的子系统,使用中间件管理测试任务,实现了分布式内核模糊测试,实现子系统的并发运行,显著提高运行测试用例的效率,解决了当前内核模糊测试无法并行计算,测试效率低的技术问题。
参考图2,图2为本发明分布式的内核模糊测试系统第二实施例的结构框图。
基于上述第一实施例,本实施例中,所述分布式的内核模糊测试系统还包括:反馈分析装置40;
所述用例执行装置20,还用于在测试完成后,将测试反馈发送至所述测试任务中间件30。本实施例中,将用例生成、用例执行以及反馈分析独立成三个不同子系统,实现三个装置的并发运行,能够显著提高运行效率,测试任务中间件30不仅用于管理测试任务,也用于管理测试反馈。
所述反馈分析装置40,用于从所述测试任务中间件30中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件30,其中,所述高质量种子为通过预设规则筛选后的测试用例。本实施例中,测试任务中间件30还用于管理高质量种子。模糊测试采用大量的测试用例,也就是种子,用例执行装置20通过测试用例进行模糊测试,监视异常结果,将测试反馈发送至任务中间件,反馈分析装置40根据测试反馈分析种子触发异常的能力,通过预设规则对大量种子进行筛选,得到高质量种子。
可以理解的是,预设规则可以为提取大量测试用例中测试反馈为异常且与其他高质量种子相似度小于阈值的用例信息,还可以采用自适应阈值算法对种子进行优先级划分,对于相似度小于阈值且带来新覆盖的种子,定义为高质量种子,也可以为其他方式,本实施例对此不加以限制。
所述测试任务生成装置10,还用于根据所述高质量种子对产生的测试用例进行优化。本实施例中,测试任务生成装置10在随机生成测试用例的同时,根据从测试任务中间件30获取到的高质量种子对测试用例进行优化,从而提高代码覆盖率,具体实现中,通过预设符号执行组件实现符号执行,确定多个预设测试用例文件,并将所述多个预设测试用例文件转换为基于导向性变异的模糊测试的初始测试用例,根据多个初始测试用例对待测试软件进行模糊测试,基于测试反馈中程序覆盖率对生成的测试用例进行导向性变异。
本实施例提出的系统还包括:反馈分析装置40,用例执行装置20在测试完成后,将测试反馈发送至测试任务中间件30;反馈分析装置40从测试任务中间件30中获取测试反馈,根据测试反馈提取出高质量种子,并将高质量种子发送至测试任务中间件30,其中,高质量种子包括通过预设规则筛选后的测试用例;测试任务生成装置10根据高质量种子对产生的测试用例进行优化。通过上述方式,将用例生成、用例执行以及反馈分析解耦独立成不同的子系统,使用中间件管理测试任务、测试反馈以及高质量种子,实现了分布式内核模糊测试,不同子系统之间可以并发运行,显著提高运行测试用例的效率,解决了当前内核模糊测试无法并行计算,测试效率低的技术问题。
参考图3,图3为本发明分布式的内核模糊测试系统第三实施例的结构框图。
基于上述第一实施例以及第二实施例,本实施例中,所述用例执行装置20还包括:代理服务模块50和若干虚拟机60;
所述代理服务模块50,用于获取若干虚拟机60对应的虚拟机60状态,根据所述虚拟机60状态确定处于空闲状态的虚拟机60数目,根据所述虚拟机60数目向所述测试任务中间件30请求相应数目的测试任务。本实施例中,代理服务模块50为Agent,Agent作为本实施例分布式的用例执行装置20的基础单元,具有一定程度的独立行为能力与智能,同时又遵从分布系统中预设的统一标准。在本实施例的分布式环境中,用例执行装置20包含若干台物理机70,每台物理机70上包含对应的Agent以及多台虚拟机60。
可以理解的是,代理服务模块50根据当前处于空闲状态的虚拟机60个数确认当前可执行任务个数,根据当前可执行任务个数向测试任务中间件30请求相应数目的测试任务。虚拟机60在执行模糊测试任务时,处于执行状态,在未执行测试任务且开启时,处于空闲状态,在当前运行次数达到预设运行次数时,进入重新启动状态。
需要说明的是,在用例执行装置20启动初期,Agent以快照的方式启动预设数目的虚拟机60,若干虚拟机60运行测试用例是并行的,因此增加虚拟机60实例数目可以提高测试用例运行的并行程度。
所述代理服务模块50,还用于在获取到所述测试任务中间件30发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机60,以使处于空闲状态的虚拟机60根据所述测试任务进行模糊测试。本实施例中,Agent根据当前处于空闲状态的虚拟机数目,向中间件请求相应数目的测试任务,之后将任务发送给各个虚拟机60,处于空闲状态的虚拟机60根据测试任务进行模糊测试,并将测试反馈发送给Agent,Agent回收虚拟机60进行模糊测试的反馈。
所述用例执行装置20还包括:若干对应的代理服务模块50以及物理机70;
所述代理服务模块50,用于在接收到用例执行装置20启动指令时,根据所述物理机70对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机60。本实施例中,预设启动策略可以为以快照的方式启动,用例执行装置20负责管理集群配置,由物理机70加Agent组合而成,在用例执行装置20启动初期,每个物理机70上的Agent根据物理机70的CPU核心数目以及内存大小计算出最佳虚拟机数目,以快照的方式启动相应数目的虚拟机60,快照启动的好处是一个虚拟机60可以启动多个实例,且不会破坏本身虚拟机60文件。每个虚拟机60有三种状态,空闲状态、执行状态以及重新启动状态。
可以理解的是,CPU的核心数目是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就是包括4个相对独立的CPU核心单元组,根据物理机70对应的CPU核心数目以及内存大小计算出最佳虚拟机数目的过程可以为Agent根据预设期望值确定每台虚拟机60对应的CPU占有情况,从而确定虚拟机60个数,最佳虚拟机数目的虚拟机60运行时,内存大小不超过预设占比,例如,预设占比为80%。预设期望值根据待测试程序的类型确定,例如,A待测试程序为开发人员或者IT工作人员使用的专业相关程序,B待测试程序为数据录入的网页程序,测试A待测试程序的虚拟机60需要运行很大的Java应用程序,因此,测试A待测试程序的预设期望值相对于测试B待测试程序的预设期望值更大,测试A待测试程序的最佳虚拟机数目比测试B待测试程序的最佳虚拟机数目少。
所述用例执行装置20,还用于在接收到计算资源添加指令时,获取用户输入的目标代理服务模块50的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件30。本实施例中,用例执行装置20设置有动态配置计算资源的功能,当需要新增计算资源,管理员在计算资源中添加Agent,再将计算资源接入到中间件网段,之后Agent会自动连接到中间件并领取测试任务。相应的,终止计算资源Agent即可削减计算资源。
所述目标代理服务模块50,用于向所述测试任务中间件30发送连接请求。
所述测试任务中间件30,还用于根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块50反馈连接成功信息。本实施例中,目标代理服务模块50在与测试任务中间件30建立连接时,根据计算资源的标识信息进行认证,从而实现计算资源的新增。
所述目标代理服务模块50,还用于接收连接成功信息,并从所述测试任务中间件30中按照预设选取策略获取测试任务。本实施例中,目标代理服务模块50与测试任务中间件30连接成功后,根据最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机60,从测试任务中间件30中按照预设选取策略获取测试任务,在获取到测试任务中间件30发送的相应数目的测试任务时,将测试任务发送给处于空闲状态的虚拟机60,以使处于空闲状态的虚拟机60根据测试任务进行模糊测试。
所述虚拟机60状态包括:空闲状态、执行状态以及重新启动状态;
所述虚拟机60,用于在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。
本实施例的用例执行装置20包括物理机70、代理服务模块50以及若干虚拟机60,代理服务模块50管理获取若干虚拟机60对应的虚拟机60状态,根据虚拟机60状态确定处于空闲状态的虚拟机60数目,根据虚拟机60数目向测试任务中间件30请求相应数目的测试任务;在获取到测试任务中间件30发送的相应数目的测试任务时,将测试任务发送给处于空闲状态的虚拟机60,以使处于空闲状态的虚拟机60根据测试任务进行模糊测试。用例执行装置20实现了动态添加和删除计算资源,通过设计中间件管理中管理测试任务、测试反馈以及高质量种子,进而使得整个系统支持高并发,显著提高整个系统运行测试用例的效率,也使得整个系统支持动态添加物理机70等计算资源,资源配置更加灵活。
参考图4,图4为本发明分布式的内核模糊测试系统第四实施例的结构框图。
基于上述第一实施例以及第二实施例,本实施例中,所述分布式的内核模糊测试系统还包括:用例存储模块80;
所述反馈分析装置40,还用于对所述测试反馈进行分析,并根据分析结果将所述测试反馈存储在所述用例存储模块80中。
所述反馈分析装置40,还用于对所述测试反馈进行分析,确定所述测试反馈的覆盖率信息,在所述覆盖率信息中包含新的边覆盖率或者块覆盖率时,将对应的测试反馈存储在所述用例存储模块80中。本实施例中,反馈分析装置40负责分析测试反馈中的覆盖率信息,如果包含新的边覆盖率,或者新的块覆盖率,则将反馈存储到数据库中,基于llvm的addr2line实现覆盖率信息的统计,addr2line工具是一个可以将指令的地址和可执行映像转换为文件名、函数名和源代码行数的工具,能够查询内核地址对应的代码行,此外还使用哈希表缓存地址以提高效率。
可以理解的是,代码覆盖是软件测试的一种度量,用于描述源代码被测试的比例和程度,所得比例称为代码覆盖率,在具体实现中,可以通过AFL(American fuzzy lop)工具在编译时静态插桩,当程序运行时可获取到边覆盖信息,块覆盖率(BBL,basic block)可以通过程序插桩来获取。以通过AFL记录边覆盖信息为例进行说明,AFL记录边覆盖信息包括边的hash以及这个边被命中的次数。边覆盖信息使用数组记录,边hash作为数组的索引,数组中的值是边被覆盖的次数,本实施例把一个hash记录直接对应为一条边覆盖记录,在检测到新的hash记录时,将对应的测试反馈存储在所述用例存储模块80中。
所述反馈分析装置40,还用于将所述覆盖率信息发送至客户端,以使所述客户端根据所述覆盖率信息对覆盖率统计信息进行可视化展示。本实施例中,客户端为连入网络的前端,共享网络上的各种资源。反馈分析装置40,将覆盖率信息发送至前端,前端对覆盖率统计信息进行可视化展示。
本实施例的分布式的内核模糊测试系统包括:用例存储模块80;反馈分析装置40对测试反馈进行分析,确定测试反馈的覆盖率信息,在覆盖率信息中包含新的边覆盖率或者块覆盖率时,将对应的测试反馈存储在用例存储模块80中,设计用例存储模块80,与用例生成、用例执行以及反馈分析并发进行,避免存储测试反馈的进行影响系统运行,进而使得整个系统支持高并发,显著提高整个系统运行测试用例的效率。
参考图5,图5为本发明分布式的内核模糊测试系统第五实施例的结构框图。
本实施例中,所述测试任务中间件30包括:测试任务队列90;
所述测试任务生成装置10,还用于将测试任务发布至所述测试任务队列90。本实施例中,测试任务中间件30内部包括线程安全的生产者/消费者队列,在不使用消息队列时,请求数据直接发送至测试任务生成装置10的数据库,在高并发的情况下数据库压力剧增,使得响应速度变慢。在使用消息队列之后,各个装置向测试任务生成装置10发送请求数据后立即返回,由消息队列的消费者进程从消息队列中获取数据,发送至对应的装置,响应速度得到大幅改善。
所述测试任务中间件30,用于在接收到所述用例执行装置20的测试任务请求信息时,根据所述测试任务请求信息从所述测试任务队列90中确定对应的目标测试任务,并将所述目标测试任务发送至所述用例执行装置20。本实施例中,测试任务中间件30解决的就是分布式系统之间消息传递的问题,测试任务中间件30和各个子系统的通信使用gRPC实现,测试任务中间件30本身是一个gRPC服务,各个子系统都是该服务的客户端。每个客户端都包含1条Request(请求)线程,该线程向中间件请求数据,用例执行装置20向测试任务中间件30请求测试任务,如果测试任务队列90中没有数据,则陷入阻塞,直到相应数据进入队列。
所述测试任务中间件30包括:测试反馈队列100;
所述用例执行装置20,还用于将测试反馈发送至所述测试反馈队列100。
所述测试任务中间件30,还用于在接收到所述反馈分析装置40的测试反馈请求信息时,根据所述测试反馈请求信息从所述测试反馈队列100中确定对应的目标测试反馈,并将所述目标测试反馈发送至所述反馈分析装置40。本实施例中,反馈分析装置40向测试任务中间件30请求测试反馈,如果测试反馈队列100中没有数据,则陷入阻塞,直到相应数据进入测试反馈队列100。
所述测试任务中间件30包括:高质量种子队列110;
所述反馈分析装置40,还用于将高质量种子发送至所述高质量种子队列110。
所述测试任务中间件30,还用于在接收到所述测试任务生成装置10的种子请求信息时,根据所述种子请求信息从所述高质量种子队列110中确定对应的目标高质量种子队列110,并将所述目标高质量种子队列110发送至所述测试任务生成装置10。本实施例中,测试任务生成装置10向测试任务中间件30请求高质量种子,如果高质量种子队列110中没有数据,则陷入阻塞,直到相应数据进入队列。
本实施例的测试任务中间件30包括测试任务队列90、测试反馈队列100以及高质量种子队列110,各个子系统向测试任务生成装置10发送请求数据后立即返回,由消息队列的消费者进程从消息队列中获取数据,发送至对应的子系统,响应速度得到大幅改善,避免了高并发导致的子系统压力大以及性能变差,进而使得整个系统支持高并发,显著提高整个系统运行测试用例的效率。
参照图6,图6为本发明分布式的内核模糊测试系统第一实施例的流程示意图。
如图6所示,本发明实施例提出的分布式的内核模糊测试方法应用于如上所述的分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述分布式的内核模糊测试方法,包括:
步骤S10:所述测试任务生成装置生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件。
需要说明的是,测试任务生成装置主要负责创建新的测试用例,测试用例可以根据已知的协议、接口规范或者随机函数从头开始生成,也可以从现有的数据样本中变异生成,本实施例对此不加以限制。
可以理解的是,模糊测试,也称Fuzz测试,是一种挖掘软件安全漏洞、检测软件健壮性的测试,通过向软件输入非法的字段或者随机坏数据(也称做fuzz),观测被测试软件是否异常,记录遭到破坏的位置。模糊测试将尽可能多的杂乱数据投入程序中,目前大部分的内核模糊测试框架无法并行计算,导致在面对海量的测试用例时,模糊测试的速度远不及测试用例的生成速度,造成模糊测试效率低。测试任务生成装置将测试用例打包成可供测试任务中间件接收的格式,测试任务中可以包括测试任务标识信息、证书信息以及优先级信息。
步骤S20:所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
可以理解的是,用例执行装置在与测试任务中间件通信时,根据当前所需要的测试任务个数从测试任务中间件中获取测试任务,具体过程可以为:用例执行装置获取当前可执行任务个数,将当前可执行任务个数发送给测试任务中间件;测试任务中间件根据当前可执行任务个数从测试任务的队列中提取对应个数的测试任务发送给用例执行装置;用例执行装置接收对应个数的测试任务,并分配给各执行单元进行模糊测试。
需要说明的是,预设选取策略可以为根据当前所需任务个数与测试任务中间件进行通信获取相应个数的测试任务,也可以为抢占式的选取策略,测试任务中间件在接收到用例执行装置的请求时,根据任务优先级对测试任务进行排序,将高优先级的测试任务发送给用例执行装置。
可以理解的是,所述分布式的内核模糊测试系统还包括:反馈分析装置,反馈分析装置可以与用例执行装置在同一个子系统,也可以另外独立出一个装置,用于对用例执行装置测试得到的用例反馈进行分析,得到优质的测试用例,将优质的测试用户通过测试任务中间件反馈给测试任务生成装置,从而使测试任务生成装置根据反馈的优质测试用例优化生成的测试用例。在具体实现中,用例执行装置根据测试任务进行模糊测试,确定是否能够响应,响应是否正确以及其他测试结果信息,将测试反馈发送给反馈分析装置。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
本实施例提出的系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;测试任务生成装置生成测试用例,将测试用例打包成测试任务发布至测试任务中间件;用例执行装置从测试任务中间件中按照预设选取策略获取测试任务,并根据测试任务进行模糊测试。通过上述方式,将用例生成以及用例执行独立成不同的子系统,使用中间件管理测试任务,实现了分布式内核模糊测试,实现子系统的并发运行,显著提高运行测试用例的效率,解决了当前内核模糊测试无法并行计算,测试效率低的技术问题。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的分布式的内核模糊测试系统,此处不再赘述。
在一实施例中,所述分布式的内核模糊测试系统还包括:反馈分析装置;
所述步骤S20之后,所述方法还包括:
所述用例执行装置在测试完成后,将测试反馈发送至所述测试任务中间件。
可以理解的是,将用例生成、用例执行以及反馈分析独立成三个不同子系统,实现三个装置的并发运行,能够显著提高运行效率,测试任务中间件不仅用于管理测试任务,也用于管理测试反馈。
所述反馈分析装置从所述测试任务中间件中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件,其中,所述高质量种子为通过预设规则筛选后的测试用例。
需要说明的是,测试任务中间件还用于管理高质量种子。模糊测试采用大量的测试用例,也就是种子,用例执行装置通过测试用例进行模糊测试,监视异常结果,将测试反馈发送至任务中间件,反馈分析装置根据测试反馈分析种子触发异常的能力,通过预设规则对大量种子进行筛选,得到高质量种子。
可以理解的是,预设规则可以为提取大量测试用例中测试反馈为异常且与其他高质量种子相似度小于阈值的用例信息,还可以采用自适应阈值算法对种子进行优先级划分,对于相似度小于阈值且带来新覆盖的种子,定义为高质量种子,也可以为其他方式,本实施例对此不加以限制。
所述测试任务生成装置根据所述高质量种子对产生的测试用例进行优化。
需要说明的是,测试任务生成装置在随机生成测试用例的同时,根据从测试任务中间件获取到的高质量种子对测试用例进行优化,从而提高代码覆盖率,具体实现中,通过预设符号执行组件实现符号执行,确定多个预设测试用例文件,并将所述多个预设测试用例文件转换为基于导向性变异的模糊测试的初始测试用例,根据多个初始测试用例对待测试软件进行模糊测试,基于测试反馈中程序覆盖率对生成的测试用例进行导向性变异。
本实施例提出的系统还包括:反馈分析装置,用例执行装置在测试完成后,将测试反馈发送至测试任务中间件;反馈分析装置从测试任务中间件中获取测试反馈,根据测试反馈提取出高质量种子,并将高质量种子发送至测试任务中间件,其中,高质量种子包括通过预设规则筛选后的测试用例;测试任务生成装置根据高质量种子对产生的测试用例进行优化。通过上述方式,将用例生成、用例执行以及反馈分析独立成不同的子系统,使用中间件管理测试任务、测试反馈以及高质量种子,实现了分布式内核模糊测试,不同子系统之间可以并发运行,显著提高运行测试用例的效率,解决了当前内核模糊测试无法并行计算,测试效率低的技术问题。
在一实施例中他,所述用例执行装置还包括:代理服务模块和若干虚拟机;
所述步骤S20,包括:
所述代理服务模块获取若干虚拟机对应的虚拟机状态,根据所述虚拟机状态确定处于空闲状态的虚拟机数目,根据所述虚拟机数目向所述测试任务中间件请求相应数目的测试任务。
需要说明的是,代理服务模块为Agent,Agent作为本实施例分布式的用例执行装置的基础单元,具有一定程度的独立行为能力与智能,同时又遵从分布系统中预设的统一标准。在本实施例的分布式环境中,用例执行装置包含若干台物理机,每台物理机上包含对应的Agent以及多台虚拟机。
可以理解的是,代理服务模块根据当前处于空闲状态的虚拟机个数确认当前可执行任务个数,根据当前可执行任务个数向测试任务中间件请求相应数目的测试任务。虚拟机在执行模糊测试任务时,处于执行状态,在未执行测试任务且开启时,处于空闲状态,在当前运行次数达到预设运行次数时,进入重新启动状态。
需要说明的是,在用例执行装置启动初期,Agent以快照的方式启动预设数目的虚拟机,若干虚拟机运行测试用例是并行的,因此增加虚拟机实例数目可以提高测试用例运行的并行程度。
所述代理服务模块在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据所述测试任务进行模糊测试。
可以理解的是,Agent根据当前处于空闲状态的虚拟机数目,向中间件请求相应数目的测试任务,之后将任务发送给各个虚拟机,处于空闲状态的虚拟机根据测试任务进行模糊测试,并将测试反馈发送给Agent,Agent回收虚拟机进行模糊测试的反馈。
进一步地,所述用例执行装置还包括:若干对应的代理服务模块以及物理机;
所述步骤S20之前,所述方法还包括:所述代理服务模块在接收到用例执行装置启动指令时,根据所述物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机。
需要说明的是,预设启动策略可以为以快照的方式启动,用例执行装置负责管理集群配置,由物理机加Agent组合而成,在用例执行装置启动初期,每个物理机上的Agent根据物理机的CPU核心数目以及内存大小计算出最佳虚拟机数目,以快照的方式启动相应数目的虚拟机,快照启动的好处是一个虚拟机可以启动多个实例,且不会破坏本身虚拟机文件。每个虚拟机有三种状态,空闲状态、执行状态以及重新启动状态。
可以理解的是,CPU的核心数目是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就是包括4个相对独立的CPU核心单元组,根据物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目的过程可以为Agent根据预设期望值确定每台虚拟机对应的CPU占有情况,从而确定虚拟机个数,最佳虚拟机数目的虚拟机运行时,内存大小不超过预设占比,例如,预设占比为80%。预设期望值根据待测试程序的类型确定,例如,A待测试程序为开发人员或者IT工作人员使用的专业相关程序,B待测试程序为数据录入的网页程序,测试A待测试程序的虚拟机需要运行很大的Java应用程序,因此,测试A待测试程序的预设期望值相对于测试B待测试程序的预设期望值更大,测试A待测试程序的最佳虚拟机数目比测试B待测试程序的最佳虚拟机数目少。
进一步地,所述步骤S20之后,所述方法还包括:所述用例执行装置在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件。
需要说明的是,用例执行装置设置有动态配置计算资源的功能,当需要新增计算资源,管理员在计算资源中添加Agent,再将计算资源接入到中间件网段,之后Agent会自动连接到中间件并领取测试任务。相应的,终止计算资源Agent即可削减计算资源。
进一步地,所述用例执行装置在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件之后,所述方法还包括:
所述目标代理服务模块向所述测试任务中间件发送连接请求。
所述测试任务中间件根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块反馈连接成功信息。
可以理解的是,目标代理服务模块在与测试任务中间件建立连接时,根据计算资源的标识信息进行认证,从而实现计算资源的新增。
所述目标代理服务模块接收连接成功信息,并从所述测试任务中间件中按照预设选取策略获取测试任务。
需要说明的是,目标代理服务模块与测试任务中间件连接成功后,根据最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机,从测试任务中间件中按照预设选取策略获取测试任务,在获取到测试任务中间件发送的相应数目的测试任务时,将测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据测试任务进行模糊测试。
进一步地,所述虚拟机状态包括:空闲状态、执行状态以及重新启动状态;
所述代理服务模块在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机之后,所述方法还包括:
所述虚拟机在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。
本实施例的用例执行装置包括物理机、代理服务模块以及若干虚拟机,代理服务模块管理获取若干虚拟机对应的虚拟机状态,根据虚拟机状态确定处于空闲状态的虚拟机数目,根据虚拟机数目向测试任务中间件请求相应数目的测试任务;在获取到测试任务中间件发送的相应数目的测试任务时,将测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据测试任务进行模糊测试。用例执行装置实现了动态添加和删除计算资源,通过设计中间件管理中管理测试任务、测试反馈以及高质量种子,进而使得整个系统支持高并发,显著提高整个系统运行测试用例的效率,也使得整个系统支持动态添加物理机等计算资源,资源配置更加灵活。
在一实施例中,所述分布式的内核模糊测试系统还包括:用例存储模块;
所述反馈分析装置从所述测试任务中间件中获取测试反馈之后,所述方法还包括:
所述反馈分析装置对所述测试反馈进行分析,并根据分析结果将所述测试反馈存储在所述用例存储模块中。
在一实施例中,所述反馈分析装置对所述测试反馈进行分析,并根据分析结果将所述测试反馈存储在所述用例存储模块中,包括:
所述反馈分析装置对所述测试反馈进行分析,确定所述测试反馈的覆盖率信息,在所述覆盖率信息中包含新的边覆盖率或者块覆盖率时,将对应的测试反馈存储在所述用例存储模块中。
在一实施例中,所述反馈分析装置对所述测试反馈进行分析之后,所述方法还包括:
所述反馈分析装置将所述覆盖率信息发送至客户端,以使所述客户端根据所述覆盖率信息对覆盖率统计信息进行可视化展示。
在一实施例中,所述测试任务中间件包括:测试任务队列;
所述测试任务生成装置将测试任务发布至所述测试任务中间件,包括:
所述测试任务生成装置将测试任务发布至所述测试任务队列;
所述测试任务生成装置将测试任务发布至所述测试任务队列之后,所述方法还包括:
所述测试任务中间件在接收到所述用例执行装置的测试任务请求信息时,根据所述测试任务请求信息从所述测试任务队列中确定对应的目标测试任务,并将所述目标测试任务发送至所述用例执行装置。
在一实施例中,所述测试任务中间件包括:测试反馈队列;
所述用例执行装置将测试反馈发送至所述测试任务中间件,包括:
所述用例执行装置将测试反馈发送至所述测试反馈队列;
所述用例执行装置将测试反馈发送至所述测试反馈队列之后,所述方法还包括:
所述测试任务中间件在接收到所述反馈分析装置的测试反馈请求信息时,根据所述测试反馈请求信息从所述测试反馈队列中确定对应的目标测试反馈,并将所述目标测试反馈发送至所述反馈分析装置。
在一实施例中,所述测试任务中间件包括:高质量种子队列;
所述反馈分析装置将所述高质量种子发送至所述测试任务中间件,包括:
所述反馈分析装置将高质量种子发送至所述高质量种子队列;
所述反馈分析装置将高质量种子发送至所述高质量种子队列之后,所述方法还包括:
所述测试任务中间件在接收到所述测试任务生成装置的种子请求信息时,根据所述种子请求信息从所述高质量种子队列中确定对应的目标高质量种子队列,并将所述目标高质量种子队列发送至所述测试任务生成装置。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
本发明公开了A1、一种分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述测试任务生成装置,用于生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件;
所述用例执行装置,用于从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
A2、如A1所述的分布式的内核模糊测试系统,所述分布式的内核模糊测试系统还包括:反馈分析装置;
所述用例执行装置,还用于在测试完成后,将测试反馈发送至所述测试任务中间件;
所述反馈分析装置,用于从所述测试任务中间件中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件,其中,所述高质量种子为通过预设规则筛选后的测试用例;
所述测试任务生成装置,还用于根据所述高质量种子对产生的测试用例进行优化。
A3、如A2所述的分布式的内核模糊测试系统,所述用例执行装置还包括:代理服务模块和若干虚拟机;
所述代理服务模块,用于获取若干虚拟机对应的虚拟机状态,根据所述虚拟机状态确定处于空闲状态的虚拟机数目,根据所述虚拟机数目向所述测试任务中间件请求相应数目的测试任务;
所述代理服务模块,还用于在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据所述测试任务进行模糊测试。
A4、如A3所述的分布式的内核模糊测试系统,所述用例执行装置还包括:若干对应的代理服务模块以及物理机;
所述代理服务模块,用于在接收到用例执行装置启动指令时,根据所述物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机。
A5、如A4所述的分布式的内核模糊测试系统,所述用例执行装置,还用于在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件。
A6、如A5所述的分布式的内核模糊测试系统,所述目标代理服务模块,用于向所述测试任务中间件发送连接请求;
所述测试任务中间件,还用于根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块反馈连接成功信息;
所述目标代理服务模块,还用于接收连接成功信息,并从所述测试任务中间件中按照预设选取策略获取测试任务。
A7、如A6所述的分布式的内核模糊测试系统,所述虚拟机状态包括:空闲状态、执行状态以及重新启动状态;
所述虚拟机,用于在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。
A8、如A2所述的分布式的内核模糊测试系统,所述分布式的内核模糊测试系统还包括:用例存储模块;
所述反馈分析装置,还用于对所述测试反馈进行分析,并根据分析结果将所述测试反馈存储在所述用例存储模块中。
A9、如A8所述的分布式的内核模糊测试系统,所述反馈分析装置,还用于对所述测试反馈进行分析,确定所述测试反馈的覆盖率信息,在所述覆盖率信息中包含新的边覆盖率或者块覆盖率时,将对应的测试反馈存储在所述用例存储模块中。
A10、如A9所述的分布式的内核模糊测试系统,所述反馈分析装置,还用于将所述覆盖率信息发送至客户端,以使所述客户端根据所述覆盖率信息对覆盖率统计信息进行可视化展示。
A11、如A1-A10中任一项所述的分布式的内核模糊测试系统,所述测试任务中间件包括:测试任务队列;
所述测试任务生成装置,还用于将测试任务发布至所述测试任务队列;
所述测试任务中间件,用于在接收到所述用例执行装置的测试任务请求信息时,根据所述测试任务请求信息从所述测试任务队列中确定对应的目标测试任务,并将所述目标测试任务发送至所述用例执行装置。
A12、如A2-A10中任一项所述的分布式的内核模糊测试系统,所述测试任务中间件包括:测试反馈队列;
所述用例执行装置,还用于将测试反馈发送至所述测试反馈队列;
所述测试任务中间件,还用于在接收到所述反馈分析装置的测试反馈请求信息时,根据所述测试反馈请求信息从所述测试反馈队列中确定对应的目标测试反馈,并将所述目标测试反馈发送至所述反馈分析装置。
A13、如A2-A10中任一项所述的分布式的内核模糊测试系统,所述测试任务中间件包括:高质量种子队列;
所述反馈分析装置,还用于将高质量种子发送至所述高质量种子队列;
所述测试任务中间件,还用于在接收到所述测试任务生成装置的种子请求信息时,根据所述种子请求信息从所述高质量种子队列中确定对应的目标高质量种子队列,并将所述目标高质量种子队列发送至所述测试任务生成装置。
本发明还公开了B14、一种分布式的内核模糊测试方法,所述分布式的内核模糊测试方法应用于如A1-A13中任一项所述的分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述分布式的内核模糊测试方法,包括:
所述测试任务生成装置生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
B15、如B14所述的分布式的内核模糊测试方法,所述分布式的内核模糊测试系统还包括:反馈分析装置;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试之后,所述方法还包括:
所述用例执行装置在测试完成后,将测试反馈发送至所述测试任务中间件;
所述反馈分析装置从所述测试任务中间件中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件,其中,所述高质量种子为通过预设规则筛选后的测试用例;
所述测试任务生成装置根据所述高质量种子对产生的测试用例进行优化。
B16、如B15所述的分布式的内核模糊测试方法,所述用例执行装置还包括:代理服务模块和若干虚拟机;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试,包括:
所述代理服务模块获取若干虚拟机对应的虚拟机状态,根据所述虚拟机状态确定处于空闲状态的虚拟机数目,根据所述虚拟机数目向所述测试任务中间件请求相应数目的测试任务;
所述代理服务模块在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据所述测试任务进行模糊测试。
B17、如B16所述的分布式的内核模糊测试方法,所述用例执行装置还包括:若干对应的代理服务模块以及物理机;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试之前,所述方法还包括:
所述代理服务模块在接收到用例执行装置启动指令时,根据所述物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机。
B18、如B17所述的分布式的内核模糊测试方法,所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试之后,所述方法还包括:
所述用例执行装置在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件。
B19、如B18所述的分布式的内核模糊测试方法,所述用例执行装置在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件之后,所述方法还包括:
所述目标代理服务模块向所述测试任务中间件发送连接请求;
所述测试任务中间件根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块反馈连接成功信息;
所述目标代理服务模块接收连接成功信息,并从所述测试任务中间件中按照预设选取策略获取测试任务。
B20、如B19所述的分布式的内核模糊测试方法,所述虚拟机状态包括:空闲状态、执行状态以及重新启动状态;
所述代理服务模块在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机之后,所述方法还包括:
所述虚拟机在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。

Claims (10)

1.一种分布式的内核模糊测试系统,其特征在于,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述测试任务生成装置,用于生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件;
所述用例执行装置,用于从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
2.如权利要求1所述的分布式的内核模糊测试系统,其特征在于,所述分布式的内核模糊测试系统还包括:反馈分析装置;
所述用例执行装置,还用于在测试完成后,将测试反馈发送至所述测试任务中间件;
所述反馈分析装置,用于从所述测试任务中间件中获取测试反馈,根据所述测试反馈提取出高质量种子,并将所述高质量种子发送至所述测试任务中间件,其中,所述高质量种子为通过预设规则筛选后的测试用例;
所述测试任务生成装置,还用于根据所述高质量种子对产生的测试用例进行优化。
3.如权利要求2所述的分布式的内核模糊测试系统,其特征在于,所述用例执行装置还包括:代理服务模块和若干虚拟机;
所述代理服务模块,用于获取若干虚拟机对应的虚拟机状态,根据所述虚拟机状态确定处于空闲状态的虚拟机数目,根据所述虚拟机数目向所述测试任务中间件请求相应数目的测试任务;
所述代理服务模块,还用于在获取到所述测试任务中间件发送的相应数目的测试任务时,将所述测试任务发送给处于空闲状态的虚拟机,以使处于空闲状态的虚拟机根据所述测试任务进行模糊测试。
4.如权利要求3所述的分布式的内核模糊测试系统,其特征在于,所述用例执行装置还包括:若干对应的代理服务模块以及物理机;
所述代理服务模块,用于在接收到用例执行装置启动指令时,根据所述物理机对应的CPU核心数目以及内存大小计算出最佳虚拟机数目,并根据所述最佳虚拟机数目按照预设启动策略启动相应数目的虚拟机。
5.如权利要求4所述的分布式的内核模糊测试系统,其特征在于,所述用例执行装置,还用于在接收到计算资源添加指令时,获取用户输入的目标代理服务模块的标识信息,根据所述标识信息对计算资源进行更新,并将更新后的计算资源发送至所述测试任务中间件。
6.如权利要求5所述的分布式的内核模糊测试系统,其特征在于,所述目标代理服务模块,用于向所述测试任务中间件发送连接请求;
所述测试任务中间件,还用于根据所述更新后的计算资源对所述连接请求进行验证,在验证通过后,向所述目标代理服务模块反馈连接成功信息;
所述目标代理服务模块,还用于接收连接成功信息,并从所述测试任务中间件中按照预设选取策略获取测试任务。
7.如权利要求6所述的分布式的内核模糊测试系统,其特征在于,所述虚拟机状态包括:空闲状态、执行状态以及重新启动状态;
所述虚拟机,用于在接收到测试任务时,进入执行状态,并获取当前运行次数,在所述当前运行次数达到预设运行次数时,进入重新启动状态。
8.如权利要求2所述的分布式的内核模糊测试系统,其特征在于,所述分布式的内核模糊测试系统还包括:用例存储模块;
所述反馈分析装置,还用于对所述测试反馈进行分析,并根据分析结果将所述测试反馈存储在所述用例存储模块中。
9.如权利要求8所述的分布式的内核模糊测试系统,其特征在于,所述反馈分析装置,还用于对所述测试反馈进行分析,确定所述测试反馈的覆盖率信息,在所述覆盖率信息中包含新的边覆盖率或者块覆盖率时,将对应的测试反馈存储在所述用例存储模块中。
10.一种分布式的内核模糊测试方法,其特征在于,所述分布式的内核模糊测试方法应用于如权利要求1-9中任一项所述的分布式的内核模糊测试系统,所述分布式的内核模糊测试系统包括:测试任务生成装置、用例执行装置以及测试任务中间件;
所述分布式的内核模糊测试方法,包括:
所述测试任务生成装置生成测试用例,将所述测试用例打包成测试任务发布至所述测试任务中间件;
所述用例执行装置从所述测试任务中间件中按照预设选取策略获取测试任务,并根据所述测试任务进行模糊测试。
CN202110311568.5A 2021-03-23 2021-03-23 分布式的内核模糊测试系统及方法 Active CN112948255B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110311568.5A CN112948255B (zh) 2021-03-23 2021-03-23 分布式的内核模糊测试系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110311568.5A CN112948255B (zh) 2021-03-23 2021-03-23 分布式的内核模糊测试系统及方法

Publications (2)

Publication Number Publication Date
CN112948255A true CN112948255A (zh) 2021-06-11
CN112948255B CN112948255B (zh) 2024-05-14

Family

ID=76227996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110311568.5A Active CN112948255B (zh) 2021-03-23 2021-03-23 分布式的内核模糊测试系统及方法

Country Status (1)

Country Link
CN (1) CN112948255B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658534A (zh) * 2022-11-04 2023-01-31 上海安般信息科技有限公司 一种基于多引擎融合的分布式模糊测试方法及装置
CN116594884A (zh) * 2023-05-16 2023-08-15 上海安般信息科技有限公司 一种基于使用并发方式的模糊测试方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150339216A1 (en) * 2014-05-22 2015-11-26 Citrix Systems, Inc. Providing Testing Environments Using Virtualization
CN105786667A (zh) * 2016-02-29 2016-07-20 惠州Tcl移动通信有限公司 一种分布式自动化测试方法及系统
CN108984401A (zh) * 2018-07-05 2018-12-11 山东科技大学 一种解耦测试方法
CN109254905A (zh) * 2017-07-13 2019-01-22 北京航空航天大学 基于工作流的分布式并行自动化测试系统
CN110443045A (zh) * 2019-08-13 2019-11-12 北京计算机技术及应用研究所 一种基于机器学习方法的模糊测试用例生成方法
CN111221729A (zh) * 2019-12-31 2020-06-02 的卢技术有限公司 一种平台服务与测试服务分离的自动化测试方法及系统
CN112181833A (zh) * 2020-09-28 2021-01-05 全球能源互联网研究院有限公司 一种智能化模糊测试方法、装置及系统
CN112417461A (zh) * 2020-12-07 2021-02-26 北京梆梆安全科技有限公司 设备固件的模糊测试方法及系统
CN112506808A (zh) * 2021-02-08 2021-03-16 南京吉拉福网络科技有限公司 测试任务执行方法、计算设备、计算系统和存储介质
CN112506765A (zh) * 2020-12-01 2021-03-16 北京鸿腾智能科技有限公司 软件测试方法、装置、设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150339216A1 (en) * 2014-05-22 2015-11-26 Citrix Systems, Inc. Providing Testing Environments Using Virtualization
CN105786667A (zh) * 2016-02-29 2016-07-20 惠州Tcl移动通信有限公司 一种分布式自动化测试方法及系统
CN109254905A (zh) * 2017-07-13 2019-01-22 北京航空航天大学 基于工作流的分布式并行自动化测试系统
CN108984401A (zh) * 2018-07-05 2018-12-11 山东科技大学 一种解耦测试方法
CN110443045A (zh) * 2019-08-13 2019-11-12 北京计算机技术及应用研究所 一种基于机器学习方法的模糊测试用例生成方法
CN111221729A (zh) * 2019-12-31 2020-06-02 的卢技术有限公司 一种平台服务与测试服务分离的自动化测试方法及系统
CN112181833A (zh) * 2020-09-28 2021-01-05 全球能源互联网研究院有限公司 一种智能化模糊测试方法、装置及系统
CN112506765A (zh) * 2020-12-01 2021-03-16 北京鸿腾智能科技有限公司 软件测试方法、装置、设备及存储介质
CN112417461A (zh) * 2020-12-07 2021-02-26 北京梆梆安全科技有限公司 设备固件的模糊测试方法及系统
CN112506808A (zh) * 2021-02-08 2021-03-16 南京吉拉福网络科技有限公司 测试任务执行方法、计算设备、计算系统和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HONGPO WANG等: "Software Testing Data Analysis Based on Data Mining", 《2017 4TH INTERNATIONAL CONFERENCE ON INFORMATION SCIENCE AND CONTROL ENGINEERING (ICISCE)》, pages 682 *
张玉: "基于中间件技术的分布式测试技术研究", 《CNKI优秀硕士学位论文全文库 工程科技Ⅱ辑》, no. 09, pages 032 - 6 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658534A (zh) * 2022-11-04 2023-01-31 上海安般信息科技有限公司 一种基于多引擎融合的分布式模糊测试方法及装置
CN115658534B (zh) * 2022-11-04 2024-01-19 上海安般信息科技有限公司 一种基于多引擎融合的分布式模糊测试方法及装置
CN116594884A (zh) * 2023-05-16 2023-08-15 上海安般信息科技有限公司 一种基于使用并发方式的模糊测试方法及装置
CN116594884B (zh) * 2023-05-16 2023-10-27 上海安般信息科技有限公司 一种基于使用并发方式的模糊测试方法及装置

Also Published As

Publication number Publication date
CN112948255B (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
US10430332B2 (en) System and method for performance tuning of garbage collection algorithms
US8341605B2 (en) Use of execution flow shape to allow aggregate data reporting with full context in an application manager
US8631401B2 (en) Capacity planning by transaction type
US20130074055A1 (en) Memoization Configuration File Consumed at Compile Time
US10216527B2 (en) Automated software configuration management
US9479416B2 (en) System and method for diagnosing information technology systems in multiple virtual parallel universes
US20030229890A1 (en) Method and system for optimizing software upgrades
US20170024240A1 (en) System and method for diagnosing information technology systems in multiple virtual parallel universes
CN109614227B (zh) 任务资源调配方法、装置、电子设备及计算机可读介质
CN112948255A (zh) 分布式的内核模糊测试系统及方法
EP2038745A2 (en) Tracking discrete elements of distributed transactions
WO2019041759A1 (zh) 服务器、区块链验签解密的方法及存储介质
US20210182054A1 (en) Preventing unexpected behavior in software systems due to third party artifacts
CN110048907B (zh) 一种集群环境下的全局流控方法及装置
CN113157411B (zh) 一种基于Celery的可靠可配置任务系统及装置
US8677370B2 (en) Generating resource consumption control limits
CN113330419A (zh) 一种设备应用安装方法和装置
CN107341047B (zh) 回调事件的路由处理方法、装置、存储介质及计算机设备
CN113360210A (zh) 数据对账方法、装置、计算机设备和存储介质
CN112181599A (zh) 模型训练方法、装置及存储介质
CN111008146A (zh) 对云主机安全进行测试的方法及系统
KR20170122874A (ko) 데이터 분산 서비스 기반의 응용 시스템의 통합 로그 관리 장치
Osterhage Computer Performance Optimization
US12022001B1 (en) Method and apparatus for providing secure debug information
KR20100071613A (ko) 유에스엔(usn) 미들웨어 질의 처리 로드 밸런싱 시스템 및 그 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100020 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Applicant after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100020 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Applicant before: Beijing Hongteng Intelligent Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant