CN107423217A - 基于变异树的黑盒模糊测试方法及系统 - Google Patents

基于变异树的黑盒模糊测试方法及系统 Download PDF

Info

Publication number
CN107423217A
CN107423217A CN201710555676.0A CN201710555676A CN107423217A CN 107423217 A CN107423217 A CN 107423217A CN 201710555676 A CN201710555676 A CN 201710555676A CN 107423217 A CN107423217 A CN 107423217A
Authority
CN
China
Prior art keywords
node
valuation
msub
variation
tree
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
CN201710555676.0A
Other languages
English (en)
Other versions
CN107423217B (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.)
Northeastern University Qinhuangdao
Original Assignee
Northeastern University Qinhuangdao
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 Northeastern University Qinhuangdao filed Critical Northeastern University Qinhuangdao
Priority to CN201710555676.0A priority Critical patent/CN107423217B/zh
Publication of CN107423217A publication Critical patent/CN107423217A/zh
Application granted granted Critical
Publication of CN107423217B publication Critical patent/CN107423217B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于变异树的黑盒模糊测试方法及系统,包括:S1,构建变异树,生成模糊测试用例组;S2,确定除根节点以外的每个节点的估值并设定估值的阈值;S3,对未遍历的各个节点的估值进行排序,选出估值最大的节点;S4,对目标程序进行检测;S5,判断是否满足中间准则或输出是否存在可疑数据;S6,若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;S7,若小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则调整变异操作,生成新的模糊测试用例组,转到S3,直至遍历完整棵变异树,完成目标程序的模糊测试。本发明解决了漏洞被遗漏的问题,实现充分测试。

Description

