CN106951372A - 一种基于变量切片和关联规则的软件错误定位方法 - Google Patents

一种基于变量切片和关联规则的软件错误定位方法 Download PDF

Info

Publication number
CN106951372A
CN106951372A CN201710216886.7A CN201710216886A CN106951372A CN 106951372 A CN106951372 A CN 106951372A CN 201710216886 A CN201710216886 A CN 201710216886A CN 106951372 A CN106951372 A CN 106951372A
Authority
CN
China
Prior art keywords
varnum
support
sentence
variable
relatelist
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
CN201710216886.7A
Other languages
English (en)
Other versions
CN106951372B (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.)
Xian University of Posts and Telecommunications
Original Assignee
Xian University of Posts and Telecommunications
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 Xian University of Posts and Telecommunications filed Critical Xian University of Posts and Telecommunications
Priority to CN201710216886.7A priority Critical patent/CN106951372B/zh
Publication of CN106951372A publication Critical patent/CN106951372A/zh
Application granted granted Critical
Publication of CN106951372B publication Critical patent/CN106951372B/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/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

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)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明针对软件测试中错误定位效率低的问题,公开了一种基于变量切片和关联规则的软件错误定位方法。本方法首先针对Java程序语句进行变量切片,将所有变量切片行号信息作为事务数据库;然后利用关联分析得到关联规则集合,根据置信度和支持度由高到低的排列顺序,生成检查语句优先级次序;最后依据语句优先级次序越靠前越优先被检查的原则定位错误出现的具体位置。本发明结合变量切片技术和关联规则算法进行软件错误定位,提高软件错误定位的效率,降低软件测试成本。

Description

一种基于变量切片和关联规则的软件错误定位方法
技术领域
本发明属于软件测试技术领域,具体涉及到软件错误定位问题,提供了一种基于变量切片和关联规则的软件错误定位方法,主要解决错误定位中效率低的问题,达到提高错误定位效率、降低测试成本的目的。
背景技术
随着软件在各行各业应用的不断普及与深入,软件质量逐渐成为行业竞争的核心力量之一。如何确保软件质量成为了开发人员和测试人员关注的焦点,而软件错误定位是调试过程中最昂贵、最耗时的活动之一,也是保证软件质量、提高调试效率、降低测试成本的关键性工作。
目前,软件错误定位已经成为国内外研究的一个热点。错误定位旨在找到隐含在程序源代码中的错误指令、过程或数据定义,其粒度包含程序语句、基本块、分支、函数或类。错误定位技术根据“是否需要运行软件”的准则分为两大类:基于测试的错误定位技术和基于静态分析的错误定位技术。前者需要设计测试用例,然后运行软件程序,最后根据软件程序的动态执行信息和输出结果进行错误定位,然而动态分析方法在收集执行信息时会产生较大的代价。后者不用运行软件,而是依据程序语言的语法和语义,静态分析软件结构和程序实体之间的依赖关系,以发现不符合系统约束的程序实体,从而进行错误定位。
软件错误定位方法主要通过缩小错误搜索范围来提高效率。程序切片技术通过去除与程序错误不相关的语句来缩小错误搜索范围,但是计算动态程序切片时,需要进行测试用例设计,切片后的程序为语句集合,集合内元素无先后次序,测试人员需要检查切片中所有语句以定位错误,导致时间资源消耗较大,错误定位效率较低。基于覆盖信息的错误定位方法以程序中语句或基本块为研究对象,统计不同执行轨迹的覆盖信息进行怀疑度计算,经典的Tarantula、Ochiai和Naish等方法通过计算语句怀疑度得出检查语句的先后次序以定位错误,但是这些方法对执行轨迹进行了高度简化并忽略了程序内部固有的依赖关系,计算量大,时间代价较高,导致错误定位效率较低。
为此,本发明提出变量切片和关联规则相结合的软件错误定位方法以期提高软件错误定位的效率。首先在系统依赖图的基础上进行变量切片,通过分析程序执行过程,可以发现语句之间存在关联,关联分析技术能够从大量程序执行信息中获取关联语句,以此确定语句检查优先级次序,定位错误出现的位置。
发明内容
本发明要解决的问题是:现有软件错误定位方法时间资源消耗大、效率较低,难以满足降低测试成本的需求,需要一种新的软件错误定位方法,在减少计算量、降低时间资源消耗的情况下,有效提高软件错误定位的效率。
本发明的技术方案为:采用一种缩小软件调试范围的变量切片技术和分析程序语句相关性的关联规则算法相结合的针对Java程序的错误定位方法。首先针对Java程序语句进行变量切片,将所有变量切片行号信息作为事务数据库;然后利用关联分析得到关联规则集合,根据置信度和支持度由高到低的排列顺序,生成检查语句优先级次序;最后依据语句优先级次序越靠前越优先被检查的原则定位错误出现的位置。
本发明的特征在于包括以下步骤:
(1)对于一个包含错误且可执行代码总行数为n的Java程序Pfault进行预处理,得到系统依赖图;在系统依赖图上针对Pfault中某一条包含m个变量的语句进行变量切片,得到程序切片数据VarSlice.dot;VarSlice.dot文件由集合T表示为T={fname,label,fillcolor,Si→Sj},其中fname为Pfault中执行变量切片语句所属方法的名称;label为变量切片语句,label="VarNumi:var=value",其中VarNumi(1≤i≤n)为切片行号,var为变量名,value为变量值;fillcolor表示语句是否包含在变量切片结果内,fillcolor={yellow,gray},yellow表示该语句属于变量切片执行结果,gray表示该语句不属于变量切片执行结果;Si→Sj为语句Si和Sj的依赖指向关系;执行一次变量切片可以获得一个.dot文件,将每个.dot文件中fillcolor取yellow值的label所对应的变量切片行号集合VarNum作为.txt文件的一条记录,其中VarNum={VarNum1,VarNum2...VarNumi,...VarNumn};从所有变量切片数据.dot文件中依次提取VarNum,构成变量切片行号信息VarSlice.txt,该信息的记录数为执行变量切片的次数;
(2)将VarSlice.txt作为事务数据库D,通过扫描D计算每个变量切片行号VarNumi的频数SliceNum1,每个VarNumi都是候选1项集的集合C1的成员;假设最小支持度计数为Min_Support,可以确定频繁1项集的集合L1,它由满足SliceNum1≥Min_Support的候选1项集组成;使用连接操作L1×L1产生候选2项集的集合C2,它由个2项集组成;扫描D中事务,累计C2中每个候选项集的支持计数SliceNum2,然后确定频繁2项集的集合L2,它由C2中满足SliceNum2≥Min_Support的候选2项集组成;令C3=L2×L2,从C3中删除具有非频繁子集的候选项集,再累计C3中每个候选项集的支持计数SliceNum3,扫描D中事务确定频繁3项集的集合L3,L3由C3中满足SliceNum3≥Min_Support的候选3项集组成;以此类推,利用产生候选集的连接步Li×Li和删除具有非频繁子集的候选集的剪枝步逐层搜索,直至Ci=φ终止,即得到了所有的频繁项集FreVarSlice={C1,C2,C3,...Ci-1};
(3)对于每个频繁项集Cj(1≤j≤i-1),可以得到2j-2个非空真子集s,假设最小置信度为Min_Confidence,支持度计数为Support_Count,若满足则获取到语句之间蕴含的关联规则RelateListi,表示为以及关联规则数目RelateListNum;
(4)将所有关联规则TotalRelateList={RelateList1,RelateList2,...RelateListi,...RelateListNum}按照置信度由高到低的次序重新排列,可以得到排序关联规则SeqRelateList={RelateList1',RelateList2',...RelateL isti',...RelateListNum'},其中第i条关联规则RelateListi'表示为
(5)对步骤(4)的排序关联规则SeqRelateList进行分类,置信度相同的划分为同一类,形成集合{Confidence1=VarNum1,VarNum11,...VarNum1i;Confidence2=Va rNum2,VarNum22,...VarNum2i;...Confidencek=VarNumk,VarNumkk,...VarNumki},其中根据置信度的排列顺序生成检查语句优先级次序InSequence={VarNum1,VarNum11,...VarNum1i;VarNum2,VarNum22,...VarNum2i;...VarNumk,VarNumkk,...VarNumki};
(6)对于未在关联规则内的语句按照支持度由高到低进行排列并分类,支持度相同的划分为同一类,形成集合{Support(k+1)=VarNum(k+1),VarNum(k+1)(k+1),...VarNum(k+1)j;Support(k+2)=VarNum(k+2),VarNum(k+2)(k+2),...VarNum(k+2)j;...Support(k+m)=VarNum(k+m),VarNum(k+m)(k+m),...VarNum(k+m)j},其中Support(k+m)∈SliceNum1;根据支持度的排列顺序生成关联规则外的检查语句优先级次序OutSequence={VarNum(k+1),VarNum(k+1)(k+1),...VarNum(k+1)j;VarNum(k+2),VarNu m(k+2)(k+2),...VarNum(k+2)j;...VarNum(k+m),VarNum(k+m)(k+m),...VarNum(k+m)j};
(7)依据步骤(5)和步骤(6)得到总的检查语句优先级次序PrioritySequence=InSequence∪OutSequence,依据语句优先级次序越靠前越优先被检查的原则,可以定位到程序Pfault中错误出现的具体位置。
本发明的特点在于:(1)采用基于程序内部固有的数据依赖和控制依赖关系、缩小软件调试范围的变量切片技术;(2)将变量切片技术结合关联规则算法得到语句之间蕴含的关联规则;(3)通过排序策略生成排序关联规则和检查语句优先级次序,从而进行错误定位。
本发明的有益效果为:
目前,解决软件错误定位问题的方法很多,传统的软件错误定位方法主要通过缩小错误搜索范围来提高效率。从不同角度出发且被广泛应用的错误定位技术主要包括基于距离度量的Delta调试技术、并集模型、交集模型、近邻模型,基于排序度量的怀疑度计算Tarantula方法、改进的径向基函数神经网络Wong方法,基于程序切片的静态切片、动态切片技术,基于概率度量的统计分析、SOBER方法以及基于模型度量的诊断方法等。
其中,程序切片技术的理论已经相当成熟,主要有静态切片和动态切片,前向切片和后向切片等,由于程序切片与程序有关,在软件的编码和调试阶段,当出现错误时通过程序切片可以快速对程序中的错误进行定位,这样引起错误的代码就被限定在这个程序切片里,从而缩小了软件调试范围,协助测试人员更加有效地定位程序错误。在实用的程序切片工具方面,主要包括关注C程序的Wisconsin、ChopShop、Ghinsu、Unravel,适用于Ada语言的PSS/Ada,支持Oberon-2语言的The Oberon Slicing Tool(OST),应用于OOPQL语言环境的Jato以及针对Java程序的动态切片工具DSFL、Spyder等,但是这些工具中开源的较少,尤其针对Java语言的静态切片工具就更为少见。
基于覆盖信息的错误定位方法以程序中语句或基本块为研究对象,统计不同执行轨迹的覆盖信息,进行怀疑度计算。Tarantula方法、Ochiai方法、Wong方法、Dstar方法和Naish等方法通过计算语句怀疑度得出检查语句的先后次序以定位错误。
程序切片技术能够在一定程度上缩小检查语句的范围,减少检查不相关语句带来的时间资源消耗,但切片后的语句集合里并不包括优先级次序,故测试人员需要按照切片中语句的自然顺序逐个检查,在效率上优势并不明显。而关联规则能够从大量程序执行信息中获取语句错误的相关信息,反映出执行轨迹中语句和执行结果的关系。为此,本发明将程序切片技术和关联规则算法相结合,在得到变量切片后进行关联分析,得到检查语句优先级次序以定位错误,达到提高错误定位效率的目的。
下面以典型实例的实验结果证实该方法的有效性和可行性:
测试程序选用5个轻量级Java单错误版本程序作为基准,其基本信息如表1所示,其中第1—3列分别为程序名称、描述和可执行代码行数(不包含注释行)。
表1测试程序描述
对比实验选取经典的Tarantula、Ochiai、Jarcard、Dstar、Wong和Naish2共6种计算怀疑度方法(计算公式如(1)—(6)所列)作为评测数据集,错误类型为植入错误。
通过执行变量切片并进行关联分析,获得的实验结果如表2、表3、图5、图6所示。
其中,表2的第2—9列分别表示加载Soot类所消耗的时间、进行指向分析需要的时间、程序依赖图中方法的数目、分析方法所消耗的时间、系统依赖图中结点的数目、控制依赖数目、数据依赖数目以及成功构造系统依赖图所需要的时间。
表2执行变量切片过程的时间复杂度
由表2和图5可以看出程序规模越大、结构越复杂,在执行变量切片的过程中所消耗的时间资源越多。
表3的第2—5列分别为执行变量切片数目、由关联规则算法得到的关联规则数目和执行时间以及在关联规则算法中设置的最小支持度参数。
表3执行关联分析结果
由表3可以看出,在采用轻量级Java程序进行实验的过程中,变量切片数随着程序规模的增加而增加。关联规则数目反映的是语句之间的联系程度,数目越多表示语句之间联系越紧密。
本发明采用检查到错误语句的累积检查语句数与可执行代码数的比值这一错误定位代价指标对错误定位的效率进行评价,比值越小表示错误定位的效果越好。由于检查语句中可能存在多条语句检查次序相同的情况,故本发明采用对均值情况进行对比分析。最好的情况是在同一优先级的前提下,检查第一条语句就定位到错误,最坏的情况是在检查到最后一条语句才定位到错误,均值的情况是两者的平均值。由图6可以看出,在均值情况下,本发明方法的错误定位效率优势明显,仅需平均检查10%左右的代码即可定位到错误位置,比基于覆盖信息的Tarantula、Ochiai、Jarcard、Dstar、Wong和Naish2方法的错误定位效率高且稳定性良好。
通过以上分析和实例验证,本发明方法错误定位效率优于其他方法,原因在于本发明方法基于变量切片,将程序中语句的执行轨迹和语句之间潜在的关联关系联系起来,生成检查语句优先级次序,从而定位出错误的位置,该方法稳定性良好,是一种有效改善调试效率、降低测试成本的软件错误定位方法。
附图说明
图1是本发明方法的流程图
图2是验证方法的一个Java实例程序
图3是Java实例程序从.dot文件提取的变量切片信息VarSlice.txt
图4是由Java实例程序的VarSlice.txt得到的频繁项集FreVarSlice及支持度计数
图5是5个典型Java程序执行变量切片获得的数据信息和时间资源消耗情况的对比图
图6是本发明方法和基于怀疑度公式方法的错误定位效率的对比图
具体实施方式
以图2的实例程序为例来说明本发明的具体实施过程。
如图1,本发明将变量切片技术和关联分析算法相结合进行错误定位,其具体步骤如下:
(1)对图2所示程序源代码.java进行编译,将其转换为字节码.class形式后,利用Soot中提供的Spark流和指向分析方法,进行控制流和数据流分析,分析方法个数以及结点数目;结合控制依赖图和数据依赖图构建系统依赖图,在该依赖图上进行变量切片。
执行变量切片获取的数据信息为:
test.slicer.classic.Compare Load soot classes in 13.6s
Finish points-to analysis in 1.1s
[PDG]0:<test.slicer.classic.Compare:void main(java.lang.String[])>--1.8s,23nodes
[PDG]1:<test.slicer.classic.Compare:int sub(int,int,int)>--0.0s,8nodes
[SDG]2methods analyzed in 1.8s
[Dependence count]nodes 31,ctrl 29,stack 23
[SDG]SDG successfully constructed in 9.5s
对s6:x=x/z;执行变量切片:
对变量x执行切片:
Slicing result:
#0EN Compare.main
6:x=x/z
2:x=5
对变量z执行切片:
Slicing result:
#0EN Compare.main
6:x=x/z
4:z=5
从所有变量切片数据.dot文件中依次提取VarNum,构成变量切片行号信息VarSlice.txt,针对实例程序,得到执行变量切片的次数为25,如图3所示;
(2)将VarSlice.txt作为事务数据库D,利用产生候选集的连接步Li×Li和删除非频繁集候选的剪枝步逐层搜索,直至频繁项集C6=φ终止,得到了所有的频繁项集FreVarSlice={C1,C2,C3,C4,C5},如图4所示;
(3)在步骤(2)的基础上进行关联分析,获取语句之间蕴含的关联规则TotalRelateList,并得到关联语句之间的置信度;实例程序得到138条关联规则;
(4)对于实例程序,按照置信度由高到低的排序策略得到排序关联规则SeqRelateList;
(5)对步骤(4)的排序关联规则SeqRelateList进行分类,置信度相同的划分为同一类,形成集合{1.00=5,2,3,4,10;0.89=6;},生成检查语句优先级次序InSequence为{5,2,3,4,10,6},故
检查的第1条语句是:第5行,第2行,第3行,第4行,第10行;
检查的第6条语句是:第6行;
其中,最小支持度根据程序的规模、结构、复杂性设定为7。
(6)对于未在关联规则内的语句按照支持度由高到低进行排列得到8:5;7:4;9:4;11:4;12:4;15:3;13:1;16:1;17:1;将支持度相同的划分为同一类,形成集合{5=8;4=7,9,11,12;3=15;1=13,16,17;},生成关联规则外的检查语句优先级次序OutSequence为{8,7,9,11,12,15,13,16,17},故
检查的第7条语句是:第8行;
检查的第8条语句是:第7行,第9行,第11行,第12行;
检查的第12条语句是:第15行;
检查的第13条语句是:第13行,第16行,第17行。
(7)依据步骤(5)和步骤(6)得到总的检查语句优先级次序PrioritySequence=InSequence∪OutSequence,即PrioritySequence={5,2,3,4,10,6,8,7,9,11,12,15,13,16,17},依据语句优先级次序越靠前越优先被检查的原则,可以定位到错误出现的具体位置(如表4所示)以及错误定位代价结果:6/17=35.29%。
表4错误定位结果
本发明涉及的基本思想可以完整体现在表5的实例程序中,其中基于覆盖信息的语句检查次序是在构造8个测试用例(t1-t8)的基础上,通过比较怀疑度Tarantula方法和基于动态切片和关联分析的错误定位方法FLAR得到的,*表示该条语句被覆盖,第一列行号中si表示第i条语句,s6为错误语句,T/F表示执行测试用例结果为成功(T)/失败(F)。本发明方法在执行变量切片的基础上进行关联分析,定位到错误需要检查语句数i—j中,i表示最好情况下只需检查i条语句即可定位到错误,j表示最坏情况下需要检查j条语句才能定位到错误,均值为(i+j)/2,表示平均需要检查的语句数目。错误定位代价为平均需要检查的语句数目与可执行代码总行数的比值,值越小表示错误定位的效率越高。
表5实例程序
表6为本发明方法与基于怀疑度公式的检查语句数和错误定位代价对比,可以看出在均值情况下,本发明方法与Ochiai方法、Dstar方法错误定位效率相当,优于Tarantula方法、FLAR方法、Jarcard方法、Wong方法和Naish2方法。
表6方法对比
通过实例验证,可以看出变量切片和关联规则相结合的软件错误定位方法能够有效改善软件调试效率,降低软件测试成本。

Claims (2)

1.一种基于变量切片和关联规则的软件错误定位方法,其特征在于包括以下步骤:
(1)对于一个包含错误且可执行代码总行数为n的Java程序Pfault进行预处理,得到系统依赖图;在系统依赖图上针对Pfault中某一条包含m个变量的语句进行变量切片,得到程序切片数据VarSlice.dot;VarSlice.dot文件由集合T表示为T={fname,label,fillcolor,Si→Sj},其中fname为Pfault中执行变量切片语句所属方法的名称;label为变量切片语句,label="VarNumi:var=value",其中VarNumi(1≤i≤n)为切片行号,var为变量名,value为变量值;fillcolor表示语句是否包含在变量切片结果内,fillcolor={yellow,gray},yellow表示该语句属于变量切片执行结果,gray表示该语句不属于变量切片执行结果;Si→Sj为语句Si和Sj的依赖指向关系;执行一次变量切片可以获得一个.dot文件,将每个.dot文件中fillcolor取yellow值的label所对应的变量切片行号集合VarNum作为.txt文件的一条记录,其中VarNum={VarNum1,VarNum2...VarNumi,...VarNumn};从所有变量切片数据.dot文件中依次提取VarNum,构成变量切片行号信息VarSlice.txt,该信息的记录数为执行变量切片的次数;
(2)将VarSlice.txt作为事务数据库D,通过扫描D计算每个变量切片行号VarNumi的频数SliceNum1,每个VarNumi都是候选1项集的集合C1的成员;假设最小支持度计数为Min_Support,可以确定频繁1项集的集合L1,它由满足SliceNum1≥Min_Support的候选1项集组成;使用连接操作L1×L1产生候选2项集的集合C2,它由个2项集组成;扫描D中事务,累计C2中每个候选项集的支持计数SliceNum2,然后确定频繁2项集的集合L2,它由C2中满足SliceNum2≥Min_Support的候选2项集组成;令C3=L2×L2,从C3中删除具有非频繁子集的候选项集,再累计C3中每个候选项集的支持计数SliceNum3,扫描D中事务确定频繁3项集的集合L3,L3由C3中满足SliceNum3≥Min_Support的候选3项集组成;以此类推,利用产生候选集的连接步Li×Li和删除具有非频繁子集的候选集的剪枝步逐层搜索,直至Ci=φ终止,即得到了所有的频繁项集FreVarSlice={C1,C2,C3,...Ci-1};
(3)对于每个频繁项集Cj(1≤j≤i-1),可以得到2j-2个非空真子集s,假设最小置信度为Min_Confidence,支持度计数为Support_Count,若满足则获取到语句之间蕴含的关联规则RelateListi,表示为以及关联规则数目RelateListNum;
(4)将所有关联规则TotalRelateList={RelateList1,RelateList2,...RelateListi,...RelateListNum}按照置信度由高到低的次序重新排列,可以得到排序关联规则SeqRelateList={RelateList1',RelateList2',...RelateListi',...RelateListNum'},其中第i条关联规则RelateListi'表示为
(5)对步骤(4)的排序关联规则SeqRelateList进行分类,置信度相同的划分为同一类,形成集合{Confidence1=VarNum1,VarNum11,...VarNum1i;Confidence2=VarNum2,VarNum22,...VarNum2i;...Confidencek=VarNumk,VarNumkk,...VarNumki},其中根据置信度的排列顺序生成检查语句优先级次序InSequence={VarNum1,VarNum11,...VarNum1i;VarNum2,VarNum22,...VarNum2i;...VarNumk,VarNumkk,...VarNumki};
(6)对于未在关联规则内的语句按照支持度由高到低进行排列并分类,支持度相同的划分为同一类,形成集合{Support(k+1)=VarNum(k+1),VarNum(k+1)(k+1),...VarNum(k+1)j;Support(k+2)=VarNum(k+2),VarNum(k+2)(k+2),...VarNum(k+2)j;…Support(k+m)=VarNum(k+m),VarNum(k+m)(k+m),…VarNum(k+m)j},其中Support(k+m)∈SliceNum1;根据支持度的排列顺序生成关联规则外的检查语句优先级次序OutSequence={VarNum(k+1),VarNum(k+1)(k+1),...VarNum(k+1)j;VarNum(k+2),VarNum(k+2)(k+2),...VarNum(k+2)j;...VarNum(k+m),VarNum(k+m)(k+m),...VarNum(k+m)j};
(7)依据步骤(5)和步骤(6)得到总的检查语句优先级次序PrioritySequence=InSequence∪OutSequence,依据语句优先级次序越靠前越优先被检查的原则,可以定位到程序Pfault中错误出现的具体位置。
2.根据权利要求1所述的一种基于变量切片和关联规则的软件错误定位方法,其特征在于:该方法可以应用于Java程序错误定位,以提高软件错误定位的效率,降低软件测试成本。
CN201710216886.7A 2017-04-05 2017-04-05 一种基于变量切片和关联规则的软件错误定位方法 Active CN106951372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710216886.7A CN106951372B (zh) 2017-04-05 2017-04-05 一种基于变量切片和关联规则的软件错误定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710216886.7A CN106951372B (zh) 2017-04-05 2017-04-05 一种基于变量切片和关联规则的软件错误定位方法

