CN114706761A - 一种基于约束分割的混合执行测试优化方法及装置 - Google Patents

一种基于约束分割的混合执行测试优化方法及装置 Download PDF

Info

Publication number
CN114706761A
CN114706761A CN202210259506.9A CN202210259506A CN114706761A CN 114706761 A CN114706761 A CN 114706761A CN 202210259506 A CN202210259506 A CN 202210259506A CN 114706761 A CN114706761 A CN 114706761A
Authority
CN
China
Prior art keywords
constraint
sub
solving
overtime
program
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.)
Pending
Application number
CN202210259506.9A
Other languages
English (en)
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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202210259506.9A priority Critical patent/CN114706761A/zh
Publication of CN114706761A publication Critical patent/CN114706761A/zh
Pending legal-status Critical Current

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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种基于约束分割的混合执行测试优化方法及装置,步骤包括:根据约束求解器提供的解构造一个初始输入或随机生成一个初始输入,以对被测试程序做具体执行;沿着程序输入执行的具体路径做符号执行,收集路径约束使用搜索策略生成待求解的新约束并构造变量关系图,分割变量关系图得到子图集合;基于子图集合生成子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;使用SMT求解方法求解不超时的子约束集合,使用随机生成方法求解超时的子约束集合,得到原始约束的解,根据求解结果生成新的程序输入。本发明以更细粒度的方式结合了随机测试和符号执行方法,能够实现混合执行测试效率的提升。

Description

