CN102521130A - 一种基于聚类不变式分析的错误定位方法 - Google Patents

一种基于聚类不变式分析的错误定位方法 Download PDF

Info

Publication number
CN102521130A
CN102521130A CN2011104134980A CN201110413498A CN102521130A CN 102521130 A CN102521130 A CN 102521130A CN 2011104134980 A CN2011104134980 A CN 2011104134980A CN 201110413498 A CN201110413498 A CN 201110413498A CN 102521130 A CN102521130 A CN 102521130A
Authority
CN
China
Prior art keywords
execution
invariant
cluster
variable
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.)
Granted
Application number
CN2011104134980A
Other languages
English (en)
Other versions
CN102521130B (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN201110413498.0A priority Critical patent/CN102521130B/zh
Publication of CN102521130A publication Critical patent/CN102521130A/zh
Application granted granted Critical
Publication of CN102521130B publication Critical patent/CN102521130B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种基于聚类不变式分析的错误定位方法,基于程序执行的不变式分析技术,收集程序执行过程中的语句频谱信息进行聚类,对各个类簇分别计算与变量相关的不变式;之后进行新的程序执行,根据新的执行所具有的程序频谱将其划分至某个聚类中,比较新的执行与所在聚类中已有的不变式,如果新的执行违反了已有的不变式,则认为该次执行为一次错误执行;最后根据上述信息进行错误定位。本发明根据已有执行的程序频谱进行聚类,将程序执行空间划分为多个部分,再将新的执行与所属聚类的不变式进行对比分析,节省了验证程序执行正确与否的人力,同时得到了更细粒度的与不同程序执行空间相对应的不变式,有利于程序员进行错误定位。

Description

一种基于聚类不变式分析的错误定位方法
技术领域
本发明属于程序调试技术领域,涉及程序测试结果的收集、程序不变式分析,为一种基于聚类不变式分析的错误定位方法。
背景技术
传统的基于不变式的程序错误定位方法主要包含以下几个步骤:(1)首先运行一批测试用例,收集与程序中变量相关的不变式;(2)然后运行一个新的测试用例,得到这个测试用例运行后的变量信息;(3)将这些变量信息与收集到的不变式信息进行比较,若产生错误,则判定此次执行出错;(4)最后,找到该测试用例运行时在程序中出错的位置,便达到了错误定位的目的。这一方法的主要优点是不需要判断程序执行是否正确,而且能得到与程序执行有关的状态信息。然而,现有的这一类方法所提取的不变式均是针对整个程序执行空间的,效率比较低,而且所得到的不变式粒度较粗,不能很好地反映程序的局部执行状态。
在基于不变式的错误定位方面,主要有S.Hangal和M.S.Lam提出的方法以及B.Pytlik和M.Renieris等人提出的方法。而在程序不变式提取领域成果较为显著的有M.D.Ernst等人做出的DALKON不变式提取工具。
S.Hangal和M.S.Lam进行错误定位的基本方法是,对某个变量a建立不变式1000111101111,其中的每一位表示变量a的一个属性,取1的位表示正常执行中该位所代表的属性始终被保持,取0的位表示正常执行中该位所代表的属性没有被保持。如果有一次执行a的值为0100111101111,第一位不是1,那么显然违背不变式,则可以推测该次执行有错。这里变量的属性可以包括变量a的值是否为常数,是否恒为正值,是否恒为奇数或偶数,变量的最小上限或最大上限是否在每次执行都被保持。他们所提到不变式起初具有较为严格的条件,随着正确测试执行的增加而不断放松。在运行完训练测试集后,对新的测试,如果不变式不能得到满足,就提示程序包含错误。比如,对于一个变量a,它在第一次被赋初始值V,不变式为M。显然,最初M中的每一位都为1。若又遇一条对a进行赋值的指令,a被赋值成为W’,如果
Figure BDA0000119051400000011
不变式被改成M:=
Figure BDA0000119051400000021
这样就放松了不变式的限制条件。使用这样的位记录的方法去记录不变式信息,在空间和时间上都达到了很好的效果。在这一方法里,为方便处理,将所有的基本数据类型都转化成为Integer类型的数据,而放弃了对浮点数类型数据不变式的收集。
使用这种错误定位方法,S.Hangal和M.S.Lam做出了一个对Java程序进行不变式提取及错误定位的DIDUCE系统。该系统可以自动并且快速地对包含错误的Java程序进行错误定位,找到出错的根源。目前此种方法对Java程序的错误定位有比较好的效果,但是尚未实践在其他语言的程序上。
B.Pytlik和M.Renieris等人采用了类似的思想提出了一个基于不变式分析的错误定位方法。与之前所述方法主要的不同是该方法采用了更为复杂的不变式描述形式。在他们提出的方法中,主要考虑变量之间的关系,为变量之间的关系建立不变式。但是,这种不变式的收集更为困难。在效果方面,目前这两种方法还没有有效的比较。
另外,M.D.Ernst等人在程序不变式的收集上取得了比较丰硕的成果,他们已经发布了一个较为成熟的不变式收集工具——DALKON,此工具可以用来收集C,C++,Java,Perl四种语言所写程序中的不变式。而且收集到的不变式信息比较丰富,包括某一变量x是否为常量(x=a),是否恒不为0(x≠0),x的最大下限和最小上限(a≤x≤b),x与其他变量之间的线性关系(y=ax+b),函数赋值(x=fn(y)),包含关系(x∈y),是否被排序(xis sorted)等。这样的不变式信息可以用在错误定位、代码优化等领域。
利用DALKON,Y.Brun和M.D.Ernst两人共同进行了对程序执行使用机器学习算法进行代码潜在错误发现的工作。在机器学习的训练阶段,他们提出了SVM(Support Vector Machine)算法和判决树算法,并建立了错误不变式分类器(Fault Invariant Classifier)的模型。他们发现,这一模型可以准确地对变量正确的属性和错误的属性进行分类并排序。他们所搜集出的程序中变量的错误属性可以帮助程序员去定位错误。
发明内容
本发明所要解决的技术问题是:现有的基于不变式的错误定位方法都是对程序的整个执行空间求不变式,再用该不变式判定错误,得到的不变式粒度较粗,往往不够精确。需要对一个程序的执行空间根据不同的执行场景分为多个部分,分析每个部分各自不同的不变式,用各个场景的不变式来判定一个执行是否存在问题,达到错误定位的目的。
本发明的技术方案为:一种基于聚类不变式分析的错误定位方法,收集程序执行过程中的语句频谱信息,计算各执行语句之间的距离,对程序执行的语句频谱信息进行聚类分析,将程序执行空间划分为多个类簇,对各个类簇分别计算与程序变量相关的不变式,执行新的测试用例,根据新的执行所对应的程序语句频谱将其划分至对应的类簇中,比较该测试用例执行结果与类簇中已有的不变式,如果新的执行违反了已有的不变式,则认为该次执行为一次错误执行,根据类簇信息完成错误定位。
本发明具体步骤如下:
1)按照程序执行的语句频谱信息对所有执行进行聚类划分,每个语句块的频谱作为聚类的数据对象,设共有n个数据对象,聚为k类:
11)计算任意两个测试用例的欧拉距离d(x,y),并由所有计算得到的距离构造集合U,由集合U中距离最近的两个数据对象形成集合Am,Am即为将要形成的聚类,其中m为集合下标,用于标识不同的聚类,初始为1,并从集合U中删除这两个对象;
12)在集合U中找到距离集合Am最近的数据对象,将其加入集合Am,并从集合U中删除该对象;
13)重复步骤12)直到集合中的数据对象个数大于等于n/k;
14)如果m<k,则m←m+1,再从集合U中找到距离最近的两个数据对象,构成集合Am,并从集合U中删除这两个数据对象,返回步骤12)执行;
15)将最终形成的k个集合中的数据对象分别进行算术平均,形成k个聚类中心;
2)根据聚类结果划分程序执行空间为多个类簇,对划分得到的各个类簇分别计算与程序变量相关的不变式,所述不变式包括:
21)这个变量第一次执行通过一条赋值表达式后的值;
22)为这个变量维护的一个不变式向量V,V中包含三个分量:第一个分量表示每次执行时这个变量的值与第一次被赋的值是否相同,相同取1,不同取0;第二个分量表示每次执行时这个变量的值是否与第一次被赋的值有相同的正负性,相同取1,不同取0;第三个分量表示每次执行时这个变量是否与第一次执行有相同的奇偶性,相同取1,不同取0;
23)这个变量最小上限值,若某次执行时该变量被赋的值大于这个最小上限,则将最小上限记为这个值;
24)这个变量的最大下限值,若某次执行时该变量被赋的值小于这个最大下限,则将最大下限记为这个值;
25)这个变量被赋值的次数;
26)这个变量的名字、其所在函数的名字及所在基本块的名字;
3)运行新的测试用例,收集新的执行所对应的语句频谱,根据聚类分析判断其所在的聚类类簇,对比该执行与其所在类簇的不变式,若产生错误,则判定此次执行出错,然后根据类簇的位置实现错误定位。
本发明首先根据程序执行的语句频谱进行聚类,从而将程序执行划分为多个类簇,然后计算各个类簇中与变量相关的不变式,通过不同执行空间类簇的不变式来判断一个执行是否包含错误。本发明主要应用于测试用例执行频谱可以自动收集,但无法判断每次执行是否正确的场景,可以节省人力成本,为一种程序错误定位方法。
本发明基于聚类不变式分析,通过对程序执行的语句频谱进行聚类来划分程序执行空间,从而获得细粒度的不变式,所得到的不变式能更好地反映程序的局部执行状态。本发明在错误定位时不仅不需要判断程序执行的正确与否,节约人力,同时通过聚类的方式,使得所分析的不变式与程序执行空间具有更紧密的关联关系,有助于程序员进行错误定位。
附图说明
图1为本发明的流程示意图。
图2为本发明的具体实施流程图。
具体实施方式
本发明基于程序执行中的不变式分析技术,如图1,通过对程序源代码进行插桩,收集程序执行过程中的语句频谱信息;根据所收集的频谱信息进行聚类划分,从而将程序的执行空间划分为多个类簇,再对各个类簇分别计算与变量相关的不变式;之后进行新的测试用例的执行,根据新的执行所对应的程序语句频谱将其划分至某个聚类中;比较新的执行得到的变量信息与其所在类簇中已有的不变式,如果新的执行违反了已有的不变式,则认为该次执行为一次错误执行;最后根据上述信息进行错误定位:
1)按照程序执行的语句频谱信息对所有执行进行聚类划分,每个语句块的频谱作为聚类的数据对象,设共有n个数据对象,聚为k类:
11)计算任意两个测试用例的欧拉距离d(x,y),并由所有计算得到的距离构造集合U,由集合U中距离最近的两个数据对象形成集合Am,Am即为将要形成的聚类,其中m为集合下标,用于标识不同的聚类,初始为1,并从集合U中删除这两个对象;
12)在集合U中找到距离集合Am最近的数据对象,将其加入集合Am,并从集合U中删除该对象;
13)重复步骤12)直到集合中的数据对象个数大于等于n/k;
14)如果m<k,则m←m+1,即将现有的标号m加1,从集合U中找到距离最近的两个数据对象,构成新集合Am,并从集合U中删除这两个数据对象,返回步骤12)执行;
15)将最终形成的k个集合中的数据对象分别进行算术平均,形成k个聚类中心;
2)根据聚类结果划分程序执行空间为多个类簇,对划分得到的各个类簇分别计算与程序变量相关的不变式,所述不变式包括:
21)这个变量第一次执行通过一条赋值表达式后的值;
22)为这个变量维护的一个不变式向量V,V中包含三个分量:第一个分量表示每次执行时这个变量的值与第一次被赋的值是否相同,相同取1,不同取0;第二个分量表示每次执行时这个变量的值是否与第一次被赋的值有相同的正负性,相同取1,不同取0;第三个分量表示每次执行时这个变量是否与第一次执行有相同的奇偶性,相同取1,不同取0;
23)这个变量最小上限值,若某次执行时该变量被赋的值大于这个最小上限,则将最小上限记为这个值;
24)这个变量的最大下限值,若某次执行时该变量被赋的值小于这个最大下限,则将最大下限记为这个值;
25)这个变量被赋值的次数;
26)这个变量的名字、其所在函数的名字及所在基本块的名字;
3)运行新的测试用例,收集新的执行所对应的语句频谱,根据聚类分析判断其所在的聚类类簇,对比该执行与其所在类簇的不变式,若产生错误,则判定此次执行出错,然后根据类簇的位置实现错误定位。
本发明的具体实施步骤如图2所示。具体实施时用到了低层次虚拟机编译器基础框架The LLVM Compiler Infrastructure,后面简称LLVM,用于收集程序执行的语句频谱。其中,第一步分析的功能是实现对所要测试的源文件进行频谱信息收集的代码插桩,并将此信息写入文件;第二步分析用来根据第一步收集到的频谱信息对所有的执行进行聚类划分,其中第二步分析前端用来对从第一步得到的主函数分析、函数分析、基本块分析对应的三个文件进行预处理。预处理的作用是将收集到的频谱信息转换为聚类所能识别的数据矩阵,同时在三个文件中分别为每次执行添加测试用例的编号;第二步分析中间部分对由前一步处理过的文件中具有相同频谱信息的测试用例进行归并;第二步分析后端负责接收用户对聚类数目的输入,并将所有的执行划归到其所对应的聚类中;第三步分析与第一步分析相同,是用来对一次新的执行收集它的频谱信息;第四步分析的作用是寻找一次新的执行所属聚类,并为该聚类中所有测试用例的之后的执行建立Shell脚本;第五步分析负责收集一次新的执行所属聚类的不变式信息;第六步分析用来对上一步中收集到的各个不变式信息按照其可信任度进行由高到低的排序;第七步分析的功能是将一次新的执行中的变量信息和排序后的聚类不变式信息进行比较,判断此次执行是否有错,若有错则给出程序中可能出错位置的一个报告。最终的结果写入到一个错误报告文件中。
本发明实施具体分为7个步骤。第1步到第4步为聚类划分阶段,第5步到第7步为不变式提取阶段。下面介绍本发明实施流程中的每一步。
第1步,在LLVM的opt命令中增加一个优化选项,加载此选项的时候可以对中间代码进行插桩,用来对收集频谱信息。
具体操作中,需要运行makefile指令对ExecutionProfilingStep文件夹中的所有文件进行编译。若编译成功,则会生成名为ExecutionProfilingStep1.so的文件。
使用第一步分析对应的编译选项对源代码的中间表示进行代码插桩。插桩成功后,得到replace.bc.inst文件,执行replace.bc.inst获得记录此次执行主函数基本块覆盖率信息、函数覆盖率信息和函数基本块覆盖率信息的三个文件。
如果需要执行多个测试用例,则需要写一个shell脚本。
第2步,对从上一步中得到的三个文件进行处理,根据用户输入的聚类数目得到对所有实行的聚类划分。由一个文件专门记录聚类划分结果。
此步骤的操作被分为三个小步骤,分别为第二步分析前端、第二步分析中间部分和第二步分析后端。
运行第二步分析前端。成功后,会得到主程序分析第二步、函数分析第二步及基本块分析第二步三个文件。这一步是对主程序分析、函数分析、基本块分析三个文件中所记录的覆盖率信息的整理。
运行第二步分析中间部分。成功后,会得到主程序划分和函数划分两个文件。这一步是对在上一步中生成的文件进行分析,找出所有具有相同主函数基本块覆盖率信息的测试用例编号,并将覆盖率信息及测试用例编号写入到主函数划分文件中。函数划分文件亦如此,其中记录的是不同的函数覆盖率信息和测试用例编号。
最后,运行第二步分析后端。待用户输入聚类数目后,第二步分析后端会将所有的执行划分到指定数目的聚类之中,具体的分类信息被记录在聚类结果对应的文件中。
第3步,类似于第1步,但是得到的主程序分析、函数分析和基本块分析文件里记录的是某个特定的测试用例的频谱信息。
第4步,将一次新的执行划归到某个聚类之中。
具体操作时,需要将第2步中得到的聚类结果文件和第三步中得到的主程序分析、函数分析和基本块分析文件复制到第四步分析对应的文件夹中。开始第四步分析,便可以将此次新的执行划归到离其频谱信息距离最近某个特定聚类之中,具体的信息被记录在所属聚类的文件中。
第5步,在LLVM的opt命令中增加一个优化选项,加载此选项的时候可以对中间代码进行插桩,用来收集执行后的不变式信息。
这一步中增加编译优化加载项的方法与第一步中介绍的相同,可以增加一个第五步分析所对应的LLVM编译选项。
第6步,不变式学习。
执行聚类文件里记录的某个聚类中的所有测试用例,不断放松对不变式的约束,通过学习最终得到符合所有执行的不变式,记录在不变式文件中。
与一个变量相关的所有不变式在不变式文件中分8行记录:变量名、变量所在函数名、变量所在基本块名、变量第一次被赋的值、变量值的最小上限、变量值的最大下限、变量的掩码向量以及变量被赋值的次数。
在得到了不变式之后,需要按照每个不变式的可信任度高低对所有的不变式信息进行排序。排序之后的结果被记录在排序后的不变式文件中。排序后的不变式文件会记录变量在不变式文件中的编号、变量的可信任度、变量名、变量所在函数名、变量所在基本块名、经过此赋值点的次数、变量的掩码向量、变量在这个赋值点上第一次被赋的值、变量值的最小上限、变量值的最大下限。
第7步,此步骤为整个本发明实施的最后一步,用来将一次新的执行后收集到的变量信息与从上一步中得到的不变式信息进行对比,从而判断此次执行是否为一次正确的执行,如果为错误的执行的话便试图去找到程序中出错的点。
为了得到一次新的执行的变量信息,需要按照第5步的方法收集这次新的执行中所有的不变式信息。在将此次执行的不变式和经过学习的不变式进行比较后,会生成一个错误报告文件。错误报告文件报告了这次新的执行是否有错误。若有错,则报告给出出现错误的变量名、变量其所在的函数和基本块名等信息;若无错,则错误报告中显示本次执行无错误。
我们将本发明在西门子实验程序集中的replace程序错误版本v1和print_tokens程序错误版本v1上做了对比实验。
在对replace程序错误版本v1进行的实验中,使用replace程序中的第1至1000号测试用例来进行聚类划分并进行不变式学习。但是因为其中有一部分测试用例执行时会出现异常,无法正常统计到它的频谱信息,所以真正实验后,最终能够通过收集到频谱信息的测试用例总共有540个。对这540个测试用例进行频谱信息统计后发现共有两种不同的主函数覆盖率信息和34种不同的函数覆盖率信息。
将第1001号测试用例作为一次新的执行,对其统计了聚类数目从1至20每种情况下最终的执行正确性判断情况和错误执行下程序错误定位的情况。
实验结果见表1,其中成功表示本发明判断此测试用例是一次正确的执行,失败表示本发明判断此次执行被判定为一次错误的执行,需要进行错误定位。
表1对replace程序错误版本v1和测试用例1001,聚类数从1-20的实验结果
  聚类数目   1   2   3   4   5
  实验结果   成功   成功   失败   失败   失败
  聚类数目   6   7   8   9   10
  实验结果   失败   失败   成功   失败   失败
  聚类数目   11   12   13   14   15
  实验结果   失败   失败   失败   失败   失败
  聚类数目   16   17   18   19   20
  实验结果   失败   失败   失败   失败   失败
从此表中可以看出对于不同的聚类数目,第1001号测试用例会被划分到不同的聚类中,从而会在第六步之后产生不同的不变式,产生不同的执行正确性判断情况和对错误测试用例的错误定位情况。
从表1中可以看到,在聚类数目从1-20的20个实验中,判断测试用例1001为正确测试用例的数目为3个,判断测试用例为错误的有17个。这17个实验中的错误报告中给出了程序可能出错位置的报告。在该实验中,在聚类数目到达10之后,第1001号测试用例每次执行后都稳定地属于同一个聚类,而此聚类始终没有分裂。即意味着程序的该执行空间为最小执行空间,不需要再划分。这便造成聚类数目从10到20变化的过程中,每次用来进行不变式提取的聚类都一样,所以第1001号测试用例的变量信息每次都是和同一批不变式在比较,故每次结果都是一样的:失败。从而准确地判断出新的一次执行是否有错,所收集的频谱信息及不变式信息可以用于错误定位。
通过上面的实验,我们可以看到对于同一个程序,其执行空间聚类数目的变化会对最终一次新的执行正确性的判断有影响。然而,如果能判断其执行空间是否不可再划分,就能准确地将新的执行划分到正确的类簇中,从而判断该次执行是否正确。这也从一个侧面反映了本发明的优点:执行空间的划分对程序不变式的分析是有影响的,执行空间的划分有利于找到更细粒度的不变式。

Claims (2)

1.一种基于聚类不变式分析的错误定位方法,其特征是收集程序执行过程中的语句频谱信息,计算各执行语句之间的距离,对程序执行的语句频谱信息进行聚类分析,将程序执行空间划分为多个类簇,对各个类簇分别计算与程序变量相关的不变式,执行新的测试用例,根据新的执行所对应的程序语句频谱将其划分至对应的类簇中,比较该测试用例执行结果与类簇中已有的不变式,如果新的执行违反了已有的不变式,则认为该次执行为一次错误执行,根据类簇信息完成错误定位。
2.根据权利要求1所述的一种基于聚类不变式分析的错误定位方法,其具体步骤如下:
1)按照程序执行的语句频谱信息对所有执行进行聚类划分,每个语句块的频谱作为聚类的数据对象,设共有n个数据对象,聚为k类:
11)计算任意两个测试用例的欧拉距离d(x,y),并由所有计算得到的距离构造集合U,由集合U中距离最近的两个数据对象形成集合Am,并从集合U中删除这两个对象,Am即为将要形成的聚类,其中m为集合下标,用于标识不同的聚类,初始为1;
12)在集合U中找到距离集合Am最近的数据对象,将其加入集合Am,并从集合U中删除该对象;
13)重复步骤12)直到集合中的数据对象个数大于等于n/k;
14)如果m<k,则m←m+1,再从集合U中找到距离最近的两个数据对象,构成集合Am,并从集合U中删除这两个数据对象,返回步骤12)执行;
15)将最终形成的k个集合中的数据对象分别进行算术平均,形成k个聚类中心;
2)根据聚类结果划分程序执行空间为多个类簇,对划分得到的各个类簇分别计算与程序变量相关的不变式,所述不变式包括:
21)这个变量第一次执行通过一条赋值表达式后的值;
22)为这个变量维护的一个不变式向量V,V中包含三个分量:第一个分量表示每次执行时这个变量的值与第一次被赋的值是否相同,相同取1,不同取0;第二个分量表示每次执行时这个变量的值是否与第一次被赋的值有相同的正负性,相同取1,不同取0;第三个分量表示每次执行时这个变量是否与第一次执行有相同的奇偶性,相同取1,不同取0;
23)这个变量最小上限值,若某次执行时该变量被赋的值大于这个最小上限,则将最小上限记为这个值;
24)这个变量的最大下限值,若某次执行时该变量被赋的值小于这个最大下限,则将最大下限记为这个值;
25)这个变量被赋值的次数;
26)这个变量的名字、其所在函数的名字及所在基本块的名字;
3)运行新的测试用例,收集新的执行所对应的语句频谱,根据聚类分析判断其所在的聚类类簇,对比该执行与其所在类簇的不变式,若产生错误,则判定此次执行出错,然后根据类簇的位置实现错误定位。
CN201110413498.0A 2011-12-13 2011-12-13 一种基于聚类不变式分析的错误定位方法 Expired - Fee Related CN102521130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110413498.0A CN102521130B (zh) 2011-12-13 2011-12-13 一种基于聚类不变式分析的错误定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110413498.0A CN102521130B (zh) 2011-12-13 2011-12-13 一种基于聚类不变式分析的错误定位方法

