CN111897734B - 基于在线式增量学习的模糊测试用例选择方法和装置 - Google Patents
基于在线式增量学习的模糊测试用例选择方法和装置 Download PDFInfo
- Publication number
- CN111897734B CN111897734B CN202010791542.0A CN202010791542A CN111897734B CN 111897734 B CN111897734 B CN 111897734B CN 202010791542 A CN202010791542 A CN 202010791542A CN 111897734 B CN111897734 B CN 111897734B
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- fuzzy
- effective
- case
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种基于在线式增量学习的模糊测试用例选择方法和装置。该方法以测试用例特征作为输入,测试用例质量评分作为输出组成训练样本;该测试用例特征包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征;利用模糊测试变异且执行过的初始测试用例构建训练样本集,对在线式增量学习模型进行训练;获取候选测试用例的所述测试用例特征输入在线式增量学习模型,获得预测的测试用例质量评分,选取质量最优测试用例进行模糊测试;将所述候选测试用例的测试用例特征及为其预测的测试用例质量评分组成新训练样本,加入到在线式增量学习模型的训练样本集中以优化模型。使用本发明能够提高模糊测试效率。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种基于在线式增量学习的模糊测试用例选择方法和装置。
背景技术
模糊测试是一种通过向目标系统或软件提供非预期的输入并监视异常结果来发现软件漏洞的方法,在国内外漏洞挖掘领域被广泛使用。自2013年谷歌开源模糊测试工具AFL(American Fuzzy Lop)以来,有大量的工作集中在对基于反馈的灰盒模糊测试的测试用例生成、测试用例选择、测试用例变异三个方面的优化,这些工作中提出了各种优化算法和其他的辅助技术,用以提高模糊测试的效率。
现有的一些模糊测试工具诸如AFL在进行测试用例选择时,按照测试用例添加的顺序进行选择,并根据执行时间、测试用例长度、是否被变异过等因素判定当前测试用例是否具有优先选择的资格。
对于模糊测试中的测试用例,不管是初始提供的还是变异过程中生成的,这些测试用例的质量优劣性都会有一个高低排序,因此优先变异和执行高质量的测试用例有助于提高模糊测试发现程序路径和漏洞的效率。
Zong Peiyuan等人(Zong P,Lv T,Wang D,et al.FuzzGuard:Filtering outUnreachable Inputs in Directed Grey-box Fuzzing through Deep Learning:USENIXSecurity 2020,2020[C].)提出一种基于深度学习的测试用例挑选方法FuzzGuard,该方法使用增量式的深度学习方法学习测试用例属性,进而帮助灰盒模糊测试在实际执行测试用例前过滤掉不可到达更深层的测试用例,而不必使用无用的测试用例实际执行目标程序,这种数据驱动的方法避免了使用诸如符号执行等传统技术的高耗时问题。
Wang Yunchao等人(Wang Y,Wu Z,Wei Q,et al.NeuFuzz:Efficient FuzzingWith Deep Neural Network[J].IEEE Access,2019,7:36340-36352.)提出了一种使用深度神经网络来学习和识别易受攻击的路径以指导测试用例选择的方案NeuFuzz。具体做法是从大量易受攻击的干净程序路径中学习而获得预测模型,然后使用该模型对模糊测试所执行的路径中是否存在漏洞进行分类,之后模糊器会优先选择执行了易受攻击路径的测试用例,并为这些测试用例分配更多的突变能量,以最大程度地提高错误发现的效率。
以上两种方案分别是从“去除无用测试用例”和“优先选择触发脆弱路径的测试用例”的角度去优化模糊测试测试用例选择策略,虽然这些方案通过识别无用测试用例和脆弱路径等信息极大地优化了模糊测试的测试用例选择策略,但对于测试用例执行过程中生成的其他信息没有更细粒度的分析和利用。
例如,现有的测试用例选择方法利用执行时间、测试用例长度、是否被变异过等因素判定测试用例的有效性,并未更多地考虑每个测试用例与其执行效果(例如,测试用例执行后覆盖的路径、触发的基本块数等)的关系和测试用例之间的关系,因此可能会导致模糊器虽然执行了大量的测试用例,但没有更快、更多地发现新路径(例如在覆盖导向的模糊测试中,大量测试用例的执行并不能产生更多新的程序路径以取得更高的路径覆盖率),从而影响了模糊测试的效率。
再如,现有针对二进制程序的模糊测试中,在提取程序执行情况时,很大一部分模糊测试技术利用高效的Intel PT进行记录,但很多时候只利用了Intel PT记录的基本块执行情况,并没有很好地利用其记录的条件语句跳转方式、跳转指令等更多细节信息,会导致资源浪费和降低测试效率。
本发明将更细粒度地利用模糊测试执行过程中生成的信息,以“选优”的方式提高模糊测试效率。
发明内容
有鉴于此,本发明提供了一种基于在线式增量学习的模糊测试用例选择方法和装置,能够提高模糊测试效率。
为了解决上述技术问题,本发明是这样实现的:
一种基于在线式增量学习的模糊测试用例选择方法,包括:
以测试用例特征作为输入,测试用例质量评分作为输出组成训练样本;所述测试用例特征包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征;
利用模糊测试变异且执行过的初始测试用例构建训练样本集,对在线式增量学习模型进行训练,使得在线式增量学习模型学习测试用例与模糊测试执行效果之间的关系;
利用模糊测试过程中产生的有效测试用例作为候选测试用例,获取候选测试用例的所述测试用例特征,输入在线式增量学习模型,获得预测的测试用例质量评分,选取质量最优测试用例作为待变异测试用例进行模糊测试;
获取所述候选测试用例的测试用例特征及为其预测的测试用例质量评分,组成新训练样本,加入到在线式增量学习模型的训练样本集中以优化模型。
优选地,所述测试用例自身特征为测试用例大小;所述模糊测试执行特征为测试用例执行时间;所述模糊测试执行效果特征包括触发的基本块数、新触发的基本块数、有效字节数、有效字节比例、变异得到的测试用例中有效测试用例比例;所述硬件程序追踪得到的指令特征包括硬件程序追踪数据解码后统计获得的外部调用指令数、cmp指令数和间接调用指令数;
所述触发的基本块数:测试用例执行所触发的基本块数;
所述新触发的基本块数:测试用例本次执行所触发的基本块数与变异前执行所触发的基本块数之差;
所述有效字节数:如果当前测试用例为通过变异单个字节能够发现新路径的有效测试用例,则当前测试用例的有效字节数增加1,否则不累加,使得变异后的测试用例继承变异前的测试用例的有效字节数;
所述有效字节比例:所述有效字节数占整个测试用例大小的比例;
所述变异得到的测试用例中有效测试用例比例:如果当前测试用例变异产生的测试用例为有效测试用例,则将当前测试用例对应的有效测试用例累加数增加1,采用有效测试用例累加数除以模糊测试变异总次数,得到所述变异得到的测试用例中有效测试用例比例;变异得到的测试用例同样继承变异前的测试用例的有效测试用例比例。
优选地,采用初始测试用例构建训练样本时,采用给定值作为训练样本中的质量评分,或将量化后的测试用例特征进行加权求和并将计算获得的加权和作为训练样本中的质量评分。
优选地,所述在线式增量学习模型采用学习向量量化网络LVQ。
优选地,采用流水线式并行化执行,即针对每个目标二进制程序,在模糊测试开始执行时,暂不启动在线式增量学习模型,令模糊测试执行一段时间或生成指定数量的测试用例,将生成的测试用例作为初始测试用例构建训练样本,再启动在线式增量学习模型进行训练;训练完成后,以并行方式运行模糊测试和在线式增量学习模型,不断将新的训练样本提供给在线式增量学习模型,实现在线式增量模型的在线式学习,直至模糊测试结束。
本发明还提供了一种基于在线式增量学习的模糊测试用例选择装置,该测试用例选择装置与模糊测试模块相连;该测试用例选择装置包括:训练样本生成模块、模型训练模块、在线式增量学习模型、模糊测试用例选优模块、新样本生成回馈模块和用例特征提取模块;
训练样本生成模块,用于以测试用例特征作为输入,测试用例质量评分作为输出组成训练样本;所述测试用例特征包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征;利用模糊测试变异且执行过的初始测试用例构建训练样本集;
模型训练模块,用于采用所述训练样本对在线式增量学习模型进行训练;
用例特征提取模块,用于利用模糊测试过程中产生的有效测试用例作为候选测试用例,获取候选测试用例的所述测试用例特征,发送给所述模糊测试用例选优模块和新样本生成回馈模块;
模糊测试用例选优模块,用于将候选测试用例的测试用例特征输入训练好的在线式增量学习模型,获得预测的测试用例质量评分;选取质量最优测试用例作为待变异测试用例,提供给模糊测试模块;由在线式增量学习模型将候选测试用例的测试用例质量评分提供给所述新样本生成回馈模块;
新样本生成回馈模块,用于将所接收的所述候选测试用例的测试用例特征和测试用例质量评分,组成新训练样本,加入到模型训练模块所使用的训练样本集中以优化模型。
优选地,所述测试用例自身特征为测试用例大小;所述模糊测试执行特征为测试用例执行时间;所述模糊测试执行效果特征包括触发的基本块数、新触发的基本块数、有效字节数、有效字节比例、变异得到的测试用例中有效测试用例比例;所述硬件程序追踪得到的指令特征包括硬件程序追踪数据解码后统计获得的外部调用指令数、cmp指令数和间接调用指令数;
所述触发的基本块数:测试用例执行所触发的基本块数;
所述新触发的基本块数:测试用例本次执行所触发的基本块数与变异前执行所触发的基本块数之差;
所述有效字节数:如果当前测试用例为通过变异单个字节能够发现新路径的有效测试用例,则当前测试用例的有效字节数增加1,否则不累加,使得变异后的测试用例继承变异前的测试用例的有效字节数;
所述有效字节比例:所述有效字节数占整个测试用例大小的比例;
所述变异得到的测试用例中有效测试用例比例:如果当前测试用例变异产生的测试用例为有效测试用例,则将当前测试用例对应的有效测试用例累加数增加1,采用有效测试用例累加数除以模糊测试变异总次数,得到所述变异得到的测试用例中有效测试用例比例;变异得到的测试用例同样继承变异前的测试用例的有效测试用例比例。
优选地,所述训练样本生成模块采用初始测试用例构建训练样本时,确定测试用例质量评分的方式为:采用给定值作为测试用例质量评分,或将测试用例特征进行加权和计算,采用加权和作为测试用例质量评分。
优选地,所述在线式增量学习模型采用学习向量量化网络LVQ。
优选地,所述在线式增量学习模型与模糊测试模块并行运行;针对每个目标二进制程序,在模糊测试开始执行时,先暂不启动在线式增量学习模型,令模糊测试执行一段时间或生成指定数量的测试用例,将生成的测试用例作为初始测试用例构建训练样本,再启动在线式增量学习模型进行训练;训练完成后,以并行方式运行模糊测试和在线式增量学习模型,不断将新的训练样本提供给在线式增量学习模型,实现在线式增量模型的在线式学习,直至模糊测试结束。
有益效果:
本发明利用在线式增量学习的方式构建测试用例与执行效果之间的关联性,从而能够根据当前程序执行状态预测可能产生良好执行效果的测试用例,以便为之后的模糊测试选择出高质量的测试用例,进而解决了目前由于缺乏针对性的测试用例选择策略导致的模糊测试测试效率低的问题。
本发明从4个方面选取反映模糊测试执行效果的因素,包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征,使得学习模型能够学习到更真实的测试用例与模糊测试执行效果之间的关联性,从而为模糊测试选择出更优质的测试用例。
附图说明
图1为基于在线式增量学习的测试用例选择方案的原理图。
图2为模型学习与模糊测试的流水线式并行化执行方式示意图。
图3为基于在线式增量学习的测试用例选择装置的组成框图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种基于在线式增量学习的高质量测试用例选择方案,其基本思想在于:本发明选择了4个方面的模糊测试执行效果表征参数,分别是测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征,共同组成测试用例特征,并给定测试用例特征的质量;以成对的测试用例特征和质量为训练样本,利用在线式增量学习的方式学习测试用例与模糊测试执行效果之间的关系,从而能够根据当前程序执行状态预测可能产生良好模糊测试执行效果的测试用例,例如,可能触发更多程序新路径,以便为之后的模糊测试选择出高质量的测试用例。
图1为本发明基于在线式增量学习的高质量模糊测试用例选择方法流程图。该方法主要包含三个部分,分别是样本构建、模型训练和用例选优。
样本构建是该方案的核心和关键步骤,该阶段首先要从模糊测试的运行反馈信息中获取能够标识测试用例执行效果的细粒度程序执行状态特征,本发明将测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征组合在一起,形成4类元素的测试用例特征,并向量化;其次要在构造初始训练样本时,依据这些特征确定相应的测试用例的执行效果,即通过实验分析和人工经验给出一个标识测试用例执行效果的质量评分,依据这个评分,即可形成初始训练样本对提供给下一阶段进行模型训练。
模型训练阶段的训练样本由测试用例特征向量和测试用例质量评分两部分构成。该阶段选取支持在线式增量学习的学习模型,利用构建好的训练样本,对模型进行训练,使得模型能够学习到测试用例与其执行效果之间的关系,并能据此给出标识测试用例执行效果的量化的质量分值;因此,学习模型的输入应该设置为包含前述4类元素的测试用例特征,输出为预测的测试用例质量评分。此外,在这一阶段,为了支持在线式增量学习,采用流水线式并行化方式让模型学习与模糊测试并行执行。
用例选优阶段主要是将模糊测试产生的大量有效测试用例,作为候选测试用例,利用前一阶段构建的学习模型,预测出这些候选测试用例的质量评分,并根据该评分建立按照质量分值有序排列的测试用例队列,从中选取分值最高的测试用例作为待变异的测试用例进行模糊测试。同时将候选测试用例的测试用例特征和预测的质量评分组成新的训练样本加入训练集。如此往复,所构建的学习模型将不断进行在线式增量学习,直至模糊测试过程结束。
下面对上述三个阶段进行详细描述。
1)样本构建
样本构建阶段的两个关键点是如何选取能够标识测试用例执行效果的特征,以及如何量化初始测试用例的质量。
①特征选取
采用硬件程序追踪技术后,可以在模糊测试执行过程中获得更为准确的程序运行反馈信息,这些信息其实已经告诉了我们测试用例的执行效果,但如何抽丝剥茧,从中找出指征测试用例执行效果的特征信息,却是一个难点,也是基于在线式增量学习的高质量测试用例选择方法的一个关键点。
基于此,本发明通过对现有相关工作的分析,以及实验验证和分析,初步选择10个特征组成测试用例特征,分别是:测试用例大小;测试用例执行时间;触发的基本块数、新触发的基本块数、有效字节数、有效字节比例、变异得到的测试用例中有效测试用例的比例;外部调用指令数、cmp指令数和间接调用指令数。
上述10个特征信息可以分为4类:
a.无需执行的测试用例自身特征
测试用例大小可以直接通过读取测试用例获得其字节数。
b.执行模糊测试后可直接获得特征
测试用例执行时间:可以通过记录测试用例开始执行时间和结束时间获得。
c.借助硬件程序追踪获得的模糊测试执行效果特征
触发的基本块数:通过硬件追踪后对追踪数据解码获得该测试用例执行所触发的基本块数。
新触发的基本块数:测试用例本次执行所触发的基本块数与变异前执行所触发的基本块数之差。
有效字节数:如果当前测试用例为通过变异单个字节能够发现新路径的有效测试用例,则当前测试用例的有效字节数增加1,否则不累加,使得变异后的测试用例继承变异前的测试用例的有效字节数。
有效字节比例:上述有效字节数占整个测试用例大小的比例。
变异得到的测试用例中有效测试用例比例:如果当前测试用例变异产生的测试用例为有效测试用例,则将当前测试用例对应的有效测试用例累加数增加1,采用有效测试用例累加数除以模糊测试变异总次数,得到所述变异得到的测试用例中有效测试用例比例;变异后得到的测试用例同样继承变异前的测试用例的有效测试用例比例。
d.硬件程序追踪得到的指令特征
硬件程序追踪数据解码后通过指令统计可以获得程序自身特征,包括外部调用指令数、cmp指令数和间接调用指令数。
在所述4类10个特征信息中,针对测试用例大小,已有技术表明,测试用例一般包括元数据和数据两部分,同类型测试用例大小上的差异主要体现在数据部分,而触发程序大部分路径的均在元数据部分,因此优先选择小的测试用例,可以在不对测试效果产生较大影响的前提下加快模糊测试进程。
而对于触发的基本块来说,一个测试用例触发的基本块数越多,意味着其执行路径越长;同时,如果新触发的基本块越多,既代表该测试用例的执行发现了更多新的程序分支,利用其进行变异得到的测试用例也更加有效。
从测试用例自身构成来看,并不是所有的字节在测试中都是有效的,其中只有部分字节能够在翻转时造成执行路径与原始路径的不一致,这部分字节即称为有效字节。从有效字节的特性可以推断,如果一个测试用例含有的有效字节个数越多、有效字节的比例越高,使用该测试用例变异时也将更加有效。
而从测试用例变异角度看,模糊测试变异得到的测试用例并不都是有效的,其中有很大一部分不能触发得到新路径,因此,如果一个测试用例变异得到的测试用例中有高比例的有效测试用例,同样意味着该测试用例的有效性更高。
此外,在以往的技术中,二进制程序的特殊指令需要使用模拟器或反编译得到,但如果使用硬件程序追踪技术,只需要监视CPU中执行的指令,即可获得程序执行过程中使用的特殊指令,如外部调用、cmp和间接调用等,这些指令常常存在于程序分支处,如果目标二进制程序在执行测试用例时使用的此类指令越多,那意味着优先变异该测试用例越能够更快地提高模糊测试覆盖率。
②量化初始测试用例质量
为了能够让模型学习到测试用例与其执行效果之间的关系,需要提供一个初始训练样本集,该集合中的每个训练样本由测试用例特征向量和测试用例执行质量评分两部分构成。
确定了指征测试用例执行效果的特征信息后,就可以对测试用例进行处理以获得其特征向量。
对于初始测试用例的测试用例执行质量评分,可以采用给定初始评分的方式,或者根据实验结果,对指征测试用例执行效果的每个特征给定一个权值,标识该特征对测试用例整体执行效果的贡献,再采用对特征量化值加权求和方式获得测试用例执行效果的量化评分。
例如,针对每个测试用例来说,对应每一个指征测试用例执行效果的特征,通过对硬件程序追踪获取的程序执行状态信息进行进一步地处理和计算,都可以获得一个对应的量化值。假定以Ti表示第i个特征的值,以Wi表示在实验分析基础上主观给出的第i个特征的权值,则该测试用例执行质量的量化评分为
2)模型训练
围绕“在线式增量”学习这一特点,模型训练阶段的关键点在于:①如何选择一个支持在线式增量学习的学习模型;②由于模型的学习样本来自于程序运行状态信息,如何让模型学习与模糊测试同时进行,以实现在线学习;③如何实现模型的增量学习。
①模型选取
选取用于学习测试用例与其执行效果之间的学习模型时,主要考虑两方面:(i)能够提供给学习模型的训练样本由测试用例特征向量和测试用例执行质量评分两部分构成,即训练样本是带有标签信息的,因此要支持有监督的学习;(ii)要支持在线式增量学习,具有自适应、自组织等特点。
基于以上考虑,可选取的模型包括学习向量量化网络LVQ(Learning VectorQuantization)等。
②流水线式并行化模型学习与模糊测试
由于学习模型要支持“在线式学习”,因此要考虑:(i)模糊测试开始时,测试用例尚未执行,所以无法获取程序执行状态,从而无法产生学习模型所需的初始训练样本,那么什么时候才能获得足够的训练样本,启动学习模型?(ii)模型在线学习过程中,需要不断获取模糊测试的执行状态,这需要同时进行模糊测试和模型学习。
基于以上考虑,针对每一个目标二进制程序,在模糊测试开始执行时,先暂不启动学习模型,让模糊测试执行一段时间或生成一定数量的测试用例后,将这些测试用例作为初始测试用例,构建训练样本集,启动学习模型;一旦启动学习模型后,以并行方式运行模糊测试和学习模型,不断将新的训练样本提供给学习模型,实现模型的在线式学习,直至模糊测试结束。模型学习与模糊测试的流水线式并行化执行方式示意图如图2所示。
③模型的增量学习
模型的增量学习与用例选优阶段密切相关。模糊测试执行过程中,每次变异都会不断地产生新的测试用例,将有效测试用例作为候选测试用例。对这些候选测试用例进行特征化和向量化后,由当前的学习模型能够预测出相应测试用例质量评分,依据评分可以形成一个分值有序的候选测试用例队列,然后从中选择质量最优测试用例提供给模糊测试。所有候选测试用例的测试用例特征和预测的质量评分,形成新的训练样本,提交给学习模型进行增量学习。
3)用例选优
用例选优阶段与模型的增量学习密切相关,前述已经阐述了用例选优的主要处理流程,在此不再赘述,需要强调的是其中的“测试用例选优”的处理。根据前一步处理形成的分值有序的候选测试用例队列,可以直接选取分值最高的测试用例作为选择出的最优测试用例,但是,在实际处理时,考虑到测试样本的差异性等因素,在后续应用时也可以考虑结合其他影响因素,增加一些约束条件,对“测试用例选优”进行调优。
为了实现上述方法,本发明还提供了一种基于在线式增量学习的高质量模糊测试用例选择装置,该装置与模糊测试模块相连,向模糊测试模块提供待变异测试用例,从模糊测试模块获取模糊测试过程的相关信息。如图3所示,该装置包括训练样本生成模块、模型训练模块、在线式增量学习模型、模糊测试用例选优模块、新样本生成回馈模块和用例特征提取模块。
训练样本生成模块,用于以测试用例特征作为输入,测试用例质量评分作为输出组成训练样本;所述测试用例特征包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征;利用模糊测试变异且执行过的初始测试用例构建训练样本集。
其中,采用初始测试用例构建训练样本时,确定测试用例质量评分的方式为:采用给定值作为测试用例质量评分,或将测试用例特征进行加权和计算,采用加权和作为测试用例质量评分。
模型训练模块,用于采用训练样本对在线式增量学习模型进行训练。
用例特征提取模块,用于利用模糊测试过程中产生的有效测试用例作为候选测试用例,获取候选测试用例的所述测试用例特征,发送给所述模糊测试用例选优模块和新样本生成回馈模块。
模糊测试用例选优模块,用于将候选测试用例的测试用例特征输入训练好的在线式增量学习模型,获得预测的测试用例质量评分;选取质量最优测试用例,作为待变异的测试用例,提供给模糊测试模块。由在线式增量学习模型将候选测试用例的测试用例质量评分提供给所述新样本生成回馈模块。
模糊测试模块在高质量模糊测试用例选择装置之外,用于接收待变异的测试用例,执行模糊测试过程;将变异产生的有效测试用例作为候选测试用例,发送到用例特征提取模块,用于特征提取。
新样本生成回馈模块,用于将所接收的所述候选测试用例的测试用例特征和测试用例质量评分,组成新训练样本,加入到模型训练模块所使用的训练样本集中以优化模型。
在线式增量学习模型与模糊测试模块并行运行;针对每个目标二进制程序,在模糊测试开始执行时,先暂不启动在线式增量学习模型,令模糊测试执行一段时间或生成指定数量的测试用例后,利用生成的测试用例构建训练样本,再启动在线式增量学习模型进行训练;训练完成后,以并行方式运行模糊测试和在线式增量学习模型,不断将新的训练样本提供给在线式增量学习模型,实现在线式增量模型的在线式学习,直至模糊测试结束。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于在线式增量学习的模糊测试用例选择方法,其特征在于,包括:
以测试用例特征作为输入,测试用例质量评分作为输出组成训练样本;所述测试用例特征包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征;
利用模糊测试变异且执行过的初始测试用例构建训练样本集,对在线式增量学习模型进行训练,使得在线式增量学习模型学习测试用例与模糊测试执行效果之间的关系;
利用模糊测试过程中产生的有效测试用例作为候选测试用例,获取候选测试用例的所述测试用例特征,输入在线式增量学习模型,获得预测的测试用例质量评分,选取质量最优测试用例作为待变异测试用例进行模糊测试;
获取所述候选测试用例的测试用例特征及为其预测的测试用例质量评分,组成新训练样本,加入到在线式增量学习模型的训练样本集中以优化模型;
该方法采用流水线式并行化执行,即针对每个目标二进制程序,在模糊测试开始执行时,暂不启动在线式增量学习模型,令模糊测试执行一段时间或生成指定数量的测试用例,将生成的测试用例作为初始测试用例构建训练样本,再启动在线式增量学习模型进行训练;训练完成后,以并行方式运行模糊测试和在线式增量学习模型,不断将新的训练样本提供给在线式增量学习模型,实现在线式增量模型的在线式学习,直至模糊测试结束。
2.如权利要求1所述的方法,其特征在于,所述测试用例自身特征为测试用例大小;所述模糊测试执行特征为测试用例执行时间;所述模糊测试执行效果特征包括触发的基本块数、新触发的基本块数、有效字节数、有效字节比例、变异得到的测试用例中有效测试用例比例;所述硬件程序追踪得到的指令特征包括硬件程序追踪数据解码后统计获得的外部调用指令数、cmp指令数和间接调用指令数;
所述触发的基本块数:测试用例执行所触发的基本块数;
所述新触发的基本块数:测试用例本次执行所触发的基本块数与变异前执行所触发的基本块数之差;
所述有效字节数:如果当前测试用例为通过变异单个字节能够发现新路径的有效测试用例,则当前测试用例的有效字节数增加1,否则不累加,使得变异后的测试用例继承变异前的测试用例的有效字节数;
所述有效字节比例:所述有效字节数占整个测试用例大小的比例;
所述变异得到的测试用例中有效测试用例比例:如果当前测试用例变异产生的测试用例为有效测试用例,则将当前测试用例对应的有效测试用例累加数增加1,采用有效测试用例累加数除以模糊测试变异总次数,得到所述变异得到的测试用例中有效测试用例比例;变异得到的测试用例同样继承变异前的测试用例的有效测试用例比例。
3.如权利要求1所述的方法,其特征在于,采用初始测试用例构建训练样本时,确定测试用例质量评分的方式为:采用给定值作为训练样本中的质量评分,或将量化后的测试用例特征进行加权求和并将计算获得的加权和作为训练样本中的质量评分。
4.如权利要求1所述的方法,其特征在于,所述在线式增量学习模型采用学习向量量化网络LVQ。
5.一种基于在线式增量学习的模糊测试用例选择装置,该测试用例选择装置与模糊测试模块相连;其特征在于,该测试用例选择装置包括:训练样本生成模块、模型训练模块、在线式增量学习模型、模糊测试用例选优模块、新样本生成回馈模块和用例特征提取模块;
训练样本生成模块,用于以测试用例特征作为输入,测试用例质量评分作为输出组成训练样本;所述测试用例特征包括测试用例自身特征、模糊测试执行特征、模糊测试执行效果特征和硬件程序追踪得到的指令特征;利用模糊测试变异且执行过的初始测试用例构建训练样本集;
模型训练模块,用于采用所述训练样本对在线式增量学习模型进行训练;
用例特征提取模块,用于利用模糊测试过程中产生的有效测试用例作为候选测试用例,获取候选测试用例的所述测试用例特征,发送给所述模糊测试用例选优模块和新样本生成回馈模块;
模糊测试用例选优模块,用于将候选测试用例的测试用例特征输入训练好的在线式增量学习模型,获得预测的测试用例质量评分;选取质量最优测试用例作为待变异测试用例,提供给模糊测试模块;由在线式增量学习模型将候选测试用例的测试用例质量评分提供给所述新样本生成回馈模块;
新样本生成回馈模块,用于将所接收的所述候选测试用例的测试用例特征和测试用例质量评分,组成新训练样本,加入到模型训练模块所使用的训练样本集中以优化模型;
所述在线式增量学习模型与模糊测试模块并行运行;针对每个目标二进制程序,在模糊测试开始执行时,先暂不启动在线式增量学习模型,令模糊测试执行一段时间或生成指定数量的测试用例,将生成的测试用例作为初始测试用例构建训练样本,再启动在线式增量学习模型进行训练;训练完成后,以并行方式运行模糊测试和在线式增量学习模型,不断将新的训练样本提供给在线式增量学习模型,实现在线式增量模型的在线式学习,直至模糊测试结束。
6.如权利要求5所述的装置,其特征在于,所述测试用例自身特征为测试用例大小;所述模糊测试执行特征为测试用例执行时间;所述模糊测试执行效果特征包括触发的基本块数、新触发的基本块数、有效字节数、有效字节比例、变异得到的测试用例中有效测试用例比例;所述硬件程序追踪得到的指令特征包括硬件程序追踪数据解码后统计获得的外部调用指令数、cmp指令数和间接调用指令数;
所述触发的基本块数:测试用例执行所触发的基本块数;
所述新触发的基本块数:测试用例本次执行所触发的基本块数与变异前执行所触发的基本块数之差;
所述有效字节数:如果当前测试用例为通过变异单个字节能够发现新路径的有效测试用例,则当前测试用例的有效字节数增加1,否则不累加,使得变异后的测试用例继承变异前的测试用例的有效字节数;
所述有效字节比例:所述有效字节数占整个测试用例大小的比例;
所述变异得到的测试用例中有效测试用例比例:如果当前测试用例变异产生的测试用例为有效测试用例,则将当前测试用例对应的有效测试用例累加数增加1,采用有效测试用例累加数除以模糊测试变异总次数,得到所述变异得到的测试用例中有效测试用例比例;变异得到的测试用例同样继承变异前的测试用例的有效测试用例比例。
7.如权利要求5所述的装置,其特征在于,所述训练样本生成模块采用初始测试用例构建训练样本时,确定测试用例质量评分的方式为:采用给定值作为测试用例质量评分,或将测试用例特征进行加权和计算,采用加权和作为测试用例质量评分。
8.如权利要求5所述的装置,其特征在于,所述在线式增量学习模型采用学习向量量化网络LVQ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791542.0A CN111897734B (zh) | 2020-08-07 | 2020-08-07 | 基于在线式增量学习的模糊测试用例选择方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791542.0A CN111897734B (zh) | 2020-08-07 | 2020-08-07 | 基于在线式增量学习的模糊测试用例选择方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897734A CN111897734A (zh) | 2020-11-06 |
CN111897734B true CN111897734B (zh) | 2022-08-19 |
Family
ID=73246214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010791542.0A Active CN111897734B (zh) | 2020-08-07 | 2020-08-07 | 基于在线式增量学习的模糊测试用例选择方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897734B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445709B (zh) * | 2020-11-30 | 2022-09-30 | 安徽工业大学 | 一种通过gan解决afl测试模型数据不平衡的方法及装置 |
CN114385513B (zh) * | 2022-03-23 | 2022-07-08 | 中国工商银行股份有限公司 | 用例选择方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062795A (zh) * | 2018-07-24 | 2018-12-21 | 北京理工大学 | 一种模糊测试用例选择方法和装置 |
CN109117367A (zh) * | 2018-07-24 | 2019-01-01 | 北京理工大学 | 一种模糊测试变异数量确定方法和装置 |
CN109379329A (zh) * | 2018-09-05 | 2019-02-22 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
CN110175120A (zh) * | 2019-05-20 | 2019-08-27 | 北京理工大学 | 一种基于强化学习的模糊测试用例自适应变异方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452526B2 (en) * | 2017-06-15 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning for constrained mutation-based fuzz testing |
-
2020
- 2020-08-07 CN CN202010791542.0A patent/CN111897734B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062795A (zh) * | 2018-07-24 | 2018-12-21 | 北京理工大学 | 一种模糊测试用例选择方法和装置 |
CN109117367A (zh) * | 2018-07-24 | 2019-01-01 | 北京理工大学 | 一种模糊测试变异数量确定方法和装置 |
CN109379329A (zh) * | 2018-09-05 | 2019-02-22 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
CN110175120A (zh) * | 2019-05-20 | 2019-08-27 | 北京理工大学 | 一种基于强化学习的模糊测试用例自适应变异方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于循环神经网络的模糊测试用例生成;徐鹏 等;《计算机应用研究》;20190930;第36卷(第9期);2679-2685 * |
Also Published As
Publication number | Publication date |
---|---|
CN111897734A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN109587713B (zh) | 一种基于arima模型的网络指标预测方法、装置及存储介质 | |
CN109241740B (zh) | 恶意软件基准测试集生成方法及装置 | |
CN111897734B (zh) | 基于在线式增量学习的模糊测试用例选择方法和装置 | |
CN111782460A (zh) | 大规模日志数据的异常检测方法、装置和存储介质 | |
CN111275172A (zh) | 一种基于搜索空间优化的前馈神经网络结构搜索方法 | |
Naidu et al. | Classification of defects in software using decision tree algorithm | |
US20050049913A1 (en) | Method and apparatus for automated feature selection | |
Chung et al. | Automated machine learning for Internet of Things | |
CN115098292B (zh) | 应用程序崩溃根原因识别方法、装置及电子设备 | |
Zekany et al. | CrystalBall: Statically analyzing runtime behavior via deep sequence learning | |
Cheng et al. | Blocking bug prediction based on XGBoost with enhanced features | |
CN115394383A (zh) | 磷光材料的发光波长预测方法及系统 | |
CN113159441A (zh) | 银行业务项目实施情况的预测方法及装置 | |
CN116611813B (zh) | 一种基于知识图谱的智能运维管理方法及系统 | |
CN112416800A (zh) | 智能合约的测试方法、装置、设备及存储介质 | |
Murillo-Morera et al. | A Software Defect-Proneness Prediction Framework: A new approach using genetic algorithms to generate learning schemes. | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN114064472B (zh) | 基于代码表示的软件缺陷自动修复加速方法 | |
Turlea et al. | Generating complex paths for testing from an EFSM | |
CN116225752A (zh) | 基于故障模式库的微服务系统故障根因分析方法及系统 | |
CN115248780A (zh) | 接口测试用例的生成方法以及装置 | |
CN115147020A (zh) | 装修数据处理方法、装置、设备及存储介质 | |
CN115239122A (zh) | 数字电网软件项目测试人员推荐方法及装置 | |
CN113792189A (zh) | 群智软件开发贡献效率评估方法、装置、设备及介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |