CN112965897A - 一种基于mRMR算法挑选可疑度公式的程序错误定位方法 - Google Patents
一种基于mRMR算法挑选可疑度公式的程序错误定位方法 Download PDFInfo
- Publication number
- CN112965897A CN112965897A CN202110195612.0A CN202110195612A CN112965897A CN 112965897 A CN112965897 A CN 112965897A CN 202110195612 A CN202110195612 A CN 202110195612A CN 112965897 A CN112965897 A CN 112965897A
- Authority
- CN
- China
- Prior art keywords
- error
- statement
- software program
- program
- formula
- 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
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
- G06F11/3676—Test management for coverage analysis
-
- 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
- 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/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于mRMR算法挑选可疑度公式的程序错误定位方法,其对已有的软件程序错误定位方法进行了分析和改进,在原来的方法基础上使用基因编程生成可疑度计算公式并引入mRMR算法进行挑选。新方法考虑公式之间相关性而引入mRMR算法进行筛选,使用所选公式计算软件程序语句的可疑度分数,将其作为特征输入机器学习算法中进行模型训练,最后利用所构建的错误定位模型进行有效错误定位。本发明能够高效并准确地对软件程序中的错误语句进行定位;实验结果表明,大多数情况下,本发明方法比经典错误定位技术更有效,在整体错误定位效果上具有明显优势。
Description
技术领域
本发明属于软件程序错误定位检测技术领域,具体涉及一种基于mRMR算法挑选可疑度公式的程序错误定位方法。
背景技术
作为软件产品生产一线最不可或缺的一个环节,错误定位成为了软件调试中最为耗费人力、耗费资源的一项技术环节,再加上如今软件结构日趋复杂,软件规模日益增大的属性,给开发人员的工作提供了不少难度,软件失效的发生概率也变得越来越高。近些年来,国内外学者提出了许多自动化方法用于错误定位的研究,致力于提高软件错误定位的适用性和有效性,并取得了一些研究成果。学术界目前已经比较成熟的方法是基于频谱的方法(SBFL),这种方法简而言之是通过对比程序在不同颗粒度(语句、谓词、分支、基本快)下成功执行和失败执行的覆盖信息来确定可疑代码的位置。
学术界已经有许多可疑度计算公式被提出,这些公式大多都是依靠人类经验和直觉所设计出来的。比较经典的公式比如Jones等人提出的Tarantula,Abreu引入分子生物学领域的相似系数Ochiai并基于此系数设计的Ochiai公式,Wong等人则根据测试用例的执行情况对测试用例进行不同程度的区分,提出的Wong1、Wong2、Wong3公式等。在这些众多公式中,很难有一个公式能够适应所有类型的程序,其中一个最重要的原因就是不同的程序编写风格和逻辑结构都有很大的不同。故近几年来,学术界出现了许多基于遗传算法的方法来设计可疑度计算公式,旨在能够适应不同程序,但是这样仍然有个问题:使用单个公式进行软件程序错误定位的效率是十分有限的,无法通过使用单个公式使错误定位的效率和准确性进一步提升。
针对上述缺点,目前解决方案主要是结合机器学习、数据挖掘等新兴技术进行错误定位。机器学习技术具有自适应性和鲁棒性,能够在有限的人机交互下基于数据生成模型,模型训练过程和创建过程高度自动化,基本不需要人工干预。利用机器学习算法可以自动创建一个针对可疑语句的排序模型,不仅可以极大地减少错误定位的工作成本,而且可以在很大程度上提高定位的准确性。文献[WONG W E,QI Y.BP neural network-basedeffective fault localization[J].International Journal of Software Engineeringand Knowledge Engineering,2009,19(4):573-597]提出了一种基于BP神经网络的故障定位技术,BP神经网络是目前最流行的神经网络模型之一;BP神经网络结构简单,易于用计算机程序实现。BP网络具有逼近复杂非线性函数的能力,收集每个测试用例的覆盖数据和相应的执行结果,并将它们结合起来训练BP神经网络,使网络能够学习它们之间的关系;然后,将一组虚拟测试用例的覆盖率(每个测试用例只覆盖程序中的一个语句)输入到训练好的BP网络中,输出值可以看作是每个语句包含错误的可能性。基于机器学习的模型的构建过程中,最核心的部分应该是特征工程的构建,往往在选取不同的特征值对最终的学习也会产生不同的影响,文献[B.Le T D,Lo D,Le Goues C,et al.A learning-to-rank basedfault localization approach using likely invariants[C]//Proceedings of the25th International Symposium on Software Testing and Analysis.2016:177-188]中提取了许多程序中与错误定位的有效性有潜在相关性的值来作为特征,例如有关程序执行跟踪的信息和所覆盖的程序元素的信息、一些由前十名可疑度分数所计算所得值等一共50个特征;这种方法的缺点是特征工程构建需要大量的时间和精力,且收集信息过程困难重重。
现有方案都有一个无法避免的问题:无法将执行剖面信息和错误语句的内在联系或规律最大化的表现出来,因为我们要在特征的基础上去训练模型,而特征的作用就是去描述原始数据,挖掘原始数据中的信息和规律。
发明内容
鉴于上述,本发明提供了一种基于mRMR算法挑选可疑度公式的程序错误定位方法,能够高效并准确地对软件程序中的错误语句进行定位。
一种基于mRMR算法挑选可疑度公式的程序错误定位方法,包括如下步骤:
(1)统计软件程序中各条语句在每组测试用例下的语句覆盖情况,得到对应的语句覆盖矩阵;
(2)统计每组测试用例在软件程序运行下的执行结果:正确或错误;
(3)根据语句覆盖情况以及执行结果计算每条语句的程序频谱数据;
(4)对于任一可疑度公式,根据程序频谱利用该公式计算软件程序中每条语句的错误可疑度,进而根据错误可疑度从高到低的顺序对所有语句进行排序得到语句排序列表;
(5)根据步骤(4)遍历通过基因编程技术生成的所有可疑度公式,得到这些可疑度公式所对应生成的语句排序列表;
(6)根据可疑度公式的语句排序列表采用mRMR(Max-Relevance and Min-Redundancy,最大相关最小冗余)算法计算公式之间的相关性,并根据计算结果挑选出一定数量的可疑度公式;
(7)对于软件程序中的任一条语句,利用所挑选出的可疑度公式计算出该语句的错误可疑度并组成向量作为输入,以该语句在软件程序中是否为错误语句作为标签(1表示错误语句,0表示非错误语句),选择机器学习算法对其进行训练,训练完成得到语句错误可疑度估计模型;
(8)对于需要进行错误定位的软件程序,利用所述估计模型计算出其中每一条语句的错误可疑度,根据错误可疑度从高到低对所有语句进行排序并逐条进行错误排查。
进一步地,所述步骤(1)中语句覆盖情况的定义为:以某一测试用例作为软件程序的输入,若软件程序在整个运行过程中执行了某一条语句,则该语句在该测试用例下的语句覆盖情况表示为1,否则表示为0。
进一步地,所述步骤(1)中语句覆盖矩阵的大小为m×n,m为软件程序中的语句总数,n为测试用例总数;该矩阵中第i行第j列的元素值为第i条语句在第j组测试用例下的语句覆盖情况,i和j均为自然数且1≤i≤m,1≤j≤n。
进一步地,所述步骤(3)中对于软件程序中的任一条语句s,其程序频谱数据包括了以下四个因子:
a11表示软件程序对于测试用例的整个运行过程中执行了s且执行结果为正确的测试用例个数;
a00表示软件程序对于测试用例的整个运行过程中未执行s且执行结果为错误的测试用例个数;
a10表示软件程序对于测试用例的整个运行过程中执行了s且执行结果为错误的测试用例个数;
a01表示软件程序对于测试用例的整个运行过程中未执行s且执行结果为正确的测试用例个数。
进一步地,所述步骤(5)中通过基因编程技术生成可疑度公式的具体过程为:首先初始化生成一定规模的种群,使种群中个体(即可疑度公式)进行交叉、变异操作后生成子代个体,比较子代个体与父代个体的适应度,使适应度较优的子代个体替换掉父代个体,保持种群规模不变,从而完成一次迭代过程;依此完成多次迭代或种群的整体适应度水平达到所需的要求,则终止该过程并输出当前种群;所述适应度即通过个体对应的可疑度公式定位到错误语句所排查的语句数量占整个程序语句总数量的百分比。
进一步地,所述步骤(7)中的机器学习算法可选用随机森林算法或支持向量机算法。
进一步地,所述步骤(8)中对于需要进行错误定位的软件程序,利用步骤(6)所挑选出的可疑度公式计算程序中每一条语句的错误可疑度,对于任一条语句,将各个可疑度公式对其计算得到的错误可疑度组成向量形式输入至模型中,得到由模型估计出的语句错误可疑度。
本发明方法对已有的软件程序错误定位方法进行了分析和改进,在原来的方法基础上使用基因编程生成可疑度计算公式并引入mRMR算法进行挑选。新方法考虑公式之间相关性而引入mRMR算法进行筛选,使用所选公式计算软件程序语句的可疑度分数,将其作为特征输入机器学习算法中进行模型训练,最后利用所构建的错误定位模型进行有效错误定位。本发明能够高效并准确地对软件程序中的错误语句进行定位;实验结果表明,大多数情况下,本发明方法比经典错误定位技术更有效,在整体错误定位效果上具有明显优势。
附图说明
图1为本发明方法的整体流程示意图。
图2为由基因C1和C2所构建的表达树形式示意图。
图3为本发明方法与经典方法关于代码检查百分比-错误版本数量在Defects4J下使用随机森林算法的实验结果对比示意图。
图4为本发明方法与经典方法关于代码检查百分比-错误版本数量在Defects4J下使用支持向量机算法的实验结果对比示意图。
图5为本发明方法与经典方法关于代码检查百分比-错误版本数量在SIR下使用随机森林算法的实验结果对比示意图。
图6为本发明方法与经典方法关于代码检查百分比-错误版本数量在SIR下使用支持向量机算法的实验结果对比示意图。
图7为本发明方法与经典方法关于Top-1值在Defects4J下的实验结果对比示意图。
图8为本发明方法与经典方法关于Top-1值在SIR下的实验结果对比示意图。
具体实施方式
为了更为具体的描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
基于频谱的错误定位方法主要依赖于测试用例的执行覆盖信息,将语句的频谱信息按照可疑度计算公式计算后按语句可疑度值降序排列逐步查找错误。为了能够适应不同程序本发明引入了遗传编程,它不仅可以实现公式的自动设计,而且可以提高可疑度计算公式的适应性和可扩展性。但是,仍然存在一个问题:使用单个公式进行错误定位的效率是十分有限的,并且错误定位的成本仍然是非常昂贵的。因此,现阶段存在将各种程序信息的动态或静态组合(包括可疑度计算公式的组合)的研究趋势。例如,将程序的频谱信息与源代码的静态信息(代码行数、语句复杂度、参数和变量的数量等)组合在一起构建软件程序错误定位模型;将各种不同的错误定位技术组合以构建软件程序错误定位模型,包括SBFL、MBFL、动态切片、基于IR的错误定位技术等;还有关于组合各种可疑度计算公式进行软件程序错误定位的研究。
本发明是基于可疑度计算公式组合的错误定位方法,用于组合的可疑度计算公式不是已有的公式,而是由基因编程自动设计的公式。本发明将mRMR算法应用于公式的选择,以最大程度地减少所选公式之间的相关性,并使用它们来计算语句可疑度评分,以此作为构建错误定位模型训练的输入特征;最后,我们使用所构建的软件程序错误定位模型来定位程序错误。
本发明整体流程如图1所示,图中的GP公式不同于现有公式大多是靠人们直觉或使用其他领域已有公式设计而成,而是使用基因编程的方法设计。基因编程是一种启发式的搜索技术,通过预先设定的适应度指标在每一代群体中选择最合适的个体作为下一代的父母,在经过交叉、变异等操作后,新的一代又作为下一代的父母,新一代的个体通常比上一代的个体更加适合。在内存中,程序通常以树的结构来表示表达式,树的终端节点是操作数,非终端节点则是操作符。
基因编程方法的具体实现流程为:第1步:初始化种群;种群是由若干独立的染色体组成,在初始阶段,染色体都是随机生成的。第2步:计算适应值;适应值指的是把输入数据代入到种群中某个染色体之后,所得出的拟合值与真实值之间的误差指标,如果获得了满意的适应值,就说明算法已经适应了输入数据的变化规律,这时就可以保存结果并退出,否则继续进入下一步。第3步:保存最优染色体;把适应值最优的一个或多个染色体提取出来另外保存,这样做的目的是为了确保变异后染色体的适应值不会比上一代差。第4步:选择与淘汰染色体;根据每个染色体适应值的大小进行选择,适应值大的被选中的概率高,适应值小的被选中的概率低;第5步:复制;将上一步被选中的染色体直接复制到下一代;第6步:变异;在对染色体进行复制的同时,按照一定概率进行基因变异操作,如变换、重组、穿插等,形成新的染色体。第7步:形成新种群;在进行一系列的选择复制和其它遗传操作后,形成了新的种群,返回第2步。
其中,染色体代表了实际计算中的一个函数计算形式,每个染色体都由若干的基因组成,基因分为头部和尾部,又分别由终结符和非终结符构成。无论终结符或非终结符,都是遗传算法最基本的变异单位;非终结符集合可以包括常用的计算运算符,如+、-、*、/等;终结符作为集合的形式出现,其中程序的输入、常量或者没有参数的函数等,在树形结构表示法中,终结符代表的就是树的叶节点。
如有两个公式基因:C1=+*ab-+aa/+aba以及C2=Q*+*aQaba,其中a和b为输入变量,其余为基本运算符,那么由基因C1和C2所构建出来的表达树形式就如图2所示。
交叉操作:在两个公式基因上设置交叉点,进行部分基因交换;比如上述C1、C2染色体,交叉点为左子树根节点,即交换两个染色体左子树,交换后结果为:C1=++*aQab-+aa/+aba以及C2=Q**aba。
变异操作:是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率P做变动),比如改变非终结符中的符号:将*变为+、将-变为/。
本实施方式使用由python编写的遗传算法框架pyevolve来实现基因编程,所使用的pyevolve版本是0.6版本,python运行环境为2.6。其中,表1和表2显示了在程序中本发明所使用的实验参数和表达式操作符,适应度函数决定着每代被选择个体的优劣程度以及最终结果对于初始问题要求的契合程度,所以说适应度函数十分重要,它是程序演化的引擎。本发明使用如下函数作为适应度函数:
其中:t为可疑度计算公式,b为错误语句,p为包含错误语句b的程序。
表1
表2
mRMR算法旨在在原始的特征集合中寻找到与输出标签相关性最大、特征与特征之间相关性最小的一组特征子集。该算法的核心思想是基于信息论的,通过各个特征与标签的信息增益均值来计算特征子集与标签的相关性,通过特征间互信息均值的平方来衡量其冗余性。
本发明中mRMR算法通过衡量同个语句被不同公式所计算出的不同可疑度值来刻画各公式之间的相关性,具体地:给定一个公式集合S,其标签为c,则公式与标签之间的最大相关性D的计算公式如下,算法采用所有公式与标签之间互信息的平均值来近似化。
其中:|S|为公式集合S中的公式数量,c为标签,xi为公式集合S中的第i个公式,I(xi:c)为公式xi与标签c之间的互信息。
毫无疑问,通过Max-Relevance选择的公式之间可能存在冗余,当两个公式之间是冗余的,我们便可以通过以下公式来剔除冗余公式。
其中:R为公式xi与公式xj之间的最小冗余性。
算法定义了一个算子Φ来将Max-Relevance和Min-Redundancy结合,也就是mRMR。
Φ=D-R
假设已经生成公式子集Sm-1,需要在剩余的公式集合中选择第m个公式,我们采用增量搜索的方法可以得到近似最优解,通过最大化Φ算子选择公式,即:
其中:Sm-1为已经选择了m-1个公式组成的公式子集。
mRMR挑选公式过程如下:
首先,利用互信息计算I(xi:c),即由公式计算的语句可疑度值和语句标签之间的互信息值,语句标签为:错误语句标签为1,正确语句标签为0;I(xi:c)越大,公式和输出标签之间的相关性就越大。mRMR通过计算所有公式与标签之间的互信息值找出相关性最大的m个公式,即公式子集S,也就是找出与标签c关系最密切的m个公式,即挑选出个m个互信息值大于等于1中D值的公式,m为挑选公式数量预设值。
然后,消除m个公式之间的冗余,剔除互信息大于R值的公式,剔除后数量不足m,就使用增量搜索的方法在剩余公式中继续挑选公式,直到满足预设值m。
本发明选择随机森林算法和支持向量机算法作为模型训练的原型算法。在训练错误定位模型中使用基因编程所生成的可疑度计算公式作为算法的特征向量,以程序语句的四个values(a11、a10、a00、a01)作为X向量输入,以每条语句是否为错误语句的标签(语句有缺陷为1,语句没有缺陷为0)作为Y向量输入,模型输出的是每条语句的标签估算值,也就是模型给出的每条语句的可疑度得分,将这些可疑度得分降序排列,也就得到了语句的可疑度排序。我们设计了三种不同的公式组合来作为排名模型的输入特征,对于这三个公式组,我们在图标中使用不同的缩写来表示不同的公式组:缩写max代表公式组1,缩写random代表公式组2,缩写mRMR代表公式组3。此外,缩写r代表随机森林,s代表支持向量机。例如表示随机公式组的random_r用作随机森林模型的特征集,表3和表4是实验中使用的源程序信息,表5为第一组所选公式。
表3
表4
表5
本发明所设计的第二组和第三组公式来源均为由基因编程所设计的GP公式集,实验中一共生成3000个GP公式供备选。第二组公式是由备选GP公式集中随机挑选而成,为了克服随机性,本发明在实验中一共设置了30组随机公式组,最终实验结果取其平均值最为第二组的实验结果。第三组公式由mRMR算法在GP公式集中挑选15个公式组成,三组公式的维度均设置为15的大小。
为了更直观地比较每种方法的程序错误定位性能,我们使用EXAM指标来衡量本发明方法的优势,EXAM分数是由程序中在找到第一个错误之前所检查的语句数和被测程序的总语句数的比值,显然,该指标的值越小代表定位效果越好。本发明在实验中计算了Defects4J和SIR上所有程序的所有版本中的错误检出率和代码检查率,如图3~图6所示,横坐标是代码检查率,纵坐标是相应的错误检出率,在相同的代码检查率的前提下,错误检出率越高,该方法越有效;图中带有不同标记的线条代表具有代码检查率的不同方法的错误检出率的变化趋势,从结果中可以看出,本发明方法在相同代码检查率下,大多数情况下能够胜过其他定位技术。在实际的开发环境中,开发人员更倾向于检查排名靠前的可疑代码,当错误在整个程序的靠后位置发生时,我们花费在查找程序错误位置上的成本很高。因此,开发人员更加倾向于检查整个代码的前10%或前20%以发现程序错误;不难发现,在代码检查率最高的前20%,本发明方法可以发现更高比例的代码错误。
表6是在公式组1和两个错误定位模型(随机森林和支持向量机)中每个单独的公式收集的Defects4J的acc@n数据,acc@n计算在最终错误语句的排名列表(排名按可疑度值从高到低排序)中前n个位置内成功定位的程序错误数量。显然,acc@n值越大,说明定位效果越好,无论是与单个定位技术进行比较还是与其他两个对比实验进行比较,本发明方法都是有效的,它可以在前10个位置定位更多的程序错误,成功定位程序错误的比例甚至可以达到60%以上。为了进一步说明问题,我们从所有不同程序的不同版本中计算了最终排名列表中第一个错误语句的平均排名;例如,在Defects4J的Closure程序中,总共有133个版本,对于GP-13公式,这些版本中的第一个错误语句的平均排名是357.99。我们计算了Defects4J中五个程序和SIR中四个程序的第一次错误语句的平均排名,然后将每个公式与我们的方法进行比较,并建立箱形图,如图7和图8所示,实验结果进一步说明我们的方法是优于其他定位技术的。
表6
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明,熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (8)
1.一种基于mRMR算法挑选可疑度公式的程序错误定位方法,包括如下步骤:
(1)统计软件程序中各条语句在每组测试用例下的语句覆盖情况,得到对应的语句覆盖矩阵;
(2)统计每组测试用例在软件程序运行下的执行结果:正确或错误;
(3)根据语句覆盖情况以及执行结果计算每条语句的程序频谱数据;
(4)对于任一可疑度公式,根据程序频谱利用该公式计算软件程序中每条语句的错误可疑度,进而根据错误可疑度从高到低的顺序对所有语句进行排序得到语句排序列表;
(5)根据步骤(4)遍历通过基因编程技术生成的所有可疑度公式,得到这些可疑度公式所对应生成的语句排序列表;
(6)根据可疑度公式的语句排序列表采用mRMR算法计算公式之间的相关性,并根据计算结果挑选出一定数量的可疑度公式;
(7)对于软件程序中的任一条语句,利用所挑选出的可疑度公式计算出该语句的错误可疑度并组成向量作为输入,以该语句在软件程序中是否为错误语句作为标签,选择机器学习算法对其进行训练,训练完成得到语句错误可疑度估计模型;
(8)对于需要进行错误定位的软件程序,利用所述估计模型计算出其中每一条语句的错误可疑度,根据错误可疑度从高到低对所有语句进行排序并逐条进行错误排查。
2.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(1)中语句覆盖情况的定义为:以某一测试用例作为软件程序的输入,若软件程序在整个运行过程中执行了某一条语句,则该语句在该测试用例下的语句覆盖情况表示为1,否则表示为0。
3.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(1)中语句覆盖矩阵的大小为m×n,m为软件程序中的语句总数,n为测试用例总数;该矩阵中第i行第j列的元素值为第i条语句在第j组测试用例下的语句覆盖情况,i和j均为自然数且1≤i≤m,1≤j≤n。
4.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(3)中对于软件程序中的任一条语句s,其程序频谱数据包括了以下四个因子:
a11表示软件程序对于测试用例的整个运行过程中执行了s且执行结果为正确的测试用例个数;
a00表示软件程序对于测试用例的整个运行过程中未执行s且执行结果为错误的测试用例个数;
a10表示软件程序对于测试用例的整个运行过程中执行了s且执行结果为错误的测试用例个数;
a01表示软件程序对于测试用例的整个运行过程中未执行s且执行结果为正确的测试用例个数。
5.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(5)中通过基因编程技术生成可疑度公式的具体过程为:首先初始化生成一定规模的种群,使种群中个体进行交叉、变异操作后生成子代个体,比较子代个体与父代个体的适应度,使适应度较优的子代个体替换掉父代个体,保持种群规模不变,从而完成一次迭代过程;依此完成多次迭代或种群的整体适应度水平达到所需的要求,则终止该过程并输出当前种群;所述适应度即通过个体对应的可疑度公式定位到错误语句所排查的语句数量占整个程序语句总数量的百分比。
6.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(7)中的机器学习算法可选用随机森林算法或支持向量机算法。
7.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(8)中对于需要进行错误定位的软件程序,利用步骤(6)所挑选出的可疑度公式计算程序中每一条语句的错误可疑度,对于任一条语句,将各个可疑度公式对其计算得到的错误可疑度组成向量形式输入至模型中,得到由模型估计出的语句错误可疑度。
8.根据权利要求1所述的程序错误定位方法,其特征在于:该方法对已有的软件程序错误定位方法进行了分析和改进,在原来的方法基础上使用基因编程生成可疑度计算公式并引入mRMR算法进行挑选;该方法考虑公式之间相关性而引入mRMR算法进行筛选,使用所选公式计算软件程序语句的可疑度分数,将其作为特征输入机器学习算法中进行模型训练,最后利用所构建的错误定位模型进行有效错误定位,能够高效并准确地对软件程序中的错误语句进行定位;实验结果表明,大多数情况下,该方法比经典错误定位技术更有效,在整体错误定位效果上具有明显优势。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110195612.0A CN112965897B (zh) | 2021-02-19 | 2021-02-19 | 一种基于mRMR算法挑选可疑度公式的程序错误定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110195612.0A CN112965897B (zh) | 2021-02-19 | 2021-02-19 | 一种基于mRMR算法挑选可疑度公式的程序错误定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112965897A true CN112965897A (zh) | 2021-06-15 |
CN112965897B CN112965897B (zh) | 2022-07-05 |
Family
ID=76285391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110195612.0A Active CN112965897B (zh) | 2021-02-19 | 2021-02-19 | 一种基于mRMR算法挑选可疑度公式的程序错误定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965897B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115510782A (zh) * | 2022-08-31 | 2022-12-23 | 芯华章科技股份有限公司 | 定位验证错误的方法、电子设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760295A (zh) * | 2015-12-28 | 2016-07-13 | 天津大学 | 基于搜索算法的多缺陷定位方法 |
CN108415848A (zh) * | 2018-05-14 | 2018-08-17 | 河南工业大学 | 一种软件错误定位方法及装置 |
CN108540330A (zh) * | 2018-04-24 | 2018-09-14 | 南京邮电大学 | 一种异构网络环境下的基于深度学习的网络故障诊断方法 |
US20190235940A1 (en) * | 2018-01-31 | 2019-08-01 | Advanced Micro Devices, Inc. | Self-regulating power management for a neural network system |
CN110515826A (zh) * | 2019-07-03 | 2019-11-29 | 杭州电子科技大学 | 一种基于次数频谱与神经网络算法的软件缺陷定位方法 |
CN111880957A (zh) * | 2020-06-12 | 2020-11-03 | 浙江理工大学 | 一种基于随机森林模型的程序错误定位方法 |
US20200394125A1 (en) * | 2019-06-13 | 2020-12-17 | International Business Machines Corporation | Customizable test set selection using code flow trees |
US20210390011A1 (en) * | 2018-10-02 | 2021-12-16 | Tamas Cser | Software testing |
-
2021
- 2021-02-19 CN CN202110195612.0A patent/CN112965897B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760295A (zh) * | 2015-12-28 | 2016-07-13 | 天津大学 | 基于搜索算法的多缺陷定位方法 |
US20190235940A1 (en) * | 2018-01-31 | 2019-08-01 | Advanced Micro Devices, Inc. | Self-regulating power management for a neural network system |
CN108540330A (zh) * | 2018-04-24 | 2018-09-14 | 南京邮电大学 | 一种异构网络环境下的基于深度学习的网络故障诊断方法 |
CN108415848A (zh) * | 2018-05-14 | 2018-08-17 | 河南工业大学 | 一种软件错误定位方法及装置 |
US20210390011A1 (en) * | 2018-10-02 | 2021-12-16 | Tamas Cser | Software testing |
US20200394125A1 (en) * | 2019-06-13 | 2020-12-17 | International Business Machines Corporation | Customizable test set selection using code flow trees |
CN110515826A (zh) * | 2019-07-03 | 2019-11-29 | 杭州电子科技大学 | 一种基于次数频谱与神经网络算法的软件缺陷定位方法 |
CN111880957A (zh) * | 2020-06-12 | 2020-11-03 | 浙江理工大学 | 一种基于随机森林模型的程序错误定位方法 |
Non-Patent Citations (3)
Title |
---|
VENDETTA_GG: "基于最大相关最小冗余的特征选择方法MRMR", 《HTTPS://BLOG.CSDN.NET/VENDETTA_GG/ARTICLE/DETAILS/》 * |
ZHANG ZHUO,LEI YAN,TAN QINGPING,ET AL: "Deep learningbased fault localization with contextual information", 《IEICETRANSACTIONS ON INFORMATION AND SYSTEMS》 * |
舒挺等: "基于条件概率模型的缺陷定位方法", 《软件学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115510782A (zh) * | 2022-08-31 | 2022-12-23 | 芯华章科技股份有限公司 | 定位验证错误的方法、电子设备和存储介质 |
CN115510782B (zh) * | 2022-08-31 | 2024-04-26 | 芯华章科技股份有限公司 | 定位验证错误的方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112965897B (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Flagel et al. | The unreasonable effectiveness of convolutional neural networks in population genetic inference | |
Gu et al. | An improved SMOTE algorithm based on genetic algorithm for imbalanced data classification | |
US11640539B2 (en) | Techniques for visualizing the operation of neural networks using samples of training data | |
CN112364352B (zh) | 可解释性的软件漏洞检测与推荐方法及系统 | |
JP5682448B2 (ja) | 因果単語対抽出装置、因果単語対抽出方法および因果単語対抽出用プログラム | |
Wong et al. | Using an RBF neural network to locate program bugs | |
CN112965897B (zh) | 一种基于mRMR算法挑选可疑度公式的程序错误定位方法 | |
Al-Khiaty et al. | Matching UML class diagrams using a Hybridized Greedy-Genetic algorithm | |
Yuan et al. | From local to global semantic clone detection | |
Tsuchiya et al. | Interactive recovery of requirements traceability links using user feedback and configuration management logs | |
Yang et al. | A lightweight fault localization approach based on xgboost | |
Chen et al. | Let's hear both sides: On combining type-error reporting tools | |
CN117290404A (zh) | 一种主配网故障处理方法快速检索实用方法及系统 | |
CN114218580A (zh) | 一种基于多任务学习的智能合约漏洞检测方法 | |
Kher et al. | Automatic Diagnosis of Quantum Software Bug Fix Motifs. | |
CN115080982A (zh) | 一种针对漏洞检测模型的组合对抗攻击方法 | |
Zarif et al. | Improving performance of multi-label classification using ensemble of feature selection and outlier detection | |
Wei et al. | Fuzzing deep learning models against natural robustness with filter coverage | |
CN115270802B (zh) | 一种问题语句的处理方法、电子设备及存储介质 | |
Zhang et al. | Boosting the performance of inference algorithms for transcriptional regulatory networks using a phylogenetic approach | |
Wu et al. | GMBFL: Optimizing Mutation-Based Fault Localization via Graph Representation | |
Bu et al. | Probabilistic model with evolutionary optimization for cognitive diagnosis | |
Maulik | Hierarchical pattern discovery in graphs | |
Motsinger et al. | Linkage disequilibrium in genetic association studies improves the performance of grammatical evolution neural networks | |
CN118012767A (zh) | 一种面向多覆盖率用例生成与多方法融合的软件bug定位方法 |
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 |