Publications (2)

Publication Number Publication Date
CN102521130A true CN102521130A (zh) 2012-06-27
CN102521130B CN102521130B (zh) 2014-12-24

Family

ID=46292061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110413498.0A Expired - Fee Related CN102521130B (zh) 2011-12-13 2011-12-13 一种基于聚类不变式分析的错误定位方法

Country Status (1)

Country Link
CN (1) CN102521130B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294596A (zh) * 2013-05-23 2013-09-11 西安电子科技大学 一种基于程序不变量的合约式软件故障预警方法
CN103995780A (zh) * 2014-05-30 2014-08-20 浙江理工大学 一种基于语句频度统计的程序错误定位方法
CN106598850A (zh) * 2016-12-03 2017-04-26 浙江理工大学 一种基于程序失效聚类分析的错误定位方法
CN107656861A (zh) * 2016-07-26 2018-02-02 龙芯中科技术有限公司 硬件抽象层调试方法和装置
CN110933683A (zh) * 2019-12-13 2020-03-27 智慧足迹数据科技有限公司 信号覆盖范围确定方法、装置、电子设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HANGAL S,ET AL.: "Tracking down software bugs using automatic anomaly detection", 《PROCEEDINGS OF THE 24TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING. ACM》 *
吕春燕: "用于程序错误定位的运行路径聚类方法", 《万方学位论文数据库》 *
张忠林等: "基于加权欧式距离的k_means算法研究", 《郑州大学学报(工学版)》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294596A (zh) * 2013-05-23 2013-09-11 西安电子科技大学 一种基于程序不变量的合约式软件故障预警方法
CN103995780A (zh) * 2014-05-30 2014-08-20 浙江理工大学 一种基于语句频度统计的程序错误定位方法
CN103995780B (zh) * 2014-05-30 2017-01-04 浙江理工大学 一种基于语句频度统计的程序错误定位方法
CN107656861A (zh) * 2016-07-26 2018-02-02 龙芯中科技术有限公司 硬件抽象层调试方法和装置
CN107656861B (zh) * 2016-07-26 2020-06-02 龙芯中科技术有限公司 硬件抽象层调试方法和装置
CN106598850A (zh) * 2016-12-03 2017-04-26 浙江理工大学 一种基于程序失效聚类分析的错误定位方法
CN106598850B (zh) * 2016-12-03 2019-05-28 浙江理工大学 一种基于程序失效聚类分析的错误定位方法
CN110933683A (zh) * 2019-12-13 2020-03-27 智慧足迹数据科技有限公司 信号覆盖范围确定方法、装置、电子设备及可读存储介质
CN110933683B (zh) * 2019-12-13 2021-05-18 智慧足迹数据科技有限公司 信号覆盖范围确定方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN102521130B (zh) 2014-12-24