一种基于约束分割的混合执行测试优化方法及装置
技术领域
本发明涉及程序测试中混合执行测试技术领域,尤其涉及一种基于约束分割的混合执行测试优化方法及其装置。
背景技术
程序测试是一种通过构造测试用例、执行测试用例来挖掘程序中漏洞的行为,其目的在于提高程序的质量与可靠性。作为传统程序开发流程中的关键环节,程序开发成本中的相当一部分都花在了程序测试上,工业界每年都需要向测试环节投入大量的资金和人力。程序测试中最大的挑战在于如何高效生成高质量的测试用例,即能够实现高覆盖率的测试用例。目前,测试用例一般都是由人工生成的,存在人工成本高、生成效率低和测试用例质量不高的问题。为了解决这个问题,一个有效的办法是程序自动测试,通过程序手段实现测试用例的自动化生成。目前,已经存在一些有效的程序自动测试技术,例如随机测试、符号执行和混合执行测试。
随机测试通过随机的方式来生成程序的输入,是一种最直接的自动化测试手段。随机测试生成测试用例的代价很低,可以在短时间内生成大量的测试用例。然而,这些测试用例往往具有相似度高的缺点,很难覆盖到程序中不同的区域。符号执行是与随机测试相对的一种自动化测试手段,通过符号化程序输入后模拟程序的执行,在执行的过程中收集路径约束,求解约束后就可以得到程序的具体输入。符号执行可以有效地覆盖程序中的不同区域,但是受限于约束求解的高昂成本。一般来说,符号执行过程中需要利用SMT求解器求解路径约束以生成下一个输入,即符号执行中的约束求解问题都是SMT求解问题,而目前的SMT求解器在求解数组、浮点等理论的SMT公式时都存在严重的性能问题,严重制约了符号执行的性能。随机测试和符号执行属于两种互补的测试技术,如果能够充分结合随机测试和符号执行两种方式,则可以结合两者的优点同时弥补各自的缺点,形成一种新的混合测试方式。
有从业者提出结合使用随机测试和符号执行两种方式,以期望形成一种结合两者优势的混合测试方式,但是该类结合使用机测试和符号执行的混合测试通常仅是粗粒度的结合,其中的随机测试与符号执行是分别独立执行的,无法充分利用各自执行过程中产生的信息来提高各自的执行效率。如现有技术中结合随机测试和符号执行的一般测试流程为:随机生成被测程序的初始输入,基于这个输入被测程序可以做具体执行,与此同时沿着具体执行的路径做符号执行,并收集路径约束;在当前的路径约束收集完毕之后,根据某种搜索策略对路径约束进行反转生成新的约束,求解后就可以得到新的程序输入;如果新的约束是不可满足的,或者当路径分歧发生时,下一个输入仍然是通过随机测试生成的,即每一个程序输入中的具体值要么完全由随机测试方法随机生成,要么完全由符号执行中的约束求解生成,随机测试与符号执行分别独立执行。而随机测试和符号执行测试独立执行的粗粒度结合方式,仍然无法完全解决SMT求解器在求解数组、浮点等理论的SMT公式时都存在严重的性能问题,因而仍然会存在约束求解效率不高问题。
综上,现有技术中测试方式,即便是结合随机测试与符号执行的混合执行方式,仍然深度依赖于约束求解的效率,存在求解效率低的问题。而对于真实程序而言,程序中往往广泛使用了复杂的数据结构和操作,使用传统测试方法对该类具有复杂结构、操作的程序进行分析会生成复杂的路径约束,仍然会导致约束求解十分缓慢,带来严重的效率问题。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够以更细的粒度充分结合随机测试和符号执行方法,提高高质量测试用例的生成效率,从而提高混合执行测试效率的基于约束分割的混合执行测试优化方法及其装置。
为解决上述技术问题,本发明提出的技术方案为:
一种基于约束分割的混合执行测试优化方法,包括:
步骤S1.程序输入:根据约束求解器提供的解构造一个初始的程序输入,或随机生成一个初始的程序输入,输入至被测试程序以对被测试程序做具体执行;
步骤S2.约束收集:沿着程序输入执行的具体路径做符号执行,收集路径约束并使用预设搜索策略生成待求解的新约束;
步骤S3.约束分割:为所述待求解的新约束构造变量关系图,并对所述变量关系图进行分割,得到变量关系图的子图集合;基于所述子图集合生成对应的子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;
步骤S4.约束求解:使用SMT求解方法求解所述不超时的子约束集合,以及使用随机生成方法求解所述超时的子约束集合,得到原始约束的解,根据求解结果生成新的程序输入。
进一步的,所述预设搜索策略为深度优先搜索策略(DFS)。
进一步的,所述为所述待求解的新约束构造变量关系图的步骤为:扫描所述新约束中所有原子约束,根据所有原子约束中出现过的变量来设置所述变量关系图的结点,根据变量之间的关联关系设置所述变量关系图的边,根据两个变量同时出现在原子约束里的次数来设置所述变量关系图中边上的权重,其中若两个变量没有同时出现在任何一个原子约束中则配置权重为0。
进一步的,所述步骤S3中基于聚类的图分割算法对所述变量关系图进行分割。
进一步的,所述步骤S3中对每个子约束做超时预测的步骤包括:
步骤S31.离线训练:预先收集SMT公式的基准集,对所述基准集进行训练,训练时每次提取特征向量后判断是否超时并打上标记,训练得到一个词袋模型;
步骤S32.在线预测:对每个所述子约束,提取所述子约束的特征向量并传给所述词袋模型,由所述词袋模型给出超时与否的预测。
进一步的,所述步骤S31中提取特征向量的具体步骤为:
步骤S311.确定词汇集:以所述SMT公式的AST树中所有可能的节点类型作为词汇集;
步骤S312.词袋初始化:构造一个维度为词汇集大小的向量作为词袋,向量中的每一个元素代表每个节点类型出现的次数,初始状态下,所有节点类型出现的次数都是0;
步骤S313.词汇统计:遍历所述SMT公式的AST(Abstract Syntax Tree,抽象语法树)树,计算每个节点类型在树中出现的次数并更新所述向量,最终得到所述特征向量。
进一步的,所述步骤S4的具体步骤为:
步骤S41.使用SMT求解所述不超时的子约束集合的第一合取PCc,当求解结果是不可满足的或者是未知时,则得到的所述原始约束的求解结果也是不可满足的或者是未知的;否则,当求解结果是可满足的,则得到第一解Sc
使用随机生成方法求解所述超时的子约束集合的第二合取PCr,求解时先判断所述第二合取PCr与所述第一合取PCc之间是否存在共同变量,如果存在,则把所述第一解Sc中所述共同变量的值赋给所述第二合取PCr后再进行求解,如果在给定的时间限值内使用随机生成方法没有找到解,则判定所述原始约束的求解结果是未知的;否则,得到第二解Sr
步骤S42.对所述第一解Sc和所述第二解Sr进行合并,得到所述原始约束的最终解。
本发明还提供一种基于约束分割的混合执行测试优化装置,包括混合执行器,所述混合执行器包括:
输入构造模块,用于根据约束求解器提供的解构造一个初始的程序输入,或随机生成一个初始的程序输入,输入至被测试程序以对被测试程序做具体执行;
约束收集模块,用于沿着程序输入执行的具体路径做符号执行,收集路径约束并使用预设搜索策略生成待求解的新约束;
约束分割模块,用于为所述待求解的新约束构造变量关系图,并对所述变量关系图进行分割,得到变量关系图的子图集合;基于所述子图集合生成对应的子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;
约束求解模块,用于使用SMT求解方法求解所述不超时的子约束集合,以及使用随机生成方法求解所述超时的子约束集合,得到原始约束的解,根据求解结果生成新的程序输入。
本发明还提供一种基于约束分割的混合执行测试优化装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,所述处理器用于执行所述计算机程序以执行如上述基于约束分割的混合执行测试优化方法。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于被计算机设备执行以实施上述基于约束分割的混合执行测试优化方法的计算机程序。
与现有技术相比,本发明的优点在于:
1、本发明通过把混合执行测试中待求解的约束分割成适合用随机生成技术求解的部分和适合用SMT求解技术求解的部分,再分别用最合适的方法进行求解,然后结合解得到待求解约束的解,这种方法以更细粒度的方式结合了随机测试和符号执行方法,这种细粒度结合可以充分发挥两种方法的优势,实现混合执行测试效率的提升。
2、本发明通过基于图聚类的分割算法对变量关系图进行划分,可以有效地把相似的约束划分在一起,再通过结合超时预测,可以有效地识别出待求解约束中会导致超时的子约束,从而更好地分割约束,使得可以充分利用SMT求解与随机求解两种求解方法来混合执行测试,进一步提高测试效果。
附图说明
图1是本实施例基于约束分割的混合执行测试优化方法的流程示意图。
图2是本发明具体应用实施例中初始程序输入示意图。
图3是本发明具体应用实施例中变量关系图的生成原理示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
随机测试生成测试用例的代价低,可以在短时间内生成大量的测试用例,然而测试用例往往具有相似度高的缺点,很难覆盖到程序中不同的区域;符号执行可以有效地覆盖程序中的不同区域,但是符号执行在约束求解时需要SMT求解器,而SMT求解器在求解数组、浮点等理论的SMT公式时会存在严重的性能问题,造成求解超时,即SMT求解器对于存在数组、浮点等理论的SMT公式等的约束时会造成求解超时,若能够预先将约束按照求解是否超时划分,使用SMT求解方法求解不超时的子约束集合、使用随机生成方法求解其他超时的子约束集合,则可以充分发挥两种测试方法的优势,即能够尽可能的覆盖到程序中不同的区域,又可以避免约束求解时存在的性能下降问题。
如图1所示,本实施例基于约束分割的混合执行测试优化方法的步骤包括:
步骤S1.程序输入:根据约束求解器提供的解构造一个初始的程序输入,或随机生成一个初始的程序输入,输入至被测试程序以对被测试程序做具体执行;
步骤S2.约束收集:沿着程序输入执行的具体路径做符号执行,收集路径约束并使用预设搜索策略生成待求解的新约束;
步骤S3.约束分割:为待求解的新约束构造变量关系图,并对变量关系图进行分割,得到变量关系图的子图集合;基于子图集合生成对应的子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;
步骤S4.约束求解:使用SMT求解方法求解不超时的子约束集合,以及使用随机生成方法求解超时的子约束集合,得到原始约束的解,根据求解结果生成新的程序输入。
本实施例通过把混合执行测试中待求解的约束分割成适合用随机生成技术求解的部分和适合用SMT求解技术求解的部分,再分别用最合适的方法进行求解,然后结合解得到待求解约束的解,能够以更细粒度的方式结合随机测试和符号执行方法,通过细粒度结合可以充分发挥两种方法的优势,实现混合执行测试效率的提升。
本实施例中,预设搜索策略具体可以采用深度优先搜索策略(DFS),先从某节点v出发,依次经节点v的未被访问的邻接点进行深度优先遍历,直至和节点v有路径相通的节点都被访问,若还有未被访问的节点,则从一个未被访问的节点出发,重新进行上述深度优先遍历,直到所有节点均被访问过。通过使用深度优先搜索策略,可以快速生成所有的新约束。
本实施例中,为待求解的新约束构造变量关系图的步骤为:扫描新约束中所有原子约束,根据所有原子约束中出现过的变量设置变量关系图的结点,根据变量之间的关联关系设置变量关系图的边,根据两个变量同时出现在原子约束里的次数设置变量关系图中边上的权重,其中若两个变量没有同时出现在任何一个原子约束中则配置权重为0。
本实施例中,步骤S3中基于聚类的图分割算法对变量关系图进行分割。基于聚类的图分割算法是一种广泛应用于深度学习样本分类任务的算法,通过基于图聚类地分割算法对变量关系图进行划分,可以有效地把相似的约束划分在一起,再通过结合超时预测,可以有效地识别出待求解约束中会导致超时的子约束,从而更好地分割约束,使得可以充分利用SMT求解与随机求解两种求解方法来混合执行测试,进一步提高测试效果。
变量关系图中节点是原子约束中出现的各个变量,图中带权重的边是两个变量(节点)同时出现在所有原子约束中的次数,如果两个变量没有共同的原子约束,则二者之间权重边的权重为0。假设需要将所有节点分为N类,本实施例基于聚类的图分割算法对变量关系图进行分割时,具体步骤为:
步骤1.随机选择N个聚类中心节点;
步骤2.根据当前N个中心节点,利用距离中心节点的间隔数量和边上权重作为度量方式,将所有节点分为N类;
步骤3.计算当前每一类样本点的相关边权重均值,将分类中最贴近该均值特征的节点作为下一次迭代的聚类中心;
步骤4.计算下一次迭代的聚类中心与当前聚类中心的均值特征差距;
步骤5.如果特征差距小于给定的迭代阈值,则迭代结束,反之返回步骤S3.2以继续下一轮迭代。
本实施例中,步骤S3中对每个子约束做超时预测的步骤包括:
步骤S31.离线训练:预先收集SMT公式的基准集,对基准集进行训练,训练时每次提取特征向量后判断是否超时并打上标记,训练得到一个词袋模型;
步骤S32.在线预测:对每个子约束,提取子约束的特征向量并传给词袋模型,由词袋模型给出超时与否的预测。
SMT求解器在求解数组、浮点等理论的SMT公式时会存在严重的性能问题,本实施例预先通过收集SMT公式来进行训练,生成一个词袋模型,由词袋模型可以表征各类SMT公式的特征,因而在生成子约束后将子约束与训练的词袋模型进行匹配,即可确定是否为SMT公式,如果匹配则预测会发生超时,否则预测不会发生超时,从而可以将子约束划分为超时与不超时两类,使得后续可以基于该两类子约束的特性使用相匹配的求解方法:对于超时的子约束使用随机求解方法进行求解、对于不超时的子约束则使用SMT求解方法进行求解,充分发挥两种方法的优势,大大提升混合执行测试的效率。
本实施例中,步骤S31中提取特征向量的具体步骤为:
步骤S311.确定词汇集:以SMT公式的AST树中所有可能的节点类型作为词汇集;
步骤S312.词袋初始化:构造一个维度为词汇集大小的向量作为词袋,向量中的每一个元素代表每个节点类型出现的次数,初始状态下,所有节点类型出现的次数都是0;
步骤S313.词汇统计:遍历SMT公式的AST树,计算每个节点类型在树中出现的次数并更新向量,最终得到特征向量。
本实施例中,步骤S4的具体步骤为:
步骤S41.使用SMT求解不超时的子约束集合的第一合取PCc,当求解结果是不可满足的或者是未知时,则得到的原始约束的求解结果也是不可满足的或者是未知的;否则,当求解结果是可满足的,则得到第一解Sc
使用随机生成方法求解超时的子约束集合的第二合取PCr,求解时先判断第二合取PCr与第一合取PCc之间是否存在共同变量,如果存在,则把第一解Sc中共同变量的值赋给第二合取PCr后再进行求解,如果在给定的时间限值内使用随机生成方法没有找到解,则判定原始约束的求解结果是未知的;否则,得到第二解Sr
步骤S42.对第一解Sc和第二解Sr进行合并,得到原始约束的最终解。
本实施例以图2所示的程序为例对本发明进行进一步说明,该程序以整型变量x和y作为输入,详细步骤为:
步骤S1:随机生成一个初始的输入(x=1,y=0),并基于该初始输入对被测试程序做具体执行;
步骤S2:沿着具体执行的路径做符号执行,得到当前路径上的路径约束(x7>=0)∧(y=0),并通过深度优先搜索策略(DFS)生成待求解的新约束(x7>=0)∧(y!=0)。
步骤S3:为上述新约束构造变量关系图,使用基于聚类的图分割算法对该变量关系图进行分割,得到变量关系图的子图集合,变量关系图和子图集合如图3所示;
基于上述变量关系图的子图集合生成对应的子约束集合{x7>=0,y!=0},并对每个子约束做超时预测,得到预测为不超时的子约束集合{y!=0}和预测为超时的子约束集合{x7>=0};
步骤S41:利用SMT求解技术求解不超时的子约束集合的合取PCc:y!=0,此时求解结果是可满足的,其解为Sc=(y=1);
利用随机生成技术求解超时的子约束集合的合取PCr:x7>=0;由于PCr与PCc之间不存在共同变量,直接对PCr进行求解。由于此实施例中PCr的解空间较大,随机生成技术很容易找到解,不会超过给定的时间限制,其解为Sr=(x=1);
步骤S42:对解Sc和解Sr进行合并,得到原始约束的解(x=1,y=1)。
本实施例中还提供一种基于约束分割的混合执行测试优化装置,包括混合执行器,混合执行器包括:
输入构造模块,用于根据约束求解器提供的解构造一个初始的程序输入,或随机生成一个初始的程序输入,输入至被测试程序以对被测试程序做具体执行;
约束收集模块,用于沿着程序输入执行的具体路径做符号执行,收集路径约束并使用预设搜索策略生成待求解的新约束;
约束分割模块,用于为待求解的新约束构造变量关系图,并对变量关系图进行分割,得到变量关系图的子图集合;基于子图集合生成对应的子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;
约束求解模块,用于使用SMT求解方法求解不超时的子约束集合,以及使用随机生成方法求解超时的子约束集合,得到原始约束的解,根据求解结果生成新的程序输入。
本实施例基于约束分割的混合执行测试优化装置与上述基于约束分割的混合执行测试优化方法为一一对应,在此不再一一赘述。
本实施例中还提供基于约束分割的混合执行测试优化装置,包括处理器以及存储器,存储器用于存储计算机程序,处理器用于执行计算机程序,处理器用于执行计算机程序以执行如上述方法。
本实施例中还提供计算机可读存储介质,该计算机可读存储介质中存储有用于被计算机设备执行以实施上述基于约束分割的混合执行测试优化方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种基于约束分割的混合执行测试优化方法,其特征在于,包括:
步骤S1.程序输入:根据约束求解器提供的解构造一个初始的程序输入,或随机生成一个初始的程序输入,输入至被测试程序以对被测试程序做具体执行;
步骤S2.约束收集:沿着程序输入执行的具体路径做符号执行,收集路径约束并使用预设搜索策略生成待求解的新约束;
步骤S3.约束分割:为所述待求解的新约束构造变量关系图,并对所述变量关系图进行分割,得到变量关系图的子图集合;基于所述子图集合生成对应的子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;
步骤S4.约束求解:使用SMT求解方法求解所述不超时的子约束集合,以及使用随机生成方法求解所述超时的子约束集合,得到原始约束的解,以根据求解结果生成新的程序输入。
2.根据权利要求1所述的基于约束分割的混合执行测试优化方法,其特征在于,所述预设搜索策略为深度优先搜索策略DFS。
3.根据权利要求1所述的基于约束分割的混合执行测试优化方法,其特征在于,所述步骤S3中为所述待求解的新约束构造变量关系图的步骤为:扫描所述新约束中所有原子约束,根据所有原子约束中出现过的变量设置所述变量关系图的结点,根据变量之间的关联关系设置所述变量关系图的边,根据两个变量同时出现在原子约束里的次数设置所述变量关系图中边上的权重,其中若两个变量没有同时出现在任何一个原子约束中则配置权重为0。
4.根据权利要求1所述的基于约束分割的混合执行测试优化方法,其特征在于,所述步骤S3中基于聚类的图分割算法对所述变量关系图进行分割。
5.根据权利要求1-4中任一项所述的基于约束分割的混合执行测试优化方法,其特征在于,所述步骤S3中对每个子约束做超时预测的步骤包括:
步骤S31.离线训练:预先收集SMT公式的基准集,对所述基准集进行训练,训练时每次提取特征向量后判断是否超时并打上标记,训练得到一个词袋模型;
步骤S32.在线预测:对每个所述子约束,提取所述子约束的特征向量并传给所述词袋模型,由所述词袋模型给出超时与否的预测。
6.根据权利要求5所述的基于约束分割的混合执行测试优化方法,其特征在于,所述步骤S31中提取特征向量的具体步骤为:
步骤S311.确定词汇集:以所述SMT公式的AST树中所有可能的节点类型作为词汇集;
步骤S312.词袋初始化:构造一个维度为词汇集大小的向量作为词袋,向量中的每一个元素代表每个节点类型出现的次数,初始状态下,所有节点类型出现的次数都是0;
步骤S313.词汇统计:遍历所述SMT公式的AST树,计算每个节点类型在树中出现的次数并更新所述向量,最终得到所述特征向量。
7.根据权利要求1~4中任意一项所述的基于约束分割的混合执行测试优化方法,其特征在于,所述步骤S4的具体步骤为:
S41.使用SMT求解所述不超时的子约束集合的第一合取PCc,当求解结果是不可满足的或者是未知时,则得到的所述原始约束的求解结果也是不可满足的或者是未知的;否则,当求解结果是可满足的,则得到第一解Sc
使用随机生成方法求解所述超时的子约束集合的第二合取PCr,求解时先判断所述第二合取PCr与所述第一合取PCc之间是否存在共同变量,如果存在,则把所述第一解Sc中所述共同变量的值赋给所述第二合取PCr后再进行求解,如果在给定的时间限值内使用随机生成方法没有找到解,则判定所述原始约束的求解结果是未知的;否则,得到第二解Sr
步骤S42.对所述第一解Sc和所述第二解Sr进行合并,得到所述原始约束的最终解。
8.一种基于约束分割的混合执行测试优化装置,其特征在于,包括混合执行器,所述混合执行器包括:
输入构造模块,用于根据约束求解器提供的解构造一个初始的程序输入,或随机生成一个初始的程序输入,输入至被测试程序以对被测试程序做具体执行;
约束收集模块,用于沿着程序输入执行的具体路径做符号执行,收集路径约束并使用预设搜索策略生成待求解的新约束;
约束分割模块,用于为所述待求解的新约束构造变量关系图,并对所述变量关系图进行分割,得到变量关系图的子图集合;基于所述子图集合生成对应的子约束集合,对每个子约束做超时预测,生成预测为不超时的子约束集合和预测为超时的子约束集合;
约束求解模块,用于使用SMT求解方法求解所述不超时的子约束集合,以及使用随机生成方法求解所述超时的子约束集合,得到原始约束的解,以根据求解结果生成新的程序输入。
9.一种基于约束分割的混合执行测试优化装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~7中任意一项所述基于约束分割的混合执行测试优化方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有用于被计算机设备执行以实施权利要求1~7中任意一项所述基于约束分割的混合执行测试优化方法的计算机程序。
CN202210259506.9A 2022-03-16 2022-03-16 一种基于约束分割的混合执行测试优化方法及装置 Pending CN114706761A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210259506.9A CN114706761A (zh) 2022-03-16 2022-03-16 一种基于约束分割的混合执行测试优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210259506.9A CN114706761A (zh) 2022-03-16 2022-03-16 一种基于约束分割的混合执行测试优化方法及装置