基于变异树的黑盒模糊测试方法及系统
技术领域
本发明涉及一种基于变异树的黑盒模糊测试方法及系统,属于模糊测试技术领域。
背景技术
模糊测试,是一种黑盒测试工具,通常用于大型软件开发项目,其优势在于进行测试的成本相对较低,并且完全可以自动实现;另外,模糊测试经常能找出比较严重、且可能被攻击者加以利用的安全漏洞。
刘海龙等在《基于变异树的Fuzzing技术研究》中公开了一种利用模糊变异树进行模糊测试的方法,其中,模糊变异树算法在执行的过程中会对所有节点进行先序遍历,当正在遍历某个节点变异因子对应的变异动作时,如果满足了叶子节点或者中间节点,则以该节点为根节点的树将被剪掉。但是,在模糊变异树定义的中间节点中,虽然所有的中间节点对于该节点的所有子节点来说是所有子节点的典型覆盖,但该中间节点也只能反映所有子节点的部分情况,并不能覆盖全部情况,因而从这个角度而言会出现一种情况:如果因为中间节点变异因子中所有变异动作的一部分满足了中间准则就直接将以该中间节点为根节点的变异树删除,那么将会有很大的可能遗漏掉目标程序的可疑数据。另外,为了找到所有漏洞,则该方法需要重复进行多次测试,那么就会出现多次运算重复用例集的情况,因而导致模糊测试用例生成存在冗余的现象发生,导致总的测试时间开销较大,测试效率较低。
具体的说,根据典型覆盖的定义,如果一个中间节点的所有变异因子和中间节点的孩子节点的变异因子的交集全为非空集合,那么该中间节点是其孩子节点的典型覆盖,而变异树结构中定义的中间节点都是该节点的子节点的典型覆盖,典型覆盖只能满足中间节点变异因子和叶子节点的变异因子的交集非空,并不能说明中间节点可以覆盖叶子节点的所有情况;另外,根据中间准则的定义(已经被测试的测试用例占可生成测试用例总数的一半时,即已经被执行的变异动作是总变异动作数量的一半时,开始对已生成的测试用例在目标程序中运行时的代码覆盖率进行计算,如果最大的一个测试用例代码覆盖率没有达到原始样本文件代码覆盖率的百分之五十,则满足变异树中间准则),执行的测试用例总数最大数目是总测试用例的一半。综合上述两点可知,满足中间准则并不能完全表明该节点的变异动作以及以该节点为根节点的所有变异动作不包含不满足变异树准则的变异动作,所以如果仅仅由于中间节点满足中间准则就删除以该中间节点为根节点的树,会造成遗漏可疑变异动作以及错误变异动作的结果,进而导致测试不充分、漏洞被遗漏的情况发生。
发明内容
本发明的目的在于,提供一种基于变异树的黑盒模糊测试方法及系统,它可以有效解决现有技术中存在的问题,尤其是因为中间节点变异因子中所有变异动作的一部分满足了中间准则就直接将以该中间节点为根节点的变异树删除,造成遗漏可疑变异动作以及错误变异动作,进而导致测试不充分、漏洞被遗漏的情况发生的问题。
为解决上述技术问题,本发明采用如下的技术方案:一种基于变异树的黑盒模糊测试方法,包括以下步骤:
S1,构建变异树(所述变异树的除根节点以外的每个节点对应一个变异因子,每个变异因子包含一系列变异操作(所有的变异操作统称为变异动作),每一次变异操作产生一个模糊测试用例),并利用变异树节点对应的变异因子所包含的相应的变异操作作用于变异字段生成模糊测试用例组;
S2,确定变异树中除根节点以外的每个节点的估值并设定估值的阈值;
S3,对未遍历的各个节点的估值进行排序,选出估值最大的节点;
S4,利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
S5,判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
S6,若满足叶子准则,则剪掉该节点,并转到S3,直至遍历完整棵变异树;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;
S7,若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则调整该节点对应的变异因子所包含的相应的变异操作,将所述的变异操作作用于变异字段生成新的模糊测试用例组,并转到S3,直至遍历完整棵变异树,即完成目标程序的模糊测试。
上述方法中,若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;如果大于等于阈值,则需要对该节点进行重新遍历,因此该节点仍然属于未遍历的节点。
所述的变异字段为待检测的目标程序的特定部分输入。
本发明要找的是最终剩余的叶子节点,这些叶子节点即为目标程序漏洞所在的叶子结点。使用本发明的估值方法找到的最终叶子节点无遗漏的可能性更高。
上述的步骤S3、S4中,通过对未遍历的各个节点的估值进行排序,选出估值最大的节点,并利用该节点所获得的相应的模糊测试用例组对目标程序进行检测,从而可以更快地找到出问题的节点,提高了模糊测试的效率;另外,从工程层面来讲,使用本发明的方法,代码量少,工程量少。
构造变异树时,可以先确定变异因子与变异动作,构造叶子节点,再由叶子节点构造中间节点,获得最终的变异树。
变异树的中间准则是指:在已经被测试的测试用例占可生成测试用例总数的一半时,即已经被执行的变异动作是总变异动作数量的一半时,开始对已生成的测试用例在目标程序中运行时的代码覆盖率进行计算,如果最大的一个测试用例代码覆盖率没有达到原始样本文件代码覆盖率的百分之五十,则满足变异树中间准则。
变异树的叶子准则是指:在已经被测试的测试用例占可生成测试用例总数的一半时,即已经被执行的变异动作是总变异动作数量的一半时,开始对已生成的测试用例在目标程序中运行时的代码覆盖率进行计算,如果最大的一个测试用例代码覆盖率没有达到原始样本文件代码覆盖率的百分之五十,则满足变异树叶子准则。
上述的变异树的中间准则和变异树的叶子准则中,所述的测试用例与当前采用的模糊测试用例组是一致的(也是根据变异操作随机调整的)。
估值的定义:给定一个变异树中所有的变异动作的集合的值为MAX,表示一定能在这个集合中找到可疑或者错误变异动作;当某一个变异动作的集合的估值为0时,就认为这个集合中的变异动作一定不包含可疑或者错误变异动作。
优选的,步骤S2中,通过以下方法确定叶子节点的初始估值:
S21,设A1、A2、A3…An为变异树节点对应的变异因子的n个属性所对应的权重,x1、x2、x3…xn为变异树节点对应的变异因子的n个属性的属性值;
S22,确定节点两两属性的比例关系(当完全不知两属性的优劣时,将其权重的比值定为 1:1,然后将所有已知的比值关系化为两两属性的比例关系);
S23,构造正互反比例矩阵(横轴从左到右为A1,A2,A3…An,纵轴从上到下为 A1,A2,A3…An);
S24,判断所述的矩阵能否通过一致性检验;
S25,若能通过一致性检验,则直接算出结果,即为属性权重;若不能通过一致性检验,则将该矩阵转化为一致矩阵,并转到S23;
S26,将所得的属性权重代入以下公式,即得叶子节点的初始估值Jg:
Jg=A1*x1+A2*x2+A3*x3+…+An*xn。
通过以上方法确定叶子节点的初始估值,则可以使得时间开销更小,而且模糊测试的结果更加精确,且能避免漏洞遗漏。
上述方法中,若多次转化为一致矩阵仍然不能满足一致指标,则转到S22。
前述的基于变异树的黑盒模糊测试方法中,中间节点的初始估值通过以下方法获得:
其中,X表示所述中间节点的初始估值,A1、A2……An表示中间节点的n个下层子节点(儿子节点)的初始估值,B1、B2……Bn表示中间节点的n个下层子节点(儿子节点) 上变异因子所对应获得的模糊测试用例数量;Y表示所述中间节点上变异因子所对应获得的模糊测试用例数量;a、b为常数,且a+b=1。
由于中间结点是其所有子节点的典型覆盖,所以中间结点的估值需要根据叶子结点来确定。通过这种方法得到的中间节点的估值可以证明中间结点与叶子结点的估值数值统一,并使中间节点估值与叶子节点估值以及各节点实际测试用例数相关;可以使得模糊测试过程更加稳定,测试结果更加精确。
优选的,通过以下方法确定最优的a值:
A,抽取所构建变异树中的一个子树(比如四分之一树,包含5个节点),使得该子树中至少包含一个节点,其对应的变异因子的相应的模糊测试用例进行模糊测试时输出存在可疑数据;
B,随机预选定a、b的初始值;
C,利用步骤S2~S7的方法进行模糊测试并监控输出结果;
D,若找到可疑节点,则统计所使用的测试用例总数;
E,更改a、b的值,并循环执行步骤C、D;
F,拟合a与对应的测试用例总数的函数曲线,所述曲线斜率的绝对值最小的点所对应的a 即为最优的a。
本发明中,步骤S6中所述的降低该节点及其孩子节点的估值,降低后的节点估值通过以下方法确定:
降低后的估值=降低前的估值*(1-下降比率),
下降比率=本次测试用例总数/理论测试用例总数;
其中,所述的本次测试用例总数,即本次参与测试的节点对应的变异因子所包含的所有变异操作产生的模糊测试用例组的数量。
上述的理论测试用例总数,为单个节点可能包含的所有测试用例数量,根据变异因子,使用穷举法,来获得理论测试用例总数的大小。
本发明中,估值的变化速度不能过快也不能过慢,否则过慢会过多的增加测试用例的总数,相对而言,剪枝的进行就会更加困难,增加开销但是不会提高漏洞检测率;过快又使得剧烈的估值变化影响整棵变异树的稳定性,导致漏洞遗漏。而通过利用本发明上述方法对估值进行降低处理,则在保证估值变化稳定的前提下,既可以提高漏洞检测效率,而且还不会漏洞遗漏。
优选的,本发明步骤S6还包括:
S61若存在可疑数据,则该节点的估值不变,对所述节点的下层节点的估值进行排序,并选出估值最大的节点;
S62,利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
S63,判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
S64,若满足叶子准则,则剪掉该节点,并转到S3;若存在可疑数据,则转到S61;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;
S65,若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则直接转到S3。
从而可以更高效的检测已经测试的用例中是否含有漏洞,避免遗漏。
实现前述方法的基于变异树的黑盒模糊测试系统,包括:
变异树构建模块:用于构建变异树(所述变异树的除根节点以外的每个节点对应一个变异因子,每个变异因子包含一系列变异操作(所有的变异操作统称为变异动作),每一次变异操作产生一个模糊测试用例);
模糊测试用例生成模块:利用变异树节点对应的变异因子所包含的相应的变异操作作用于变异字段生成模糊测试用例组;
估值确定模块,用于确定变异树中除根节点以外的每个节点的估值;
阈值设定模块,用于设定估值的阈值;
排序及选择模块,用于对未遍历的各个节点的估值进行排序,选出估值最大的节点;
检测模块,用于利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
判断模块,用于判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
A处理模块,用于若满足叶子准则,则剪掉该节点,并调用排序及选择模块,直至遍历完整棵变异树;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并调用排序及选择模块;否则直接调用排序及选择模块,直至遍历完整棵变异树,即完成目标程序的模糊测试。
优选的,所述的估值确定模块包括:
比例关系确定模块,用于确定节点两两属性的比例关系(当完全不知两属性的优劣时,将其权重的比值定为1:1,然后将所有已知的比值关系化为两两属性的比例关系);
正互反比例矩阵构造模块,用于并构造正互反比例矩阵(横轴从左到右为A1,A2,A3…An,纵轴从上到下为A1,A2,A3…An);
一致性检验判断模块,用于判断所述的矩阵能否通过一致性检验;
B处理模块:用于若能通过一致性检验,则直接算出结果,即为属性权重;若不能通过一致性检验,则将该矩阵转化为一致矩阵,算得结果,并进行一致性检验,并调用一致性检验判断模块;
叶子节点初始估值计算模块,用于将所得的属性权重代入以下公式,即得叶子节点的初始估值Jg:
Jg=A1*x1+A2*x2+A3*x3+…+An*xn。
前述的基于变异树的黑盒模糊测试系统中,所述的估值确定模块还包括:
中间节点初始估值计算模块,用于通过以下方式计算中间节点的初始估值:
其中,X表示所述中间节点的初始估值,A1、A2……An表示中间节点的n个下层子节点(儿子节点)的初始估值,B1、B2……Bn表示中间节点的n个下层子节点(儿子节点) 上变异因子所对应获得的模糊测试用例数量;Y表示所述中间节点上变异因子所对应获得的模糊测试用例数量;a、b为常数,且a+b=1。
本发明所述的基于变异树的黑盒模糊测试系统中,所述的A处理模块还包括:
排序及遍历模块,用于若存在可疑数据,则该节点的估值不变,对所述节点的下层节点的估值进行排序,并选出估值最大的节点;
目标程序检测模块,用于利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
C处理模块,用于若满足叶子准则,则剪掉该节点,并调用排序及选择模块;若存在可疑数据,则调用排序及遍历模块;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并调用排序及选择模块;否则直接调用排序及选择模块。
与现有技术相比,本发明提出了一种基于变异树节点估值的在线反馈方法,通过在现有模糊树的基础上,构造节点估值体系、减枝优化算法,从而在保证准确率的前提下提高了系统运行速度;同时解决了传统模糊树算法中可用模糊测试用例被遗漏(中间节点满足中间准则就删除以该中间节点为根节点的树,造成遗漏可疑变异动作以及错误变异动作,进而遗漏由这些可疑变异动作以及错误变异动作生成的测试用例)而导致的漏洞被遗漏的问题,实现目标程序的充分测试。
另外,发明人还利用本发明的模糊测试方法和背景技术进行了理论和实验对比,根据时间、数据量、漏洞数目对两个方法进行比较,最终通过比较发现:在使用本发明的模糊测试方法对未知系统做模糊测试时,无需重复运行算法,即可得到系统内的全部漏洞,根据用例触发的全部漏洞,不存在遗漏的情况,因而降低了总的时间开销,提高了测试效率;而且本发明的模糊测试方法,相对而言,在数据量相同时,具有更高的运算效率。
附图说明
图1是本发明的一种实施例的方法流程图;
图2是叶子节点的初始估值确定方法流程图。
下面结合附图和具体实施方式对本发明作进一步的说明。
具体实施方式
本发明的实施例:一种基于变异树的黑盒模糊测试方法,如图1所示,包括以下步骤:
S1,构建变异树(所述变异树的除根节点以外的每个节点对应一个变异因子,每个变异因子包含一系列变异操作(所有的变异操作统称为变异动作),每一次变异操作产生一个模糊测试用例),并利用变异树节点对应的变异因子所包含的相应的变异操作作用于变异字段生成模糊测试用例组;
S2,确定变异树中除根节点以外的每个节点的估值并设定估值的阈值(其中,初始阈值设定可按照具体实验的估值确定,然后可按照实验过程可获得最优的阈值);
所述的阈值是一定比初始估值小的,阈值越大就越接近初始估值,从而估值降低的次数就会减少,测试用例总数就会越少;相反,阈值越小,估值降低次数就会越多,测试用例总数就会越多。
其中,通过以下方法确定叶子节点的初始估值(如图2所示):
S21,设A1、A2、A3…An为变异树节点对应的变异因子的n个属性所对应的权重,x1、x2、x3…xn为变异树节点对应的变异因子的n个属性的属性值;
S22,确定节点两两属性的比例关系(当完全不知两属性的优劣时,将其权重的比值定为 1:1,然后将所有已知的比值关系化为两两属性的比例关系);
S23,构造正互反比例矩阵(横轴从左到右为A1,A2,A3…An,纵轴从上到下为 A1,A2,A3…An);
S24,判断所述的矩阵能否通过一致性检验;
S25,若能通过一致性检验,则直接算出结果,即为属性权重;若不能通过一致性检验,则将该矩阵转化为一致矩阵,并转到S23;
S26,将所得的属性权重代入以下公式,即得叶子节点的初始估值Jg:
Jg=A1*x1+A2*x2+A3*x3+…+An*xn;
若多次转化为一致矩阵仍然不能满足一致指标,则转到S22;
步骤S21中,所述的n个属性的属性值可以这样确定:假设各个属性中分别包含多个变量,先在各自属性中,根据其变量在目标程序中出现的概率对各个变量进行排序;然后进行变量归一化处理,得某个属性的属性值:
属性值=∑((该变量在其属性内的排序的倒序)/(属性内变量总数量));
(比如有两个属性,分别为长度和种类,假设长度的变量有1~9,种类的变量有ABC,假设长度的变量在目标程序中出现的概率从大到小为4、5、6、7、8、9、1、2、3;种类的变量在目标程序中出现的概率从大到小为ACB;那么变量4的属性值为1,变量5的属性值为8/9,以此类推,那么长度的属性值就是变量1~9的属性值的总和5;同样,变量A的属性值为1,B的属性值为2/3,C的属性值为1/3,那么种类的属性值就是2)
步骤S21中,所述的n个属性的属性值也可以这样确定:
其中n为每一个属性内的变量总数量;计算得到该属性的属性值。
步骤S22中,对于节点的两两属性的比例关系,首先需要明确,两两属性的比例关系共分三种情况:
情况1:两两属性关系比值明确;
情况2:两两属性关系模糊;
情况3:完全不明两两属性关系;
分情况讨论:
对于情况1,比值无论何时均不变;
对于情况2:可采用初始赋比值方法——首先确定两属性的大小,把小的属性的比值定为1,大的那方人为根据先有知识,主观定义一个1~5中间的数,得到1:x的比值;然后可采用比值调整方法——假设此时已有两两比值,需要将其调整为更优,则可将小的那方属性值+2,大的那方主观确定一个1至5*3之间的数,之后也以此类推。
对于情况3:利用节点的反馈,即根据一致性检验结果的值,反向调节比值,使一致性检验结果更优。此处无详细计算方法,可根据实际情况确定比值,由于3情况属性比例完全未知,构建一致性矩阵时只要保证3情况下的比值不会过分影响一致性指标即可,具体调节的比值可根据实际情况及配置人员经验决定。
若多次转化为一致矩阵仍然不能满足一致指标,则调节比值的顺序流程:先分别调整所有情况3的比例,调整后进行一致性检验,若一致性提高,则开始调节所有情况2的比例,最终进行再次检验。
中间节点的初始估值通过以下方法获得:
其中,X表示所述中间节点的初始估值,A1、A2……An表示中间节点的n个下层子节点(儿子节点)的初始估值,B1、B2……Bn表示中间节点的n个下层子节点(儿子节点) 上变异因子所对应获得的模糊测试用例数量;Y表示所述中间节点上变异因子所对应获得的模糊测试用例数量;a、b为常数,且a+b=1;
通过以下方法确定最优的a值:
A,抽取所构建变异树中的一个子树(比如四分之一树,包含5个节点),使得该子树中至少包含一个节点,其对应的变异因子的相应的模糊测试用例进行模糊测试时输出存在可疑数据;
B,随机预选定a、b的初始值;
C,利用步骤S2~S7的方法进行模糊测试并监控输出结果;
D,若找到可疑节点,则统计所使用的测试用例总数;
E,更改a、b的值,并循环执行步骤C、D;
F,拟合a与对应的测试用例总数的函数曲线,所述曲线斜率的绝对值最小的点所对应的a 即为最优的a。
S3,对未遍历的各个节点的估值进行排序,选出估值最大的节点;
S4,利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
S5,判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
S6,若满足叶子准则,则剪掉该节点,并转到S3,直至遍历完整棵变异树;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;
还包括:
S61若存在可疑数据,则该节点的估值不变,对所述节点的下层节点的估值进行排序,并选出估值最大的节点;
S62,利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
S63,判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
S64,若满足叶子准则,则剪掉该节点,并转到S3;若存在可疑数据,则转到S61;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;
S65,若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则直接转到S3;
所述的降低该节点及其孩子节点的估值,降低后的节点估值通过以下方法确定:
降低后的估值=降低前的估值*(1-下降比率),
下降比率=本次测试用例总数/理论测试用例总数;
其中,所述的本次测试用例总数,即本次参与测试的节点对应的变异因子所包含的所有变异操作产生的模糊测试用例组的数量;
S7,若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则调整该节点对应的变异因子所包含的相应的变异操作,将所述的变异操作作用于变异字段生成新的模糊测试用例组,并转到S3,直至遍历完整棵变异树,即完成目标程序的模糊测试。
本发明具体实施时,可通过以下方法确定最优的阈值:
A.抽取一个子树(比如四分之一树,包含5个节点),使得该子树中至少包含一个节点,其对应的变异因子的相应的模糊测试用例进行模糊测试时输出存在可疑数据;
B.随机设定一个初始阈值;
C.利用本发明的方法进行模糊测试并监控输出结果;
D.若找到可疑节点,则统计所使用的测试用例总数;
E.更改阈值,并循环执行步骤C、D,如果每次都能找到可疑节点,则将使用的最少的测试用例数对应的阈值设定为最优阈值。
一种基于变异树的黑盒模糊测试系统,包括:
变异树构建模块:用于构建变异树(所述变异树的除根节点以外的每个节点对应一个变异因子,每个变异因子包含一系列变异操作(所有的变异操作统称为变异动作),每一次变异操作产生一个模糊测试用例);
模糊测试用例生成模块:利用变异树节点对应的变异因子所包含的相应的变异操作作用于变异字段生成模糊测试用例组;
估值确定模块,用于确定变异树中除根节点以外的每个节点的估值;
阈值设定模块,用于设定估值的阈值;
排序及选择模块,用于对未遍历的各个节点的估值进行排序,选出估值最大的节点;
检测模块,用于利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
判断模块,用于判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
A处理模块,用于若满足叶子准则,则剪掉该节点,并调用排序及选择模块,直至遍历完整棵变异树;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并调用排序及选择模块;否则直接调用排序及选择模块,直至遍历完整棵变异树,即完成目标程序的模糊测试;
所述的估值确定模块包括:
比例关系确定模块,用于确定节点两两属性的比例关系(当完全不知两属性的优劣时,将其权重的比值定为1:1,然后将所有已知的比值关系化为两两属性的比例关系);
正互反比例矩阵构造模块,用于并构造正互反比例矩阵(横轴从左到右为 A1,A2,A3…An,纵轴从上到下为A1,A2,A3…An);
一致性检验判断模块,用于判断所述的矩阵能否通过一致性检验;
B处理模块:用于若能通过一致性检验,则直接算出结果,即为属性权重;若不能通过一致性检验,则将该矩阵转化为一致矩阵,算得结果,并进行一致性检验,并调用一致性检验判断模块;
叶子节点初始估值计算模块,用于将所得的属性权重代入以下公式,即得叶子节点的初始估值Jg:
Jg=A1*x1+A2*x2+A3*x3+…+An*xn;
所述的估值确定模块还包括:
中间节点初始估值计算模块,用于通过以下方式计算中间节点的初始估值:
其中,X表示所述中间节点的初始估值,A1、A2……An表示中间节点的n个下层子节点(儿子节点)的初始估值,B1、B2……Bn表示中间节点的n个下层子节点(儿子节点) 上变异因子所对应获得的模糊测试用例数量;Y表示所述中间节点上变异因子所对应获得的模糊测试用例数量;a、b为常数,且a+b=1;
所述的A处理模块还包括:
排序及遍历模块,用于若存在可疑数据,则该节点的估值不变,对所述节点的下层节点的估值进行排序,并选出估值最大的节点;
目标程序检测模块,用于利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
C处理模块,用于若满足叶子准则,则剪掉该节点,并调用排序及选择模块;若存在可疑数据,则调用排序及遍历模块;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并调用排序及选择模块;否则直接调用排序及选择模块。
为了验证本发明的技术效果,发明人还将本发明的技术与背景技术中刘海龙等人的《基于变异树的Fuzzing技术研究》所述的技术进行了对比分析——分两部分进行对比:1.算法过程分析(从算法流程的角度,抽象出几条性质,如时间复杂度、前期准备工作量、算法精确度,数据测试量对两种算法进行对比);2.对比实验构建及结果对比(包括两次实验,实验是基于软件Serv-U,其中输入特定字符串时可能产生缓冲区溢出,导致FTP服务被强制关闭。
一、本发明的估值剪枝方法和刘海龙等人的变异树方法的对比
1)前期准备
对于本发明的估值剪枝方法及刘海龙等人的变异树方法,前期需要以下准备工作:利用本发明的模型进行数据测试之前,需要先对于测试软件进行代码覆盖率检验(代码覆盖率是漏洞存在的不充分但必要条件),由此可以分析出可疑函数所在的位置以及可疑函数所需要的所有测试数据。由所有测试数据以及中间准则和叶子准则,对于变异树的各个节点所包含的数据进行模糊测试。
2)算法精确度和数据测试量
对于本发明的估值剪枝方法,变异树构造以后对于每个节点数据测试以后如果没有找到可疑数据并不是直接将以该节点为根节点的变异子树删除,而是将估值降低比较降低估值以后的节点估值是否低于阈值,在进行数据搜索。这样可以避免直接删除变异子树造成的可疑数据丢失。
同样,对于刘海龙等人的变异树方法而言,对于一个已经构造的变异树节点的数据进行约束条件测试后,如果没有找到可疑数据就将以该节点为根节点的树直接删除,然后筛选出最终的测试数据对于目标测试软件进行测试。选择直接剪枝可以有效的提升数据测试效率,减少了一定得数据测试量,但是会造成遗漏掉可疑数据的可能。
而如果在对于总数据进行约束条件测试筛选时,是对于所有的原始数据总量进行,这样不会造成可疑漏洞的遗漏,但是暴力的方法造成的结果是在选择不丢失可疑数据的情况下,增加了时间方面的开销。
所以从上述分析而言,基于最原始的暴力数据分析,刘海龙等人的变异树方法可以有效的提高数据测试效率,减少数据测试总量,但是却增加了遗漏可疑数据的风险,其如果要将所有的漏洞都测试出来,则需要进行多次测试,总的测试时间较长,效率较低;本发明的估值剪枝方法在数据测试效率上也有改善,对于测试数据总量有所降低,但是这是在基于不丢可疑数据的前提下所进行的优化。因此,在数据测试精确度上来看,本发明的估值剪枝方法优于刘海龙等人的变异树方法。
二、实验对比
1.实验环境介绍
Serv-u是一个FTP服务器软件,其4.0版本内存在两个在FTP服务器软件Ser vU4.0上存在两个远程缓冲区溢出漏洞,其中一个是列目录LIST命令:LIS T-l:ParamString。如果ParamString是一个超长的字符串,那么就会导致缓冲区溢出;另一个存在溢出漏洞的是MDTM命令,格式为MDT Mtime+timezoneremote filename,当“+”后面time zone的参数是超长字符串时,也会导致溢出。发明人分别使用本发明的估值剪枝方法和刘海龙等人的变异树方法两种不同方法来对Serv-u4.0软件漏洞进行详细测试,找出其所有可触发漏洞的数据样例。
实验平台
CPU:酷睿-4210U
内存:4G
OS:win10pro64位
Fuzzing平台:python3.6 64bit
2.实验过程及结果
本次实验分两次进行,分别使用本发明的估值剪枝方法和刘海龙等人的变异树方法对于 serv-v软件的缓冲区溢出漏洞进行测试。
过程中涉及到随机构造数据,为避免误差,对比试验中,每种实验共进行五次,具体的测试数据如表1(所述的CBVT即本发明的估值剪枝方法,所述的现有技术即刘海龙等人的变异树方法)所示:
表1
五次测试取平均后的对比数据及对比如下表2所示:
表2
由此可见,本发明的估值剪枝方法和刘海龙等人的变异树方法相比,虽然在数据量和时间上均无优势,但是本发明的估值剪枝方法每一次运行均可得到系统中的全部漏洞,用其对未知系统做模糊测试时,无需重复运行算法,即可得到系统内的全部漏洞,不存在遗漏的情况;而刘海龙等人的变异树方法不够稳定,若想找出全部漏洞,则需要重复几次进行运算,这必然会使数据量和时间成倍增长。另外,本发明的估值减枝方法的单位数据量的测试时间要比刘海龙等人的变异树方法少,即数据量相同时,相对于刘海龙等人的变异树方法,本发明的估值减枝方法的运算效率更高。