Publications (2)

Publication Number Publication Date
CN106951372A true CN106951372A (zh) 2017-07-14
CN106951372B CN106951372B (zh) 2020-06-16

Family

ID=59474644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710216886.7A Active CN106951372B (zh) 2017-04-05 2017-04-05 一种基于变量切片和关联规则的软件错误定位方法

Country Status (1)

Country Link
CN (1) CN106951372B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766076A (zh) * 2017-11-07 2018-03-06 西安邮电大学 一种概率选择的软件模块聚类方法
CN109376080A (zh) * 2018-09-27 2019-02-22 北京大学 时间适配的自动化缺陷定位方法和装置
CN109977021A (zh) * 2019-04-02 2019-07-05 济南浪潮高新科技投资发展有限公司 一种基于关联规则分析的软件质量管理方法及系统
CN111104267A (zh) * 2018-10-26 2020-05-05 长鑫存储技术有限公司 存储器的调试处理方法及其调试处理系统
CN111563044A (zh) * 2020-05-11 2020-08-21 西安邮电大学 一种基于程序变异的程序谱错误定位方法
CN114661503A (zh) * 2022-01-26 2022-06-24 天津大学 基于程序切片的软件关联配置错误诊断方法及装置
CN114741302A (zh) * 2022-04-19 2022-07-12 杭州金衡和信息科技有限公司 一种基于变量分离的软件bug定位方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080154710A1 (en) * 2006-12-21 2008-06-26 Pradeep Varma Minimal Effort Prediction and Minimal Tooling Benefit Assessment for Semi-Automatic Code Porting

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080154710A1 (en) * 2006-12-21 2008-06-26 Pradeep Varma Minimal Effort Prediction and Minimal Tooling Benefit Assessment for Semi-Automatic Code Porting

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
曹鹤玲 等: "基于动态切片和关联分析的错误定位方法", 《计算机学报》 *
钱巨 等: "Slithice:一个基于系统依赖图的Java 程序切片工具", 《计算机工程与应用》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766076B (zh) * 2017-11-07 2021-02-09 西安邮电大学 一种概率选择的软件模块聚类方法
CN107766076A (zh) * 2017-11-07 2018-03-06 西安邮电大学 一种概率选择的软件模块聚类方法
CN109376080A (zh) * 2018-09-27 2019-02-22 北京大学 时间适配的自动化缺陷定位方法和装置
CN109376080B (zh) * 2018-09-27 2021-10-01 北京大学 时间适配的自动化缺陷定位方法和装置
CN111104267A (zh) * 2018-10-26 2020-05-05 长鑫存储技术有限公司 存储器的调试处理方法及其调试处理系统
CN111104267B (zh) * 2018-10-26 2022-05-13 长鑫存储技术有限公司 存储器的调试处理方法及其调试处理系统
CN109977021A (zh) * 2019-04-02 2019-07-05 济南浪潮高新科技投资发展有限公司 一种基于关联规则分析的软件质量管理方法及系统
CN111563044A (zh) * 2020-05-11 2020-08-21 西安邮电大学 一种基于程序变异的程序谱错误定位方法
CN111563044B (zh) * 2020-05-11 2022-10-25 西安邮电大学 一种基于程序变异的程序谱错误定位方法
CN114661503A (zh) * 2022-01-26 2022-06-24 天津大学 基于程序切片的软件关联配置错误诊断方法及装置
CN114661503B (zh) * 2022-01-26 2023-10-27 天津大学 基于程序切片的软件关联配置错误诊断方法及装置
CN114741302A (zh) * 2022-04-19 2022-07-12 杭州金衡和信息科技有限公司 一种基于变量分离的软件bug定位方法及装置
CN114741302B (zh) * 2022-04-19 2022-12-06 杭州金衡和信息科技有限公司 一种基于变量分离的软件bug定位方法及装置

