CN111897735B - 基于粒子群和多标准的模糊测试用例选择方法和装置 - Google Patents
基于粒子群和多标准的模糊测试用例选择方法和装置 Download PDFInfo
- Publication number
- CN111897735B CN111897735B CN202010791547.3A CN202010791547A CN111897735B CN 111897735 B CN111897735 B CN 111897735B CN 202010791547 A CN202010791547 A CN 202010791547A CN 111897735 B CN111897735 B CN 111897735B
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- selection
- potential
- energy
- 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/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- 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
Abstract
本发明公开了一种基于粒子群和多标准的模糊测试用例选择方法和装置,可以针对目标二进制程序进行有效地漏洞检测。该方法以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个测试用例选择标准确定每个测试用例i的综合潜质,将粒子测试用例i在所有迭代中综合潜质的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例;并且利用测试用例的潜在价值和预期覆盖率动态地为所述待变异测试用例确定变异能量。
Description
技术领域
本发明涉及属于信息安全领域,尤其涉及一种基于粒子群和多标准的模糊测试用例选择方法和装置。
背景技术
模糊测试是漏洞挖掘领域的重要方法,其是一种通过向目标系统或软件提供非预期的输入并监视异常结果来发现软件漏洞的方法,由于模糊测试技术可以将大量的手工测试转换为高度的自动化测试,介于黑盒测试和白盒测试之间,因此在国内外漏洞挖掘领域被广泛使用。而测试用例选择是模糊测试中的关键技术点之一。测试用例的选择策略决定了模糊测试的测试效率,高质量的测试用例可以覆盖待测目标程序的更多路径,从而检测出更多的程序漏洞。
模糊测试通常维护一个测试用例队列,该队列中包含所有用户提供的初始测试用例和变异后的新测试用例。在循环过程中,模糊测试会按照既定的选择策略从测试用例队列中选取下一个待变异的测试用例,因此选取高质量的测试用例对于提高模糊测试的效率至关重要。目前,有众多研究人员对该过程进行了研究和改进,例如,AFLFast、AFLGo、QTEP、FairFuzz、Retecs、V-Fuzz、FuzzGuard、SAVIOR。上述工具虽然在很多场景下可以有效地选择测试用例,但其仍存在以下两方面局限性:
(1)现有的研究工作对于测试用例选择的标准大多较为单一,通常仅单独考虑一种或几种选择标准,例如Retecs、V-Fuzz和FuzzGuard以漏洞为导向,仅考虑了漏洞发现的选择标准。上述工作大多并未考虑在多种选择标准下,如何进行综合有效地选择,而综合考虑多种选择标准以选择高质量测试用例优先进行后续变异对于提高模糊测试效率具有至关重要的作用。
(2)尽管部分研究工作综合考虑了多种测试用例选择标准,例如Cerebro,但是,由于上述研究工作采用静态分析判断其代码复杂度,因此无法对未提供源码的二进制程序进行测试;此外,其他研究工作大多采用符号执行等复杂程序分析技术或在线学习模型辅助进行测试用例选择,虽然在一定程度上能够有效发现漏洞,但同时也产生了较大的性能开销,因而很难扩展到大型复杂二进制程序。
发明内容
有鉴于此,本发明提出了一种基于粒子群和多标准的模糊测试用例选择方法和装置,可以针对目标二进制程序进行有效地漏洞检测。
为了解决上述技术问题,本发明是这样实现的:
一种基于粒子群和多标准的模糊测试用例选择方法,包括:
以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个测试用例选择标准确定每个测试用例i的综合潜质eff(i),将粒子测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例;并且利用测试用例的潜在价值和预期覆盖率动态地为所述待变异测试用例确定变异能量。
优选地,所述综合潜质eff(i)的计算方式为:
其中,Wj为第j种测试用例选择标准对应的权值,Cj为测试用例i对应的测试用例选择标准j的取值,Sj为模糊测试的测试用例队列中所有测试用例对于测试用例选择标准j的取值总和,n为测试用例选择标准的总数。
优选地,所述多个测试用例选择标准包括:文件大小、执行时间、路径覆盖率、是否触发新路径、是否触发新基本块、崩溃数量、路径深度以及是否变异过。
优选地,在计算综合潜质eff(i)时,需要对各测试用例选择标准的取值进行处理后再用于计算综合潜质eff(i);所述处理为:文件大小和执行时间两个选择标准的值取反,路径覆盖率、触发新路径、触发新基本块、崩溃数量以及路径深度五个选择标准的值保持不变;针对是否变异过这一选择标准,若变异过则设置为-1,若没有变异则设置为1。
优选地,测试用例选择标准对应的权值采用AHP法、专家评分法、熵权法或CRITIC赋权法确定。
优选地,所述利用测试用例的潜在价值和预期覆盖率动态地确定待变异测试用例的变异能量为:
计算所述测试用例的潜在价值P(i)为:计算测试用例i及其变异产生的测试用例中发现崩溃的数量占模糊测试中已发现崩溃总数量的比值P1(i),计算测试用例i及其变异产生的测试用例中发现新路径的数量占模糊测试中已发现新路径总数的比值P2(i),将P1(i)与P2(i)之和或加权和作为潜在价值P(i);
计算预期覆盖率G(i)为:测试用例i的代码覆盖增长率和时间比值的乘积,或者为测试用例i的代码覆盖增长率、时间比值和利用覆盖增长率的能力常量的乘积;所述时间比值为测试用例i的执行时间与测试用例队列中所有测试用例的执行时间总和之比;
基于潜在价值P(i)和预期覆盖率G(i),计算获得测试用例i的变异能量值energy(i):
energy(i)=σ·(P(i)+G(i))·dep(i)
其中,σ为常量,表示初始分配能量,dep(i)为测试用例i的路径深度。
一种基于粒子群和多标准的模糊测试用例选择装置,包括:测试用例选择模块和测试用例能量确定模块;
所述测试用例选择模块,用于以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个测试用例选择标准确定每个测试用例i的综合潜质eff(i),将粒子测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例;
所述测试用例能量确定模块,用于利用测试用例的潜在价值和预期覆盖率动态地为所述待变异测试用例确定变异能量。
优选地,所述测试用例选择模块计算综合潜质eff(i)的方式为:
其中,Wj为第j种测试用例选择标准对应的权值,Cj为测试用例i对应的测试用例选择标准j的取值,Sj为模糊测试的测试用例队列中所有测试用例对于测试用例选择标准j的取值总和,n为测试用例选择标准的总数。
优选地,所述测试用例选择模块所采用的测试用例选择标准包括:文件大小、执行时间、路径覆盖率、是否触发新路径、是否触发新基本块、崩溃数量、路径深度以及是否变异过;
在计算综合潜质eff(i)时,需要对各测试用例选择标准的取值进行处理后再用于计算综合潜质eff(i);所述处理为:文件大小和执行时间两个选择标准的值取反,路径覆盖率、触发新路径、触发新基本块、崩溃数量以及路径深度五个选择标准的值保持不变;针对是否变异过这一选择标准,若变异过则设置为-1,若没有变异则设置为1。
优选地,所述测试用例能量确定模块包括:
潜在价值确定子模块,用于计算测试用例i及其变异产生的测试用例中发现崩溃的数量占模糊测试中已发现崩溃总数量的比值P1(i),计算测试用例i及其变异产生的测试用例中发现新路径的数量占模糊测试中已发现新路径总数的比值P2(i),将P1(i)与P2(i)之和或加权和作为潜在价值P(i);将所确定的潜在价值P(i)发送给变异能量确定子模块;
预期覆盖率确定子模块,用于计算预期覆盖率G(i);预期覆盖率G(i)为测试用例i的代码覆盖增长率和时间比值的乘积,或者为测试用例i的代码覆盖增长率、时间比值和利用覆盖增长率的能力常量的乘积;所述时间比值为测试用例i的执行时间与测试用例队列中所有测试用例的执行时间总和之比;将所确定的预期覆盖率G(i)发送给变异能量确定子模块;
变异能量确定子模块,用于基于潜在价值P(i)和预期覆盖率G(i),计算获得测试用例i的变异能量值energy(i):
energy(i)=σ·(P(i)+G(i))·dep(i)
其中,σ为常量,表示初始分配能量,dep(i)为测试用例i的路径深度。
有益效果:
(1)本发明采用轻量级的粒子群优化算法构造测试用例选择模型,利用选取的多个测试用例选择标准确定测试用例的综合潜质,基于综合潜质确定个体最优解和群体最优解,从而获得综合潜质最佳的待变异测试用例。该方法在确定待变异测试用例时,考虑多种选择标准,并利用粒子群优化算法将这些标准以较小的代价应用于待变异测试用例选择中,以实现低开销的测试用例多标准自动化选择,该选择模型能针对复杂目标二进制程序更快、更准确地选取高质量的测试用例优先进行后续变异,从而提高模糊测试的测试效率。
(2)本发明在确定测试用例的综合潜质时,采用测试用例i的测试用例选择标准取值与测试用例队列中所有测试用例的测试用例选择标准取值总和的加权比值之和。由于测试用例队列在模糊测试循环中不断进行更新,因此测试用例选择标准的效率能够动态地反映测试用例在每次选择时其选择标准的相对值。该方法从多种选择标准的视角,综合考虑了测试用例各个选择标准在当前测试用例队列中的相对效率,并通过由多种不同的赋权法确定的各个权值动态地评估测试用例发现漏洞或探索新路径的潜力,从而避免了因单一选择标准而导致的评估偏差。
(3)本发明利用测试用例的潜在价值和预期覆盖率动态地确定待变异测试用例的变异能量,其中测试用例的潜在价值反映了变异该测试用例生成的新测试用例在发现新路径和漏洞两方面的相对有效性,同时也在一定程度上反映了该测试用例发现漏洞和探索新路径的能力;预期覆盖率根据历史覆盖信息评估了测试用例在后续变异时路径覆盖率的预期值,事先预测了测试用例在未来测试中获得较高路径覆盖率的能力。
(4)本发明的多选择标准选取了文件大小、执行时间、路径覆盖率、是否触发新路径、是否触发新基本块、崩溃数量、路径深度、是否被变异过8种指标,其中,文件大小和执行时间从性能及执行速度方面进行测试用例选择;路径覆盖率、是否触发新路径以及是否触发新基本块侧重于执行路径的广度,而路径深度则侧重于执行路径的深度,以兼顾深度和广度的路径探索;崩溃数量从测试用例发现漏洞的能力的视角进行选择;是否被变异过则考虑了测试用例是否曾经被选择过。基于以上8种选择标准,模糊测试工具能够优先考虑执行效率高、发现崩溃数量多、探索路径广且深、未被变异过的高质量测试用例,进而提高模糊测试的效率。
附图说明
图1为基于粒子群和多标准的模糊测试用例选择方案总体架构。
图2为测试用例选择和能量确定的具体流程。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明针对现有的模糊测试工具在测试用例选择方面存在的选择标准较为单一以及无法针对复杂二进制程序进行测试的问题,提出一种基于粒子群和多标准的模糊测试用例选择方法,以期提高模糊测试的效率。该方法在基于变异的模糊测试中的改进点如图1所示,主要涉及到测试用例选择和测试用例能量确定两个模块。其中,测试用例选择模块采用基于粒子群优化算法和多选择标准的待变异测试用例确定技术,通过综合考虑多种选择标准,对测试用例队列进行进一步排序和选择,选择综合最优的测试用例作为下一轮待变异的测试用例;测试用例能量确定模块利用测试用例的潜在价值和预期覆盖率动态地确定测试用例的变异能量,以辅助进行后续测试用例变异。测试用例选择和能量确定的具体实施流程如图2所示。
本发明的基于粒子群和多标准的模糊测试用例选择方法包括如下步骤:
步骤一、确定多种测试用例选择标准及其权重。
在选择下一个待变异的测试用例前,模糊测试工具首先遍历整个测试用例队列,获取每个测试用例的属性信息,例如,文件大小和执行时间等;然后综合考虑测试用例的各个属性,将其作为选择下一个待变异测试用例的测试用例选择标准(下文简称选择标准)。本发明以n=8种选择标准为例,选取文件大小、执行时间、路径覆盖率、是否触发新路径、是否触发新基本块、崩溃数量、路径深度以及是否变异过共8种选择标准。
上述各选择标准的权重可以采用现有方案确定。确定权重的方法主要包括两大类:一类是主观赋权法,如AHP法、专家评分法等;另一类是客观赋权法,如熵权法、CRITIC(Criteria Importance Though Intercriteria Correlation)赋权法等。本发明以常用的熵权法为例,介绍测试用例多目标的权重确定方法,其确定过程主要包括以下3个子步骤。
步骤S101、分别使用单独的选择标准进行模糊测试,记录其执行结果。
使用熵权法确定选择标准权重需要基于一定的样本数据,因此本发明在计算权重前,首先使用单一的选择标准依次对选定的目标二进制程序进行模糊测试,分别重复测试5次,并记录其测试结果;然后取其平均值以避免过于极端的随机化数据,这些结果的均值将作为样本数据用于制定后续的多标准决策矩阵。
步骤S102、制定多标准决策矩阵,并进行标准化。
基于前一步中获得的单一选择标准的测试结果,制定其相应的多标准决策矩阵,决策矩阵的列分别对应于本发明选取的8种选择标准,决策矩阵的行是已测的目标程序在单一选择标准下的测试结果(这里的测试结果是指崩溃数量)。此外,对多标准决策矩阵中的数据进行标准化处理,以消除不同量纲的数据。
步骤S103、利用熵计算各选择标准的权重。
在获得标准化的多标准决策矩阵后,按照熵权法中的信息熵计算公式计算各选择标准的熵值,然后再利用熵按照权重公式计算各选择标准的权重,以此获得上述8种选择标准的权重,该权重将用于指导后续粒子群优化算法的更新迭代过程。
步骤二、构造基于粒子群优化算法的测试用例多标准自动化选择模型,并选取最优的测试用例作为后续待变异的测试用例。
为了实现测试用例的多标准优化,本发明采用粒子群优化算法构造测试用例多标准选择模型。粒子群优化算法可以描述为:由m个粒子组成的群体在D维搜索空间中以一定的速度各自飞行以寻找最佳位置(即最优解),每个粒子在搜索时,受到自身历史最优点和群体内其他粒子历史最优点的影响,不断进行自身位置优化。
本发明以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个选择标准确定每个测试用例i的综合潜质eff(i),将粒子测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例。
本步骤具体可以分为以下3个子步骤。
步骤S201、初始化粒子群优化算法。
本发明将测试用例队列中的每个测试用例均作为一个粒子进行搜索和更新,每个粒子均包括四个主要的参数,即粒子的初始位置、粒子的初始速度、粒子的初始个体最优位置和粒子的初始群体最优位置,并对上述这些粒子参数进行初始化,例如,用随机值设置每个粒子的初始位置,将每个粒子的初始速度初始化为0.1。
步骤S202、计算粒子的个体最优解和群体最优解。
在粒子群优化算法中,每个粒子根据其个体最优解(即局部最优解)li和群体最优解(即全局最优解)g进行更新,因此需要设定合理的粒子个体最优解和群体最优解的计算方法。为了计算粒子的个体最优解和群体最优解,针对每个粒子i,本发明首先计算粒子的综合潜质eff(i),其计算方式为对上述选取的8种选择标准的效率进行加权求和,如公式(1)所示。
其中,Wj为第j种选择标准对应的权值,即为步骤一中计算而得的权重值,Cj为粒子i对应的选择标准j的取值,Sj为测试用例队列中所有测试用例对于该选择标准j的取值总和。需要注意的是本发明为文件大小和执行时间两个选择标准的值取反,路径覆盖率、触发新路径、触发新基本块、崩溃数量以及路径深度五个选择标准的值保持不变;针对是否变异这一选择标准,若变异过则设置为-1,若没有变异则设置为1。
在获得每个粒子的综合潜质eff(i)后,本发明将测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解li,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解g,其公式如(2)和(3)所示。
li=maxeff(i)
(2)
g=max li
(3)
需注意的是,在测试用例未被选择过时,此时计算所得的综合潜质eff(i)即为个体最优解;之后,随着测试用例队列的更新,在每一轮次选择时,个体最优解会随着选择最优的eff(i)进行迭代,群体最优解也会随之不断更新,即,群体最优解始终为所有选择轮次中所有测试用例的综合潜质eff(i)的最大值。
在计算获得粒子的个体最优解和群体最优解后,粒子将会根据这两个值指导粒子速度和位置的更新迭代。
步骤S203、更新粒子的速度和位置。
假设第i个粒子(即测试用例)的位置表示为xi=(xi1,xi2,…,xiD),速度为vi=(vi1,vi2,…,viD),1≤i≤m。第i个粒子搜索到的个体最优位置为li=(li1,li2,…,liD),即局部最优解;整个种群曾搜索到的最优位置为g=(g1,g2,…,gD),即全局最优解。种群迭代到t次时,粒子的速度和位置更新公式如式(4)、(5)所示。
其中,学习因子c1和c2均为常数,使得粒子具有自我总结和向群体内优秀个体学习的能力;r1和r2是(0,1)之间的均匀分布的伪随机数;惯性权重w决定了对粒子当前速度继承的多少;上角标t表示第t次迭代。
粒子群(即测试用例队列)中的每个粒子(即测试用例)按照上述公式(4)和(5)以及个体最优解和群体最优解对其速度和位置进行不断更新和迭代,直到达到设定的时间上限停止更新。
步骤S204、选取最优的粒子作为待变异测试用例。
上述步骤中测试用例多标准选择模型按照粒子群优化算法不断更新和迭代,然后,从现有的测试用例队列中选择当前位置最优的粒子所对应的测试用例作为下一个待变异的测试用例,为所选的最优测试用例执行后续能量确定以及变异过程。
步骤三、为待变异的测试用例确定变异能量。
基于前述步骤中选取的下一个待变异的测试用例,根据测试用例的潜在价值和预期覆盖率确定其变异能量值。具体地,本发明首先计算该测试用例的潜在价值P(i)和预期覆盖率G(i),P(i)表示由测试用例i及其变异产生的测试用例中发现崩溃的数量和发现新路径的数量分别占崩溃总数量和新路径总数的比值之和(即,测试用例i及其后代发现崩溃的潜质与发现新路径的潜质之和),其计算公式如(6)所示。G(i)表示测试用例i的代码覆盖增长率和时间比值的乘积,如公式(7)所示。
其中,count(m,m∈Qcrash)为由测试用例i及其变异产生的后代测试用例中发现崩溃的数量,sum(crash)为从模糊测试开始到目前为止发现的崩溃数量的总和;count(n,n∈Qpath)为由测试用例i及其变异产生的后代测试用例中发现新路径的数量,sum(path)为目前发现的新路径数量的总和;δ和ε为常量,表示利用潜在价值的能力。
其中,cov(i)表示测试用例i的代码覆盖率,cov(o)为执行测试用例i之前的代码覆盖率;time(i)表示测试用例i的执行时间,sum(time)表示测试用例队列中所有测试用例的执行时间总和;γ也为常量,表示利用覆盖增长率的能力。
基于潜在价值P(i)和预期覆盖率G(i),本发明使用公式(8)计算获得测试用例的变异能量值energy(i)。
energy(i)=σ·(P(i)+G(i))·dep(i)
(8)
其中,σ为常量,表示初始分配能量,通常为100,dep(i)为测试用例i的路径深度。
确定能量值后,后续就可以对该测试用例进行变异。在进行变异之后,可以借助硬件程序追踪机制辅助执行目标二进制程序,并记录变异新生成的测试用例的执行信息,以判定新生成的测试用例是否发现了新路径(即,是否为有趣测试用例),将变异后得到的有趣测试用例保存至测试用例队列中,继续进行下一轮的测试用例选择,即循环上述步骤。
为了实现上述方案,本发明还提供了一种基于粒子群和多标准的模糊测试用例选择装置,如图1所示,其包括测试用例选择模块和测试用例能量确定模块。其中,
测试用例选择模块,用于以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个测试用例选择标准确定每个测试用例i的综合潜质eff(i),将粒子测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例。
本测试用例选择模块计算综合潜质eff(i)的方式、所采用的优选测试用例选择标准组合已经在上文选择方法的实施例描述中详细说明过,这里不再赘述。
测试用例能量确定模块,用于利用测试用例的潜在价值和预期覆盖率动态地为所述待变异测试用例确定变异能量。具体如何计算潜在价值、预期覆盖率和变异能量已经在上文选择方法的实施例描述中详细说明过,这里不再赘述。
本发明解决了目前模糊测试用例选择标准较为单一,尚未综合考虑多种选择标准以选择高质量的测试用例的问题;解决了目前大多数针对测试用例选择的研究工作无法高效对大型复杂二进制程序进行测试的问题;解决了模糊测试工具由于无法有效选择高质量测试用例而导致的模糊测试效率较低的问题。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于粒子群和多标准的模糊测试用例选择方法,其特征在于,包括:
以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个测试用例选择标准确定每个测试用例i的综合潜质eff(i),将粒子测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例;
并且利用测试用例的潜在价值和预期覆盖率动态地为所述待变异测试用例确定变异能量,包括:
计算所述测试用例的潜在价值P(i)为:计算测试用例i及其变异产生的测试用例中发现崩溃的数量占模糊测试中已发现崩溃总数量的比值P1(i),计算测试用例i及其变异产生的测试用例中发现新路径的数量占模糊测试中已发现新路径总数的比值P2(i),将P1(i)与P2(i)之和或加权和作为潜在价值P(i);
计算预期覆盖率G(i)为:测试用例i的代码覆盖增长率和时间比值的乘积,或者为测试用例i的代码覆盖增长率、时间比值和利用覆盖增长率的能力常量的乘积;所述时间比值为测试用例i的执行时间与测试用例队列中所有测试用例的执行时间总和之比;
基于潜在价值P(i)和预期覆盖率G(i),计算获得测试用例i的变异能量值energy(i):
energy(i)=σ·(P(i)+G(i))·dep(i)
其中,σ为常量,表示初始分配能量,dep(i)为测试用例i的路径深度。
3.如权利要求1或2所述的方法,其特征在于,所述多个测试用例选择标准包括:文件大小、执行时间、路径覆盖率、是否触发新路径、是否触发新基本块、崩溃数量、路径深度以及是否变异过。
4.如权利要求3所述的方法,其特征在于,在计算综合潜质eff(i)时,需要对各测试用例选择标准的取值进行处理后再用于计算综合潜质eff(i);所述处理为:文件大小和执行时间两个选择标准的值取反,路径覆盖率、触发新路径、触发新基本块、崩溃数量以及路径深度五个选择标准的值保持不变;针对是否变异过这一选择标准,若变异过则设置为-1,若没有变异则设置为1。
5.如权利要求2所述的方法,其特征在于,测试用例选择标准对应的权值采用AHP法、专家评分法、熵权法或CRITIC赋权法确定。
6.一种基于粒子群和多标准的模糊测试用例选择装置,其特征在于,包括:测试用例选择模块和测试用例能量确定模块;
所述测试用例选择模块,用于以测试用例作为粒子,采用粒子群优化算法选择综合最优的测试用例作为下一轮待变异的测试用例;在粒子群优化过程中,利用选取的多个测试用例选择标准确定每个测试用例i的综合潜质eff(i),将粒子测试用例i在所有迭代中综合潜质eff(i)的最大值作为个体最优解,将目前已执行的所有迭代中所有测试用例中综合潜质eff(i)的最大值作为群体最优解,根据个体最优解和群体最优解进行粒子群优化,获得最优粒子作为待变异测试用例;
所述测试用例能量确定模块,用于利用测试用例的潜在价值和预期覆盖率动态地为所述待变异测试用例确定变异能量;
所述测试用例能量确定模块包括:
潜在价值确定子模块,用于计算测试用例i及其变异产生的测试用例中发现崩溃的数量占模糊测试中已发现崩溃总数量的比值P1(i),计算测试用例i及其变异产生的测试用例中发现新路径的数量占模糊测试中已发现新路径总数的比值P2(i),将P1(i)与P2(i)之和或加权和作为潜在价值P(i);将所确定的潜在价值P(i)发送给变异能量确定子模块;
预期覆盖率确定子模块,用于计算预期覆盖率G(i);预期覆盖率G(i)为测试用例i的代码覆盖增长率和时间比值的乘积,或者为测试用例i的代码覆盖增长率、时间比值和利用覆盖增长率的能力常量的乘积;所述时间比值为测试用例i的执行时间与测试用例队列中所有测试用例的执行时间总和之比;将所确定的预期覆盖率G(i)发送给变异能量确定子模块;
变异能量确定子模块,用于基于潜在价值P(i)和预期覆盖率G(i),计算获得测试用例i的变异能量值energy(i):
energy(i)=σ·(P(i)+G(i))·dep(i)
其中,σ为常量,表示初始分配能量,dep(i)为测试用例i的路径深度。
8.如权利要求6或7所述的装置,其特征在于,所述测试用例选择模块所采用的测试用例选择标准包括:文件大小、执行时间、路径覆盖率、是否触发新路径、是否触发新基本块、崩溃数量、路径深度以及是否变异过;
在计算综合潜质eff(i)时,需要对各测试用例选择标准的取值进行处理后再用于计算综合潜质eff(i);所述处理为:文件大小和执行时间两个选择标准的值取反,路径覆盖率、触发新路径、触发新基本块、崩溃数量以及路径深度五个选择标准的值保持不变;针对是否变异过这一选择标准,若变异过则设置为-1,若没有变异则设置为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791547.3A CN111897735B (zh) | 2020-08-07 | 2020-08-07 | 基于粒子群和多标准的模糊测试用例选择方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791547.3A CN111897735B (zh) | 2020-08-07 | 2020-08-07 | 基于粒子群和多标准的模糊测试用例选择方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897735A CN111897735A (zh) | 2020-11-06 |
CN111897735B true CN111897735B (zh) | 2022-11-11 |
Family
ID=73247109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010791547.3A Active CN111897735B (zh) | 2020-08-07 | 2020-08-07 | 基于粒子群和多标准的模糊测试用例选择方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897735B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116804971B (zh) * | 2023-08-22 | 2023-11-07 | 上海安般信息科技有限公司 | 一种基于信息熵的模糊测试方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032942A (zh) * | 2018-07-24 | 2018-12-18 | 北京理工大学 | 一种基于afl的模糊测试框架 |
CN109062795A (zh) * | 2018-07-24 | 2018-12-21 | 北京理工大学 | 一种模糊测试用例选择方法和装置 |
CN109117367A (zh) * | 2018-07-24 | 2019-01-01 | 北京理工大学 | 一种模糊测试变异数量确定方法和装置 |
CN110135165A (zh) * | 2019-04-12 | 2019-08-16 | 江苏大学 | 一种动态化的分级多粒度模糊测试漏洞挖掘方法 |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
CN111008126A (zh) * | 2019-11-13 | 2020-04-14 | 浙江大学 | 基于粒子群优化的模糊测试变异调度方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IN2014CH01329A (zh) * | 2014-03-13 | 2015-09-18 | Infosys Ltd |
-
2020
- 2020-08-07 CN CN202010791547.3A patent/CN111897735B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032942A (zh) * | 2018-07-24 | 2018-12-18 | 北京理工大学 | 一种基于afl的模糊测试框架 |
CN109062795A (zh) * | 2018-07-24 | 2018-12-21 | 北京理工大学 | 一种模糊测试用例选择方法和装置 |
CN109117367A (zh) * | 2018-07-24 | 2019-01-01 | 北京理工大学 | 一种模糊测试变异数量确定方法和装置 |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
CN110135165A (zh) * | 2019-04-12 | 2019-08-16 | 江苏大学 | 一种动态化的分级多粒度模糊测试漏洞挖掘方法 |
CN111008126A (zh) * | 2019-11-13 | 2020-04-14 | 浙江大学 | 基于粒子群优化的模糊测试变异调度方法和系统 |
Non-Patent Citations (1)
Title |
---|
MOPT:optimized mutation scheduling for fuzzers;chenyang lyu 等;《SEC"19:Proceedings of the 28th USENIX Conference on Security Symposium》;20190816;1946-1966 * |
Also Published As
Publication number | Publication date |
---|---|
CN111897735A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Hybrid sampling evolution strategy for solving single objective bound constrained problems | |
Tang et al. | Differential evolution with an individual-dependent mechanism | |
CN108509335A (zh) | 基于遗传算法优化的软件测试数据生成方法 | |
CN104765690A (zh) | 基于模糊遗传算法的嵌入式软件测试数据生成方法 | |
CN112016627B (zh) | 一种在轨航天器微小撞击损伤可视化检测评估方法 | |
CN111897735B (zh) | 基于粒子群和多标准的模糊测试用例选择方法和装置 | |
CN110515845B (zh) | 基于改进ipo策略的组合测试用例优化生成方法 | |
Belluz et al. | Operator selection using improved dynamic multi-armed bandit | |
CN110738362A (zh) | 一种基于改进的多元宇宙算法构建预测模型的方法 | |
Moriguchi et al. | Sustaining behavioral diversity in neat | |
Steccanella et al. | Hierarchical representation learning for markov decision processes | |
CN112329906A (zh) | 一种基于粒子群算法的人工智能金融风险度量方法 | |
CN109711460A (zh) | 初始聚类中心的获取方法及装置 | |
CN115909027B (zh) | 一种态势估计方法及装置 | |
CN116245146A (zh) | 基于进化条件生成对抗网络的排序学习方法、系统及应用 | |
CN115795483A (zh) | 一种基于人工鱼群算法的软件漏洞检测方法 | |
Soliman et al. | Correlation based feature selection using quantum bio inspired estimation of distribution algorithm | |
CN112036432B (zh) | 一种基于禁忌优化的光谱建模样本集快速划分方法 | |
CN114840857A (zh) | 基于深度强化学习与多级覆盖策略的智能合约模糊测试方法及系统 | |
CN113554144A (zh) | 用于多目标进化特征选择算法的自适应种群初始化方法和存储设备 | |
Borges et al. | Hierarchical classification using a competitive neural network | |
Liu et al. | Experience-based optimization: A coevolutionary approach | |
Dasgupta et al. | Playing to learn better: repeated games for adversarial learning with multiple classifiers | |
LIU et al. | MC/DC Test Data Generation Algorithm Based on Whale Genetic Algorithm | |
Wang et al. | Research on the Validity of Network Security Model Based on WOA-BP Neural Network |
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 |