Claims (10)

1.一种基于变异树的黑盒模糊测试方法,其特征在于,包括以下步骤:
S1,构建变异树,并利用变异树节点对应的变异因子所包含的相应的变异操作作用于变异字段生成模糊测试用例组;
S2,确定变异树中除根节点以外的每个节点的估值并设定估值的阈值;
S3,对未遍历的各个节点的估值进行排序,选出估值最大的节点;
S4,利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
S5,判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
S6,若满足叶子准则,则剪掉该节点,并转到S3,直至遍历完整棵变异树;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;
S7,若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则调整该节点对应的变异因子所包含的相应的变异操作,将所述的变异操作作用于变异字段生成新的模糊测试用例组,并转到S3,直至遍历完整棵变异树,即完成目标程序的模糊测试。
2.根据权利要求1所述的基于变异树的黑盒模糊测试方法,其特征在于,步骤S2中,通过以下方法确定叶子节点的初始估值:
S21,设A1、A2、A3…An为变异树节点对应的变异因子的n个属性所对应的权重,x1、x2、x3…xn为变异树节点对应的变异因子的n个属性的属性值;
S22,确定节点两两属性的比例关系;
S23,构造正互反比例矩阵;
S24,判断所述的矩阵能否通过一致性检验;
S25,若能通过一致性检验,则直接算出结果,即为属性权重;若不能通过一致性检验,则将该矩阵转化为一致矩阵,并转到S23;
S26,将所得的属性权重代入以下公式,即得叶子节点的初始估值Jg:
Jg=A1*x1+A2*x2+A3*x3+…+An*xn。
3.根据权利要求1或2所述的基于变异树的黑盒模糊测试方法,其特征在于,中间节点的初始估值通过以下方法获得:
<mrow> <mi>X</mi> <mo>=</mo> <mfrac> <mrow> <msub> <mi>A</mi> <mn>1</mn> </msub> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>+</mo> <mo>...</mo> <msub> <mi>A</mi> <mi>n</mi> </msub> <msub> <mi>B</mi> <mi>n</mi> </msub> </mrow> <mrow> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>+</mo> <mo>...</mo> <msub> <mi>B</mi> <mi>n</mi> </msub> </mrow> </mfrac> <mo>&amp;times;</mo> <mrow> <mo>(</mo> <mi>a</mi> <mo>+</mo> <mi>b</mi> <mo>&amp;times;</mo> <mfrac> <mrow> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>+</mo> <mo>...</mo> <msub> <mi>B</mi> <mi>n</mi> </msub> </mrow> <mi>Y</mi> </mfrac> <mo>)</mo> </mrow> </mrow>
其中,X表示所述中间节点的初始估值,A1、A2……An表示中间节点的n个下层子节点的初始估值,B1、B2……Bn表示中间节点的n个下层子节点上变异因子所对应获得的模糊测试用例数量;Y表示所述中间节点上变异因子所对应获得的模糊测试用例数量;a、b为常数,且a+b=1。
4.根据权利要求3所述的基于变异树的黑盒模糊测试方法,其特征在于,通过以下方法确定最优的a值:
A,抽取所构建变异树中的一个子树,使得该子树中至少包含一个节点,其对应的变异因子的相应的模糊测试用例进行模糊测试时输出存在可疑数据;
B,随机预选定a、b的初始值;
C,利用步骤S2~S7的方法进行模糊测试并监控输出结果;
D,若找到可疑节点,则统计所使用的测试用例总数;
E,更改a、b的值,并循环执行步骤C、D;
F,拟合a与对应的测试用例总数的函数曲线,所述曲线斜率的绝对值最小的点所对应的a即为最优的a。
5.根据权利要求1所述的基于变异树的黑盒模糊测试方法,其特征在于,步骤S6中所述的降低该节点及其孩子节点的估值,降低后的节点估值通过以下方法确定:
降低后的估值=降低前的估值*(1-下降比率),
下降比率=本次测试用例总数/理论测试用例总数;
其中,所述的本次测试用例总数,即本次参与测试的节点对应的变异因子所包含的所有变异操作产生的模糊测试用例组的数量。
6.根据权利要求1所述的基于变异树的黑盒模糊测试方法,其特征在于,步骤S6还包括:
S61若存在可疑数据,则该节点的估值不变,对所述节点的下层节点的估值进行排序,并选出估值最大的节点;
S62,利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
S63,判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
S64,若满足叶子准则,则剪掉该节点,并转到S3;若存在可疑数据,则转到S61;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;
S65,若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并转到S3;否则直接转到S3。
7.实现权利要求1~6所述方法的基于变异树的黑盒模糊测试系统,其特征在于,包括:
变异树构建模块:用于构建变异树;
模糊测试用例生成模块:利用变异树节点对应的变异因子所包含的相应的变异操作作用于变异字段生成模糊测试用例组;
估值确定模块,用于确定变异树中除根节点以外的每个节点的估值;
阈值设定模块,用于设定估值的阈值;
排序及选择模块,用于对未遍历的各个节点的估值进行排序,选出估值最大的节点;
检测模块,用于利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
判断模块,用于判断是否满足叶子准则、中间准则或输出是否存在可疑数据;
A处理模块,用于若满足叶子准则,则剪掉该节点,并调用排序及选择模块,直至遍历完整棵变异树;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并调用排序及选择模块;否则直接调用排序及选择模块,直至遍历完整棵变异树,即完成目标程序的模糊测试。
8.根据权利要求7所述的基于变异树的黑盒模糊测试系统,其特征在于,所述的估值确定模块包括:
比例关系确定模块,用于确定节点两两属性的比例关系;
正互反比例矩阵构造模块,用于并构造正互反比例矩阵;
一致性检验判断模块,用于判断所述的矩阵能否通过一致性检验;
B处理模块:用于若能通过一致性检验,则直接算出结果,即为属性权重;若不能通过一致性检验,则将该矩阵转化为一致矩阵,算得结果,并进行一致性检验,并调用一致性检验判断模块;
叶子节点初始估值计算模块,用于将所得的属性权重代入以下公式,即得叶子节点的初始估值Jg:
Jg=A1*x1+A2*x2+A3*x3+…+An*xn。
9.根据权利要求7或8所述的基于变异树的黑盒模糊测试系统,其特征在于,所述的估值确定模块还包括:
中间节点初始估值计算模块,用于通过以下方式计算中间节点的初始估值:
<mrow> <mi>X</mi> <mo>=</mo> <mfrac> <mrow> <msub> <mi>A</mi> <mn>1</mn> </msub> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>+</mo> <mo>...</mo> <msub> <mi>A</mi> <mi>n</mi> </msub> <msub> <mi>B</mi> <mi>n</mi> </msub> </mrow> <mrow> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>+</mo> <mo>...</mo> <msub> <mi>B</mi> <mi>n</mi> </msub> </mrow> </mfrac> <mo>&amp;times;</mo> <mrow> <mo>(</mo> <mi>a</mi> <mo>+</mo> <mi>b</mi> <mo>&amp;times;</mo> <mfrac> <mrow> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>+</mo> <mo>...</mo> <msub> <mi>B</mi> <mi>n</mi> </msub> </mrow> <mi>Y</mi> </mfrac> <mo>)</mo> </mrow> </mrow>
其中,X表示所述中间节点的初始估值,A1、A2……An表示中间节点的n个下层子节点的初始估值,B1、B2……Bn表示中间节点的n个下层子节点上变异因子所对应获得的模糊测试用例数量;Y表示所述中间节点上变异因子所对应获得的模糊测试用例数量;a、b为常数,且a+b=1。
10.根据权利要求7所述的基于变异树的黑盒模糊测试系统,其特征在于,所述的A处理模块还包括:
排序及遍历模块,用于若存在可疑数据,则该节点的估值不变,对所述节点的下层节点的估值进行排序,并选出估值最大的节点;
目标程序检测模块,用于利用该节点所获得的相应的模糊测试用例组对目标程序进行检测;
C处理模块,用于若满足叶子准则,则剪掉该节点,并调用排序及选择模块;若存在可疑数据,则调用排序及遍历模块;若满足中间准则或输出不存在可疑数据,则降低该节点及其孩子节点的估值,并判断该节点降低后的估值是否小于阈值;若该节点降低后的估值小于阈值,则剪掉以该节点为根节点的子树,并调用排序及选择模块;否则直接调用排序及选择模块。
CN201710555676.0A 2017-07-10 2017-07-10 基于变异树的黑盒模糊测试方法及系统 Active CN107423217B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710555676.0A CN107423217B (zh) 2017-07-10 2017-07-10 基于变异树的黑盒模糊测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710555676.0A CN107423217B (zh) 2017-07-10 2017-07-10 基于变异树的黑盒模糊测试方法及系统