Also Published As

Publication number Publication date
CN106951372B (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
CN106951372A (zh) 一种基于变量切片和关联规则的软件错误定位方法
Halkidi et al. Data mining in software engineering
Zhang et al. Non-parametric statistical fault localization
CN102831055B (zh) 基于加权属性的测试用例选择方法
US20130204827A1 (en) Internal abnormality diagnosis method, internal abnormality diagnosis system, and decision tree generation method for internal abnormality diagnosis of oil-filled electric apparatus utilizing gas concentration in oil
CN109857457B (zh) 一种在双曲空间中学习源代码中的函数层次嵌入表示方法
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
CN104794059A (zh) 一种基于函数调用记录的缺陷定位方法及装置
Krishnan et al. Are change metrics good predictors for an evolving software product line?
CN101866316A (zh) 一种基于相对冗余测试集约简的软件缺陷定位方法
CN114547619B (zh) 一种基于树的漏洞修复系统及修复方法
Sudhamani et al. Code similarity detection through control statement and program features
CN115905031A (zh) 一种基于精准质量保障系统的测试用例推荐方法
CN115345458A (zh) 业务流程合规性检查方法、计算机设备以及可读存储介质
Tiarks et al. An assessment of type-3 clones as detected by state-of-the-art tools
CN111428142A (zh) 一种基于随机森林分类器的代码评审人推荐系统及方法
CN110287114A (zh) 一种数据库脚本性能测试的方法及装置
Debroy et al. On the consensus-based application of fault localization techniques
Qian et al. A strategy for multi-target paths coverage by improving individual information sharing
CN112329432B (zh) 一种基于改进Apriori的配电网电压越限问题关联分析方法
Restat et al. Towards a Holistic Data Preparation Tool.
Saxena et al. Software Fault Localization: Techniques, Issues and Remedies.
Kneis et al. A new satisfiability algorithm with applications to Max-Cut
Shin et al. On-line generation association rules over data streams
CN112214401B (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