Publications (1)

Publication Number Publication Date
CN114706761A true CN114706761A (zh) 2022-07-05

Family

ID=82169300

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210259506.9A Pending CN114706761A (zh) 2022-03-16 2022-03-16 一种基于约束分割的混合执行测试优化方法及装置

Country Status (1)

Country Link
CN (1) CN114706761A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292206A (zh) * 2022-10-08 2022-11-04 西安深信科创信息技术有限公司 软件漏洞检测方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292206A (zh) * 2022-10-08 2022-11-04 西安深信科创信息技术有限公司 软件漏洞检测方法、装置、电子设备及存储介质
CN115292206B (zh) * 2022-10-08 2023-03-14 西安深信科创信息技术有限公司 软件漏洞检测方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN109144882B (zh) 一种基于程序不变量的软件故障定位方法及装置
US20190261204A1 (en) Method and system for abnormal value detection in lte network
Halappanavar et al. Scalable static and dynamic community detection using grappolo
CN108491302B (zh) 一种检测spark集群节点状态的方法
CN111931179B (zh) 基于深度学习的云端恶意程序检测系统及方法
CN109542783B (zh) 一种基于变量分割的扩展有限状态机测试数据生成方法
CN113703775A (zh) 一种编译方法、装置、设备及存储介质
Chen et al. Deep neural network test coverage: How far are we?
CN114124567A (zh) 基于大数据漏洞挖掘的云服务处理方法及人工智能系统
CN115098292B (zh) 应用程序崩溃根原因识别方法、装置及电子设备
Chaudhuri et al. Functional criticality classification of structural faults in AI accelerators
CN111177731A (zh) 一种基于人工神经网络的软件源代码漏洞检测方法
CN112035345A (zh) 一种基于代码片段分析的混合深度缺陷预测方法
CN114706761A (zh) 一种基于约束分割的混合执行测试优化方法及装置
CN115828260A (zh) 基于脆弱点聚类与距离空间划分的多机协同漏洞检测系统
You et al. Regression fuzzing for deep learning systems
CN114003509A (zh) 基于流形正则化宽度学习的软件缺陷定位方法及处理装置
CN108121998B (zh) 一种基于Spark框架的支持向量机训练方法
CN112783513A (zh) 一种代码风险检查方法、装置及设备
CN114780967B (zh) 基于大数据漏洞挖掘的挖掘评估方法及ai漏洞挖掘系统
CN115422092A (zh) 一种基于多方法融合的软件bug定位方法
Oliver et al. Approximate network motif mining via graph learning
CN115277124A (zh) 基于系统溯源图搜索匹配攻击模式的在线系统及服务器
CN112749082B (zh) 一种基于de-th算法的测试用例生成方法及系统
Parikh et al. Mining-guided state justification with partitioned navigation tracks

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