Publications (2)

Publication Number Publication Date
CN107423217A true CN107423217A (zh) 2017-12-01
CN107423217B CN107423217B (zh) 2020-02-14

Family

ID=60426319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710555676.0A Active CN107423217B (zh) 2017-07-10 2017-07-10 基于变异树的黑盒模糊测试方法及系统

Country Status (1)

Country Link
CN (1) CN107423217B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800981A (zh) * 2019-01-11 2019-05-24 平安科技(深圳)有限公司 阈值设定方法及装置、存储介质、电子设备
CN110427323A (zh) * 2019-07-29 2019-11-08 天津车之家数据信息技术有限公司 一种应用测试方法、装置、代理服务器和系统
CN110708344A (zh) * 2019-11-22 2020-01-17 中电科仪器仪表有限公司 一种基于模糊技术的漏洞检测方法及系统
CN111459808A (zh) * 2020-03-20 2020-07-28 西北大学 一种基于类型推断的具有引导性的测试用例变异方法
CN111611150A (zh) * 2019-02-25 2020-09-01 北京搜狗科技发展有限公司 一种测试方法、装置、介质和电子设备
CN113704098A (zh) * 2021-08-18 2021-11-26 武汉大学 一种基于蒙特卡洛搜索树种子调度的深度学习模糊测试方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101604288A (zh) * 2009-07-10 2009-12-16 北京航空航天大学 一种基于测试数据的软件质量评价方法
US8997235B2 (en) * 2012-02-07 2015-03-31 Microsoft Technology Licensing, Llc Adaptive fuzzing system for web services
CN105260317A (zh) * 2015-11-19 2016-01-20 上海斐讯数据通信技术有限公司 一种测试用例的选取方法
CN105893254A (zh) * 2016-03-29 2016-08-24 乐视控股(北京)有限公司 测试用例导入方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101604288A (zh) * 2009-07-10 2009-12-16 北京航空航天大学 一种基于测试数据的软件质量评价方法
US8997235B2 (en) * 2012-02-07 2015-03-31 Microsoft Technology Licensing, Llc Adaptive fuzzing system for web services
CN105260317A (zh) * 2015-11-19 2016-01-20 上海斐讯数据通信技术有限公司 一种测试用例的选取方法
CN105893254A (zh) * 2016-03-29 2016-08-24 乐视控股(北京)有限公司 测试用例导入方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C MILLER, ZNJ PETERSON: "Analysis of Mutation and Generation-Based Fuzzing", 《INDEPENDENT SECURITY EVALUATORS 2007》 *
刘海龙等: "基于变异树的Fuzzing技术研究", 《计算机工程与设计》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800981A (zh) * 2019-01-11 2019-05-24 平安科技(深圳)有限公司 阈值设定方法及装置、存储介质、电子设备
CN109800981B (zh) * 2019-01-11 2024-05-28 平安科技(深圳)有限公司 阈值设定方法及装置、存储介质、电子设备
CN111611150A (zh) * 2019-02-25 2020-09-01 北京搜狗科技发展有限公司 一种测试方法、装置、介质和电子设备
CN111611150B (zh) * 2019-02-25 2024-03-22 北京搜狗科技发展有限公司 一种测试方法、装置、介质和电子设备
CN110427323A (zh) * 2019-07-29 2019-11-08 天津车之家数据信息技术有限公司 一种应用测试方法、装置、代理服务器和系统
CN110708344A (zh) * 2019-11-22 2020-01-17 中电科仪器仪表有限公司 一种基于模糊技术的漏洞检测方法及系统
CN110708344B (zh) * 2019-11-22 2022-03-04 中电科思仪科技股份有限公司 一种基于模糊技术的漏洞检测方法及系统
CN111459808A (zh) * 2020-03-20 2020-07-28 西北大学 一种基于类型推断的具有引导性的测试用例变异方法
CN113704098A (zh) * 2021-08-18 2021-11-26 武汉大学 一种基于蒙特卡洛搜索树种子调度的深度学习模糊测试方法
CN113704098B (zh) * 2021-08-18 2023-09-22 武汉大学 一种基于蒙特卡洛搜索树种子调度的深度学习模糊测试方法

