CN111831541A - 一种基于风险轨迹的软件缺陷定位方法 - Google Patents
一种基于风险轨迹的软件缺陷定位方法 Download PDFInfo
- Publication number
- CN111831541A CN111831541A CN201910322568.8A CN201910322568A CN111831541A CN 111831541 A CN111831541 A CN 111831541A CN 201910322568 A CN201910322568 A CN 201910322568A CN 111831541 A CN111831541 A CN 111831541A
- Authority
- CN
- China
- Prior art keywords
- function
- defect
- sequence
- program
- risk
- 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/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
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)
- Debugging And Monitoring (AREA)
Abstract
本发明针对传统软件缺陷定位方法在大型软件系统中可操作性不强的问题,提出了一种基于风险轨迹的软件缺陷定位方法。首先动态获取程序的函数调用序列,然后根据测试用例在不同缺陷版本的程序上是否通过选取待测程序的目标序列和可疑序列,分析并提取出可疑函数,生成缺陷函数候选集,依次进行检查。如果候选集检查完还未发现缺陷函数,为待测程序建立复杂网络图,求其函数节点的出度值,并从小到大进行排序,去除上一步检查过的函数,再次生成缺陷函数候选集并检查,最终定位缺陷函数。本发明利用复杂网络相关度量来解决基于异常序列定位软件缺陷不足的问题,提高软件缺陷定位效率,降低测试成本。
Description
技术领域
本发明属于软件测试技术领域,特别是在回归测试技术领域,具体涉及到软件缺陷定位问题,提出了一种基于风险轨迹的软件缺陷定位方法,以满足对大规模软件系统进行缺陷定位的需求,定位方法简单有效,可操作性强。
背景技术
由于需求理解的偏差、开发过程的不合理或开发人员的经验不足等原因,均有可能产生软件缺陷。软件中的缺陷会在一定条件下引发运行错误,产生异常的结果或行为,严重的情况下甚至会造成不可挽回的巨大损失。随着软件功能的不断增强,系统的复杂性也急剧上升,使得软件存在缺陷的可能性越来越大,而且检测和修复缺陷的成本也越来越高。因此,如何高效的定位软件缺陷是保证软件质量的关键性工作。
软件缺陷定位是近年来测试领域研究的热点,但目前软件规模庞大且结构复杂,传统的软件缺陷定位方法显然已不适用于现在的软件。现有关研究成果大多是以语句为分析粒度的缺陷定位,而以函数为分析粒度进行缺陷定位的研究较少。从实际应用看,后者更重要,很多软件故障的发生并不是来自于某一个或几个语句的缺陷,而是多个语句执行的逻辑错误,比如语句执行顺序错误。函数是高度耦合的语句集,而函数间的耦合度不高,因而软件的一个缺陷较大可能存在于同一函数的多个语句上,却较小可能存在于多个函数间。因此,缺陷定位更适合以函数为单位进行研究。
对软件系统来说,不同的输入一般会产生不同的函数调用序列,对于特定的输入条件,函数的调用序列是确定的。函数缺陷很多时候会导致函数调用序列出现异常。通过运行正确的没有缺陷的程序可以获取到目标(即正确)序列,然而很多时候无法获取到一个正确的没有缺陷的软件版本,却可以获取到含有不同缺陷的软件版本,在回归测试中,通过多个版本对比,对于一个测试用例在一个版本中属于失败用例,可能在另一个版本中属于通过用例,可将失败用例中的调用序列作为可疑序列,通过用例中的调用序列作为目标序列,并将可疑序列与目标序列进行对比找出风险轨迹,进而提取可疑函数。通过对比可疑序列与目标序列提取可疑函数进行缺陷定位还不够全面,因为在函数动态调用关系图中处于叶节点的函数不会调用其他函数,导致函数调用序列发生异常的可能性很小,此类缺陷不会被有效定位。
为此,本发明提出利用复杂网络相关度量来解决上述定位不足的缺点,以期提高缺陷定位的效率。首先动态获取程序的函数调用序列,然后根据测试用例在不同缺陷版本的程序上是否通过选取待测程序的目标序列和可疑序列,分析并提取出可疑函数,生成缺陷函数候选集,依次进行检查。如果候选集检查完还未发现缺陷函数,为待测程序建立复杂网络图,求其函数节点的出度值,并从小到大进行排序,去除上一步检查过的函数,再次生成缺陷函数候选集并检查,最终定位缺陷函数。
发明内容
本发明要解决的问题是:现有软件缺陷定位技术难以满足对大规模软件系统进行缺陷定位的需求且可操作性不强,需要一种新的软件缺陷定位方法,在降低成本的情况下,提高软件缺陷定位效率。
本发明的技术方案为:一种基于风险轨迹的软件缺陷定位方法,首先在软件源代码中加入跟踪标记,获取函数动态调用序列;然后按照测试用例在不同缺陷版本的程序上是否通过为待测程序选择目标序列和可疑序列,并对比分析提取出风险序列的可疑函数,按其在待测程序的调用顺序排序,生成缺陷函数候选集,依次进行检查;如果候选集检查完还未发现缺陷函数,将待测程序的函数调用序列作为输入数据文件,建立复杂网络图,求其节点的出度值,将出度值从小到大进行排序,去除上一步检查过的函数,再次生成缺陷函数候选集,最终定位出缺陷函数。包括以下步骤:
(1)待测程序预处理。利用程序代码追踪工具pvtrace,通过定制分析函数,可以获取函数执行时的地址信息。然后将分析函数与待测程序一起编译,就可得到一个调用路径可追踪的新程序;
(2)函数调用序列的动态获取。将设计好的多个测试用例动态传入步骤(1)的调用路径可追踪的程序中,多次运行程序,就可获取函数运行时对应的地址序列文件,利用可将指令地址和可执行映像转换为文件名或函数名的工具,把地址信息转换为对应的函数名称,pvtrace可以通过分析函数执行序列得到函数间的调用关系文件,文件主要包含了程序动态执行时调用函数的顺序及次数,格式为:call function->called function[label="count calls"],其中call function表示程序执行时的主调函数,called function表示程序执行时的被调函数,label="count calls"表示主调函数调用被调函数count次;
(3)风险轨迹的分析。通过运行正确的没有缺陷的程序可以获取到目标序列(即正确序列),然而很多时候无法获取到一个正确的没有缺陷的软件版本,却可以获取到含有不同缺陷的软件版本;在不同缺陷的软件版本中,通过多个版本对比,对于一个测试用例在一个版本中属于失败用例,可能在另一个版本中属于通过用例;将失败用例的函数调用序列作为可疑序列Sdoubt,在通过用例的函数调用序列作为目标序列Scorrect,利用文本比对工具,对可疑序列和目标序列进行分析找出风险轨迹Srisk(有三种情况:第一是可疑序列与目标序列对应行调用信息有所不同,只提取不一致位置的主调函数作为可疑函数;第二是可疑序列与目标序列仅仅个数不同,依次提取出发生异常位置的上一位置主调函数和被调函数作为可疑函数;最后一种是目标序列与可疑序列并无异常,此时转到步骤(4)),然后将可疑函数frisk按其发生异常的顺序排列,作为缺陷函数候选集Trisk,其中Trisk={frisk1,frisk2,...,friskn|n≥1},然后在Trisk中依次检测,定位缺陷函数ffault;
(4)建复杂网络图。执行完步骤(3)可能还未检测到缺陷函数,原因是在函数动态调用关系图中处于叶节点的函数不会调用其他函数,导致函数调用序列异常的可能性很小,此类缺陷被忽略。如果执行完步骤(3)还未定位出缺陷函数,将待测程序的函数调用序列(即可疑序列)作为输入数据文件,以函数名作为节点,函数间调用关系作为边,为程序建复杂网络图,求其节点的出度值(OD,Out-Degree),并将OD值从小到大排列,在排序后的可疑函数候选列表中去除在步骤(3)已经检测过的函数,再次生成缺陷函数候选集T′risk,T′risk={f′risk1,f′risk2,...,f′riskn|n≥1},在T′risk中依次检查定位缺陷函数ffault。节点出度值代表该节点调用其他节点个数(即函数调用其他函数的个数),在函数动态调用关系图中处于叶节点的函数出度值为0。出度值计算方式如下:
其中,对于节点Ni,复杂网络记录了该节点指出的邻接节点Nj,j为节点Ni所指出的所有邻接节点序号,n为复杂网络中节点总数,OD(i)为节点Ni的出度值,oij为节点Ni是否指向节点Nj,如果节点Ni指向了节点Nj,oij=1,否则oij=0。
本发明的特点在于:(1)在不深究程序内部细节情况下,从整体和全局的角度探究与软件缺陷相关的信息量,有助于更全面、更科学地了解软件系统;(2)研究的目标是基于函数这一粒度而进行,随着粒度的变大,网络结构越来越简单,从而能够忽略一些局部的细节问题,可获得更具普适性的研究结果;(3)应用复杂网络相关度量解决基于异常序列定位软件缺陷不足的问题,通过实验表明,本发明能够通过较低的代价进行更高效的软件缺陷定位。
本发明通过在软件源代码中加入跟踪标记,编译定制后的代码生成可追踪程序,获取函数动态调用序列;然后按测试用例在不同缺陷版本的程序上是否通过为待测程序选择目标序列和可疑序列,并对比分析提取出风险轨迹的可疑函数,生成缺陷函数候选集,依次检查;如果候选集检查完还未发现缺陷函数,为待测软件建立复杂网络图,求其节点的出度值,将出度值从小到大依次排序,去除上一步检查过的函数,再次生成缺陷函数候选集,最终定位出缺陷函数。程序风险轨迹分析的方法,能够有效降低缺陷定位的测试成本,提高定位效率。
本发明的有益效果为:
现有的缺陷定位方法,例如:基于程序谱的方法、基于统计的方法和基于数据挖掘的方法等,都是以语句为粒度来研究缺陷检测和定位,而以函数为粒度的缺陷定位研究较少。从实际生产环境中出现的软件缺陷情况看,大多缺陷都是由一个函数内部多个语句逻辑执行错误而造成,所以用函数作为粒度来确定软件缺陷的位置更符合生产环境。
目前,基于函数粒度的缺陷定位方法大都是统计函数调用过程中的函数参数值、函数分支条件值、函数调用次数、函数之间调用关系等信息,再结合概率论或数据挖掘的方法定位缺陷。但要统计程序中函数调用过程中的全信息消耗资源多,所需测试用例数量多,并且将获取的信息应用到概率论或数据挖掘中方法较为复杂,在大型程序中可操作性不强。程序风险轨迹分析不需大量测试用例,而且只获取函数调用序列和次数,不会深入到函数参数或分支条件等,这种方法耗时短且能在一定程度上定位出函数缺陷。但函数动态调用关系图中处于叶节点的函数不会调用其他函数,导致函数调用序列异常的可能性很小,此类缺陷被忽略。通过为缺陷程序建立复杂网络图,求出每个函数节点的出度值并从小到大排序,能定位到那些被忽略的函数。为此,本发明提取异常序列后,如果还未定位到缺陷函数,再为待测程序建立复杂网络图,按其出度值从小到大依次检测,最终定位出缺陷函数,达到降低方法复杂度,提高缺陷定位效率的目的。
下面以典型实例的实验结果验证该方法的有效性和可行性:
西门子测试集是缺陷定位领域应用最广泛的测试集,包含7个子项目,本发明以函数为分析粒度进行缺陷定位研究,西门子测试集中的replace(字符串匹配替换程序)测试集有20个函数,其他测试集函数相对较少,因此replace测试集最适合做基于函数的缺陷定位研究。测试集包括5542个测试用例,30个含函数缺陷的软件版本,其中1个缺陷在宏定义上。对比实验选取同样以函数为粒度的软件缺陷定位方法Combine和Upper。
Combine和Upper这两种缺陷定位方法需要运行所有的测试用例,这样才能有足够的数据统计分析,本发明只需运行部分测试用例,找出一个测试用例即可(这个测试用例在待测版本程序上运行不通过,在另一个缺陷版本程序上运行通过)。实验证明,本发明找到符合条件的一个测试用例,平均只需执行700多个测试用例即可,不需要执行所有的测试用例,可减少资源消耗。
表1是在replace数据集上29个缺陷版本的定位效果:
表1基于风险轨迹的定位方法RT与Combine、Upper方法对比分析
由表1可以看出,本发明在减少时间消耗下,定位到缺陷函数平均需要检测的函数少于Combine和Upper方法,且稳定性好,定位效果优于Combine与Upper方法。图3可以看出,本发明只需检测20%的函数可定位出83%的缺陷函数,而Combine、Upper方法检测同样数量的函数可定位出的缺陷函数分别是69%和79%。总体来说,本发明方法定位效率优于Combine和Upper方法。
通过以上分析和实例验证表明,本发明方法定位缺陷效率优于其他方法,且时间消耗和方法复杂度低,在大规模程序上也具有可操作性,是一种有效提高测试人员调试效率、降低测试成本的软件缺陷定位方法。
附图说明
图1为本发明的流程图
图2为构造复杂网络模型
图3为本发明方法(RT)和Combine、Upper方法的缺陷定位效率的对比图
具体实施方案
以replace数据集几个含缺陷的版本程序(v1和v2、v7和v8、v8和v9)为例来说明本发明的具体实施过程。
如图1,本发明通过分析风险轨迹对软件缺陷进行定位,其具体步骤如下:
(1)对replace数据集的v1和v2、v7和v8、v8和v9版本的程序,利用代码追踪工具pvtrace,获取各版本调用路径可追踪的新程序和函数执行时的调用序列信息;
(2)将测试用例动态传入步骤(1)获取到的新程序中,每执行一个测试用例,记录其在各个版本上运行结果,为了方便统计,本发明在相邻版本中找符合条件的测试用例(要检测v1版本中的缺陷函数,在v2版本中找相应的测试用例,使其在v1版本中执行不通过,在v2版本中执行通过)。在v1和v2版本中找出一个符合要求的测试用例(t205)即可。动态传入测试用例,在程序执行时会得到程序中函数运行时对应的地址序列文件,利用将指令地址和可执行映像转换为文件名或函数名的工具,将函数地址序列转为对应的函数名称,pvtrace可以通过分析函数执行序列得到函数间的调用关系文件,主要包含了程序动态执行时调用函数的顺序及次数信息,其他版本类似处理。
如表2是v1和v2版本执行用例t205后得到的函数调用序列信息:
表2 v1和v2版本执行用例t205得到的函数调用序列信息
(3)将步骤(2)得到的v1版本的函数调用关系序列作为可疑序列,v2版本的函数调用关系序列作为目标序列,利用文本比对工具对可疑序列和目标序列进行分析找出风险轨迹,比较v1和v2版本序列信息如下:
表3 v1和v2版本执行用例t205得到的调用序列对比分析
根据风险轨迹序列,分析文件包含序列信息不一致,异常序列只提取不一致位置的主调函数,首先第一次确定缺陷函数候选集Trisk={dodash,subline,amatch,omatch,patsize},按缺陷函数候选集Trisk中的顺序依次检测,发现第一次就检测到缺陷函数,即定位成功。
对于v7和v8版本,比较其版本序列信息如下:
表4 v7和v8版本执行用例t221得到的调用序列对比分析
根据风险轨迹序列,分析文件中可疑序列与目标序列仅仅个数不同,依次提取出发生异常位置的上一位置主调函数和被调函数作为可疑函数,忽略main函数的异常序列信息,确定缺陷函数候选集Trisk={makepat,in_set_2},按缺陷函数候选集Trisk中的顺序依次检测,发现第二次就检测到缺陷函数,即定位成功。
(4)对于缺陷程序版本v8,通过步骤(3)第一次得到的缺陷函数候选集Trisk={makepat,stclose},检测完未发现缺陷函数,在函数动态调用关系图中处于叶节点的函数不会调用其他函数,导致函数调用序列异常的可能性很小,此类缺陷被忽略。因此,如图2步骤,将待测程序的可疑序列文件作为输入数据文件,为v8版本的缺陷程序建复杂网络图,求其出度值,将出度值按从小到大排列,并去除在步骤(3)已经检测过的函数,再次得到缺陷函数候选集T′risk={addstr,esc,in_set_2,get_line,patsize,in_pat_set,getpat,getsub,dodash,subline,omatch,change,getccl,makesub,amatch},按T′risk中顺序依次检测,发现第三次就检测到缺陷函数,结合步骤(3)共检测五次定位成功。
通过实例验证,可以看出基于风险轨迹的软件缺陷定位方法能够有效改善软件调试效率,降低软件测试成本。
Claims (2)
1.一种基于风险轨迹的软件缺陷定位方法,其特征在于包括以下步骤:
(1)待测程序预处理:利用程序代码追踪工具pvtrace,通过定制分析函数,可以获取函数执行时的地址信息,然后将分析函数与待测程序一起编译,就可得到一个调用路径可追踪的新程序;
(2)函数调用序列的动态获取:将设计好的多个测试用例动态传入步骤(1)的调用路径可追踪的程序中,多次运行程序,就可获取函数运行时对应的地址序列文件,利用可将指令地址和可执行映像转换为文件名或函数名的工具,把地址信息转换为对应的函数名称,pvtrace可以通过分析函数执行序列得到函数间的调用关系文件,文件主要包含了程序动态执行时调用函数的顺序及次数,格式为:call function->called function[label="count calls"],其中call function表示程序执行时的主调函数,called function表示程序执行时的被调函数,label="count calls"表示主调函数调用被调函数count次;
(3)风险轨迹的分析:通过运行正确的没有缺陷的程序可以获取到目标序列(即正确序列),然而很多时候无法获取到一个正确的没有缺陷的软件版本,却可以获取到含有不同缺陷的软件版本;在不同缺陷的软件版本中,通过多个版本对比,对于一个测试用例在一个版本中属于失败用例,可能在另一个版本中属于通过用例;将失败用例的函数调用序列作为可疑序列Sdoubt,在通过用例的函数调用序列作为目标序列Scorrect,利用文本比对工具,对可疑序列和目标序列进行分析找出风险轨迹Srisk(有三种情况:一种是可疑序列与目标序列对应行调用信息有所不同,只提取不一致位置的主调函数作为可疑函数;第二是可疑序列与目标序列仅仅个数不同,依次提取出发生异常位置的上一位置主调函数和被调函数作为可疑函数;最后一种是目标序列与可疑序列并无异常,此时转到步骤(4)),然后将可疑函数frisk按其发生异常的顺序排列,作为缺陷函数候选集Trisk,其中Trisk={frisk1,frisk2,...,friskn|n≥1},然后在Trisk中依次检测,定位缺陷函数ffault;
(4)建复杂网络图:执行完步骤(3)可能还未检测到缺陷函数,原因是在函数动态调用关系图中处于叶节点的函数不会调用其他函数,导致函数调用序列异常的可能性很小,此类缺陷被忽略;如果执行完步骤(3)还未定位出缺陷函数,将待测程序的函数调用序列(即可疑序列)作为输入数据文件,以函数名作为节点,函数间调用关系作为边,为程序建复杂网络图,求其函数的出度值(OD,Out-Degree),并将OD值从小到大排列,在排序后的函数候选列表中去除在步骤(3)已经检测过的函数,再次生成缺陷函数候选集T′risk,T′risk={f′risk1,f′risk2,...,f′riskn|n≥1},在T′risk中依次检测定位缺陷函数ffault,节点出度值代表该节点调用其他节点个数(即该函数调用其他函数的个数),在函数动态调用关系图中处于叶节点的函数出度值为0,出度值计算方式如下:
其中,对于节点Ni,复杂网络记录了该节点指出的邻接节点Nj,j为节点Ni所指出的所有邻接节点序号,n为复杂网络中节点总数,OD(i)为节点Ni的出度值,oij为节点Ni是否指向节点Nj,如果节点Ni指向了节点Nj,oij=1,否则oij=0。
2.根据权利要求1所述的一种基于风险轨迹的软件缺陷定位方法,其特征在于:该方法可以应用于软件程序函数粒度级别的缺陷定位,以提高软件缺陷定位的效率,降低软件测试成本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910322568.8A CN111831541B (zh) | 2019-04-22 | 2019-04-22 | 一种基于风险轨迹的软件缺陷定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910322568.8A CN111831541B (zh) | 2019-04-22 | 2019-04-22 | 一种基于风险轨迹的软件缺陷定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831541A true CN111831541A (zh) | 2020-10-27 |
CN111831541B CN111831541B (zh) | 2022-10-28 |
Family
ID=72912747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910322568.8A Active CN111831541B (zh) | 2019-04-22 | 2019-04-22 | 一种基于风险轨迹的软件缺陷定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831541B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706749A (zh) * | 2009-11-18 | 2010-05-12 | 电子科技大学 | 基于软件安全缺陷检测的综合处理方法及其功能模块构架 |
US20140149435A1 (en) * | 2012-11-27 | 2014-05-29 | Purdue Research Foundation | Bug localization using version history |
CN104239219A (zh) * | 2014-10-21 | 2014-12-24 | 中国科学院软件研究所 | 一种基于覆盖的软件缺陷定位技术的在线评测与实验平台及方法 |
CN104536895A (zh) * | 2015-01-12 | 2015-04-22 | 牟永敏 | 一种面向Java函数调用路径的测试过程跟踪方法及系统 |
CN104794059A (zh) * | 2015-05-08 | 2015-07-22 | 北京理工大学 | 一种基于函数调用记录的缺陷定位方法及装置 |
US20170031663A1 (en) * | 2014-04-15 | 2017-02-02 | Siemens Aktiengesellschaft | Method and Tool for Engineering Software Architectures with Its Various Software Artifacts of Complex Cyber-Physical Systems of Different Technical Domains |
CN107515822A (zh) * | 2017-08-16 | 2017-12-26 | 南京大学 | 基于多目标优化的软件缺陷定位方法 |
CN108345544A (zh) * | 2018-03-27 | 2018-07-31 | 北京航空航天大学 | 一种基于复杂网络的软件缺陷分布影响因素分析方法 |
-
2019
- 2019-04-22 CN CN201910322568.8A patent/CN111831541B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706749A (zh) * | 2009-11-18 | 2010-05-12 | 电子科技大学 | 基于软件安全缺陷检测的综合处理方法及其功能模块构架 |
US20140149435A1 (en) * | 2012-11-27 | 2014-05-29 | Purdue Research Foundation | Bug localization using version history |
US20170031663A1 (en) * | 2014-04-15 | 2017-02-02 | Siemens Aktiengesellschaft | Method and Tool for Engineering Software Architectures with Its Various Software Artifacts of Complex Cyber-Physical Systems of Different Technical Domains |
CN104239219A (zh) * | 2014-10-21 | 2014-12-24 | 中国科学院软件研究所 | 一种基于覆盖的软件缺陷定位技术的在线评测与实验平台及方法 |
CN104536895A (zh) * | 2015-01-12 | 2015-04-22 | 牟永敏 | 一种面向Java函数调用路径的测试过程跟踪方法及系统 |
CN104794059A (zh) * | 2015-05-08 | 2015-07-22 | 北京理工大学 | 一种基于函数调用记录的缺陷定位方法及装置 |
CN107515822A (zh) * | 2017-08-16 | 2017-12-26 | 南京大学 | 基于多目标优化的软件缺陷定位方法 |
CN108345544A (zh) * | 2018-03-27 | 2018-07-31 | 北京航空航天大学 | 一种基于复杂网络的软件缺陷分布影响因素分析方法 |
Non-Patent Citations (6)
Title |
---|
HUANSONG WANG: "MaVis: Feature-Based Defects Visualization in Software Testing", 《2012 SPRING CONGRESS ON ENGINEERING AND TECHNOLOGY》 * |
余晓菲等: "基于改良程序谱的软件故障定位方法", 《计算机工程与科学》 * |
俞舜浩: "基于执行轨迹谱分段检测的软件故障定位方法", 《计算机工程与应用》 * |
宁国秀等: "基于函数调用路径的数据流分析错误定位", 《计算机仿真》 * |
崔展齐等: "基于函数调用序列模式挖掘的程序缺陷检测", 《计算机科学》 * |
王莹等: "基于软件节点重要性的集成测试序列生成方法", 《计算机研究与发展》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111831541B (zh) | 2022-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Herzig et al. | Empirically detecting false test alarms using association rules | |
Tantithamthavorn et al. | The impact of mislabelling on the performance and interpretation of defect prediction models | |
US20090265693A1 (en) | Method and system for test run prioritization for software code testing in automated test execution | |
Levin et al. | The co-evolution of test maintenance and code maintenance through the lens of fine-grained semantic changes | |
CN110515826B (zh) | 一种基于次数频谱与神经网络算法的软件缺陷定位方法 | |
Chang et al. | Change-based test script maintenance for android apps | |
CN107678971B (zh) | 代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法 | |
Pan et al. | Continuous test suite failure prediction | |
CN111782532B (zh) | 一种基于网络异常节点分析的软件故障定位方法及系统 | |
Caglayan et al. | Usage of multiple prediction models based on defect categories | |
CN103136103A (zh) | 一种面向错误定位需求的测试用例约简方法 | |
CN110990282B (zh) | 一种自动化单元测试方法 | |
Islam et al. | Comparing bug replication in regular and micro code clones | |
Ye et al. | Knowledge discovery and knowledge transfer in board-level functional fault diagnosis | |
Wang et al. | Examining the effects of developer familiarity on bug fixing | |
CN111831541B (zh) | 一种基于风险轨迹的软件缺陷定位方法 | |
Petrulio et al. | SZZ in the time of pull requests | |
CN111176995B (zh) | 一种基于大数据测试用例的测试方法和测试系统 | |
WO2017201853A1 (zh) | 基于切片模型的程序回归错误定位方法 | |
CN109165155B (zh) | 一种基于聚类分析的软件缺陷修复模板提取方法 | |
Fujiwara et al. | Assessing refactoring instances and the maintainability benefits of them from version archives | |
CN110309059A (zh) | Ui界面测试方法、系统、计算机设备和存储介质 | |
Sejfia et al. | Toward Improved Deep Learning-based Vulnerability Detection | |
Atzenhofer et al. | Automatically adding missing libraries to java projects to foster better results from static analysis | |
CN113641573A (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 |