Similar Documents

Publication Publication Date Title
CN102253889B (zh) 一种回归测试中基于分布的测试用例优先级划分方法
Dallachiesa et al. NADEEF: a commodity data cleaning system
CN103678110B (zh) 提供修改相关信息的方法和装置
CN101231614B (zh) 一种基于执行轨迹块相似度的软件缺陷定位方法
CN102521130B (zh) 一种基于聚类不变式分析的错误定位方法
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
CN106126413B (zh) 基于类不平衡学习和遗传算法的包裹式特征选择的软件缺陷预测方法
Wang et al. Efficient recovery of missing events
CN105095607B (zh) 一种针对asic设计中网表逻辑冗余的优化方法及系统
Masoud et al. A clustering-based model for class responsibility assignment problem in object-oriented analysis
CN101866316A (zh) 一种基于相对冗余测试集约简的软件缺陷定位方法
Tulsian et al. MUX: algorithm selection for software model checkers
Gogolla et al. Employing classifying terms for testing model transformations
CN109492106A (zh) 一种文本代码相结合的缺陷原因自动分类方法
CN114238958A (zh) 一种基于溯源聚类及图序列化的入侵检测方法及系统
CN107544905A (zh) 回归测试用例集的优化方法和系统
CN112364352A (zh) 可解释性的软件漏洞检测与推荐方法及系统
CN111782532B (zh) 一种基于网络异常节点分析的软件故障定位方法及系统
CN105808438A (zh) 一种基于函数调用路径的测试用例复用方法
Allier et al. Restructuring object-oriented applications into component-oriented applications by using consistency with execution traces
CN104090995B (zh) 一种ABAQUS轮胎模型中rebar单元网格的自动生成方法
CN105184403B (zh) 基于机器学习和统计模型检验的工作流最优配置寻优方法
CN105511867A (zh) 一种优化模式自动生成方法及优化装置
CN102799960A (zh) 面向数据模型的并行业务流程异常检测方法
CN104536882A (zh) 基于频繁子图挖掘的错误定位方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141224

Termination date: 20151213

EXPY Termination of patent right or utility model