Also Published As

Publication number Publication date
CN107423217B (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
CN107423217A (zh) 基于变异树的黑盒模糊测试方法及系统
CN111985796B (zh) 基于随机森林和智能算法预测混凝土结构耐久性的方法
CN111275172B (zh) 一种基于搜索空间优化的前馈神经网络结构搜索方法
CN112540849B (zh) 一种分布式计算作业的参数配置优化方法及系统
CN106650807B (zh) 一种海洋环境下混凝土强度劣化预测评价方法
CN104537010A (zh) 基于决策树的网构软件中的构件分类方法
CN111488713A (zh) 一种混凝土早期碳化预测的方法、预测系统及存储介质
CN109697512B (zh) 基于贝叶斯网络的个人数据分析方法及计算机存储介质
CN108345544A (zh) 一种基于复杂网络的软件缺陷分布影响因素分析方法
Tong et al. Effective federated adaptive gradient methods with non-iid decentralized data
CN111507518A (zh) 一种基于随机森林的小波神径网络混凝土抗渗预测的方法
CN111382875A (zh) 联邦模型参数确定方法、装置、设备及存储介质
CN115277354B (zh) 一种面向指挥控制网络管理系统的故障检测方法
Ahmed et al. Network sampling designs for relational classification
CN110493221A (zh) 一种基于聚簇轮廓的网络异常检测方法
CN108280207A (zh) 一种构造完美哈希的方法
CN111462812B (zh) 一种基于特征层次的多目标系统发育树构建方法
CN104283736B (zh) 一种基于改良自动状态机的网络通信五元组快速匹配算法
Wang et al. Multi-objective optimization of engineered cementitious composite based on machine learning and generative adversarial network
CN107358001A (zh) 一种基于Kriging模型的约束全局优化方法
CN113378276B (zh) 一种基于遗传算法及基因表达式编程的复合地基智能设计方法
CN116010291A (zh) 基于均衡优化理论与灰色预测模型的多路径覆盖测试方法
CN115719034A (zh) 基于随机森林和XGBoost的水泥基材料抗压强度预测方法及系统
CN111861264A (zh) 一种基于数据挖掘和智能算法预测混凝土耐久性方法
CN107871167A (zh) 一种基于似然度的因果结构学习方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant