CN101894073B - 基于控制流交集的缺陷自动定位装置及其自动定位方法 - Google Patents

基于控制流交集的缺陷自动定位装置及其自动定位方法 Download PDF

Info

Publication number
CN101894073B
CN101894073B CN2010102546318A CN201010254631A CN101894073B CN 101894073 B CN101894073 B CN 101894073B CN 2010102546318 A CN2010102546318 A CN 2010102546318A CN 201010254631 A CN201010254631 A CN 201010254631A CN 101894073 B CN101894073 B CN 101894073B
Authority
CN
China
Prior art keywords
module
defective
trace
failure
execution
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.)
Expired - Fee Related
Application number
CN2010102546318A
Other languages
English (en)
Other versions
CN101894073A (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.)
Beihang University
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN2010102546318A priority Critical patent/CN101894073B/zh
Publication of CN101894073A publication Critical patent/CN101894073A/zh
Application granted granted Critical
Publication of CN101894073B publication Critical patent/CN101894073B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种基于控制流交集的缺陷自动定位装置及其方法。该装置包括类文件改装模块、测试执行模块、成功/失败分类模块、Trace文件解析模块、失败执行交集模块、排序模块和源代码映射模块,将被测Java类文件经类文件改装模块改装,在测试执行模块执行各测试用例得到trace文件,成功/失败分类模块、Trace文件解析模块对trace文件进行处理,由失败执行交集模块、排序模块找到缺陷嫌疑点并对其进行排序,最后源代码映射模块将缺陷嫌疑点映射到Java源代码的相应位置。该方法通过对改装的Java类文件执行测试用例,对得到的trace文件进行分类、解析,找到缺陷嫌疑点并排序,最后将缺陷嫌疑点映射到Java源代码文件对应位置。本发明节省了大量人力,物力,提高了排错效率。

Description

基于控制流交集的缺陷自动定位装置及其自动定位方法
技术领域
本发明涉及软件测试领域,具体涉及一种基于控制流交集的缺陷自动定位装置及其自动定位方法。
背景技术
程序缺陷定位技术是指明一个有缺陷的程序产生异常行为原因的技术。程序缺陷包括程序错误(error)和程序bug。传统的手工缺陷定位技术包括以下几个基本步骤:在程序中设置断点;再次执行程序;检测程序状态以定位产生不正确输出的原因。显然,这样的缺陷定位方式耗费大量的时间、人力和物力。并且针对规模较大的程序,这样的工作手工完成相当困难。因此,如何定位缺陷成为程序开发过程中的瓶颈。
在自动缺陷定位领域,已有许多不同的技术被提出并应用到实践当中。总的来说,这些技术可以被分为两类:静态程序分析和动态缺陷定位。静态程序分析是指在不执行程序的情况下,通过程序分析手段找出程序缺陷的技术。而动态缺陷定位技术是指在程序运行时,通过检测程序行为发现缺陷的技术。
静态程序分析的主要手段有代码走读、模型检测等。代码走读是指程序员逐行的审查程序源码,显然,这仍然是一种耗费大量的时间、人力和物力的低效手段。模型检测是指对被测程序建模,基于模型穷举程序所有可达的状态,并通过检测模型属性发现潜在缺陷的技术。由于穷举程序所有可达的状态会导致程序状态转移成指数增长,随着程序规模的不断扩大,可能的程序状态转移将越来越趋于无穷。因此穷举程序所有可达状态的工作随程序规模扩大而难度不断增大。
由于静态程序分析存在着费时费力和程序状态转移成指数增长等问题。目前动态缺陷定位越来越成为人们关注的焦点。
目前已有的主要动态缺陷定位有几类:包括基于程序数据流的动态不变式发现技术定位程序缺陷,利用最近邻概念定位缺陷,基于程序切片定位缺陷等几种。
这些方法存在以下问题:
第一、许多技术仍停留在理论阶段,没有形成实际应用和已发布的具体装置。如动态不变式发现技术、利用最近邻概念定位技术。
第二、某些已有技术,如最近邻和程序切片等技术,对最终报告的所有可能含有缺陷的缺陷嫌疑点并不排序,使得程序员认为各缺陷嫌疑点等可能地含有缺陷,不利于排错。
第三,已有技术定位缺陷的准确率不高,需要进一步提高准确率,以有效地帮助程序员定位缺陷。
因此目前的缺陷定位技术尚难以满足高效定位的应用需求,对开发效率有不利影响。
发明内容
本发明针对现有缺陷定位技术存在的费时费力以及排错不便、定位缺陷的准确率不高等问题,提供了一种基于控制流交集的缺陷自动定位方法及其自动定位装置。
本发明提供的基于控制流交集的缺陷自动定位装置,主要由类文件改装模块、测试执行模块、成功与失败分类模块、Trace文件解析模块、失败执行交集模块、排序模块以及源代码映射模块组成。类文件改装模块通过在相应的程序点自动加入相应的打印语句,对输入的所有被测Java类文件进行改装,并将改装后的Java类文件和输入的测试用例输出给测试执行模块;测试执行模块对所有测试用例执行改装后的Java类文件,收集每个测试用例输出的trace文件输出给成功与失败分类模块;成功与失败分类模块根据测试执行模块中测试用例执行结果正确与否将所有trace文件分为成功trace文件与失败trace文件,并将这两类trace文件传送给Trace文件解析模块;Trace文件解析模块对所有成功trace文件与所有失败trace文件进行解析处理,将构造的成功执行树形结构集与失败执行树形结构集传递给失败执行交集模块;失败执行交集模块对所有失败执行树形结构求交集,将在每一个失败执行树形结构中都出现的程序点作为缺陷嫌疑点得到失败执行交集,并将失败执行交集与成功执行树形结构集传递给排序模块;排序模块针对失败执行交集中的缺陷嫌疑点,根据每个缺陷嫌疑点在成功执行树形结构集中出现的频率从低到高进行排序,将有序的所有缺陷嫌疑点输出给源代码映射模块;源代码映射模块将有序的所有缺陷嫌疑点映射到Java源代码文件的相应位置,并最终将所有缺陷嫌疑点对应的源代码位置按每个缺陷嫌疑点含有缺陷的可能性从大到小排序后,作为缺陷定位报告显示出来。
本发明还提供一种基于控制流交集的缺陷自动定位方法,其定位处理过程包括如下步骤:
步骤一、类文件改装模块对所有的被测Java类文件改装,在三类程序点:函数入口、函数return语句和分支选择语句,自动加入相应的打印语句;
步骤二、测试执行模块将所有测试用例按照步骤一中改装后的Java类文件执行,并收集每个测试用例输出的trace文件;
步骤三、成功与失败分类模块根据步骤二中各测试用例执行结果正确与否将所有trace文件分为成功trace文件与失败trace文件两类;
步骤四、Trace文件解析模块对trace文件解析通过构造树形数据结构存储trace信息,Trace文件解析模块解析所有的成功trace文件与所有的失败trace文件后,得到成功执行树形结构集与失败执行树形结构集;
步骤五、失败执行交集模块通过对所有失败执行树形结构求交集,得出程序中所有缺陷嫌疑点的集合;
步骤六、排序模块针对步骤五得到的缺陷嫌疑点,根据它们在成功执行中出现的频率从低到高对它们排序;所述的频率的数值是一个大于等于0,小于等于1的实数,定义为:该缺陷嫌疑点在成功执行树形结构集出现的次数与所有成功测试用例的个数的比值;
步骤七、源代码映射模块将排序后的各缺陷嫌疑点映射到Java源代码文件的相应位置,并将所有缺陷嫌疑点对应的源代码位置按每个缺陷嫌疑点含有缺陷的可能性从大到小排序后显示。
本发明一种基于控制流交集的缺陷自动定位装置及其自动定位方法的优点在于: 
(1)所述的装置直接作用于Java类文件,不需要提供有关于程序设计的具体业务逻辑和设计方案。
(2)所述的装置所有缺陷定位过程实现了自动化,不需要人工干预,节省了大量人力,物力,从而提高了程序的开发效率。
(3)本发明提供的缺陷自动定位方法采用了一种新型有效的缺陷定位方法来定位缺陷,并对诊断得出的缺陷嫌疑点进行排序,提高了排错效率,并使得定位缺陷的准确率提高。
附图说明
图1为本发明缺陷自动定位装置的架构示意图;
图2为本发明缺陷自动定位方法的步骤流程图;
图3为一个含有bug的示例程序mid();
图4为图3中的示例程序经本发明缺陷自动定位方法改装后的程序;
图5为本发明缺陷自动定位方法步骤二中各用例执行改装后示例程序mid()产生打印输出的位置示意图;
图6为本发明缺陷自动定位方法步骤二执行测试用例[1]输出的trace文件的示例图;
图7为本发明缺陷自动定位方法步骤四中trace解析模块解析trace文件后形成的树形结构的一个示例图;
图8为本发明中失败执行交集模块计算程序所有缺陷嫌疑点的集合的结果示意图;
图9为本发明中排序模块计算各缺陷嫌疑点频率并排序的结果示意图。
具体实施方式
下面将结合附图对本发明作进一步的详细说明。
本发明的目的是提出一种基于控制流交集的缺陷自动定位装置及其自动定位方法,其思想是:一个缺陷对程序执行产生影响,当且仅当程序执行了该缺陷所在的代码行,所以要发现一个缺陷,可以通过对所有的失败测试用例求交集,落在交集中的程序点是缺陷可能存在的点,使得缺陷定位更加准确。
本发明提供的一种基于控制流交集的缺陷自动定位装置,如图1所示,包括类文件改装模块1、测试执行模块2、成功与失败分类模块3、Trace文件解析模块4、失败执行交集模块5、排序模块6以及源代码映射模块7。
将需要缺陷检测的Java类文件和其对应的测试用例输入类文件改装模块1中,类文件改装模块1对输入的所有待测的Java类文件改装,在相应的程序点自动加入相应的打印语句。类文件改装模块1将改装后的Java类文件和输入的测试用例输出给测试执行模块2。所述的程序点有三类:函数入口、函数return语句和分支选择语句,在执行到该相应的程序点时,打印语句将输出打印内容至trace文件。
测试执行模块2依据改装后的Java类文件执行所有测试用例,收集每个测试用例输出的trace文件输出给成功与失败分类模块3。
成功与失败分类模块3根据测试执行模块2中各测试用例执行结果正确与否将所有trace文件分为成功与失败两类,并将分得的成功trace文件与失败trace文件传送给Trace文件解析模块4。
Trace文件解析模块4对trace文件进行解析处理,使得trace文件能被后续模块识别与处理。所述解析处理后的trace文件将以树形结构组织,其中树的根节点是测试用例信息,分支与叶节点是三类程序点信息。每个测试用例的trace文件构造相应的一个树形数据结构存储。Trace文件解析模块4解析成功trace文件与失败trace文件,并分别构造为成功执行树形结构与失败执行树形结构。所有的成功执行树形结构构成成功执行树形结构集,所有的失败执行树形结构构成失败执行树形结构集。Trace文件解析模块4将失败执行树形结构集与成功执行树形结构集传递给失败执行交集模块5。
失败执行交集模块5通过对所有失败执行树形结构求交集,得出程序中所有可能含有缺陷的缺陷嫌疑点的集合形成失败执行交集。所述的缺陷嫌疑点是指在每一个失败执行树形结构中都出现的程序点。失败执行交集模块5将失败执行交集与成功执行树形结构集传递给排序模块6。
排序模块6针对失败执行交集中的缺陷嫌疑点,根据每个缺陷嫌疑点在成功执行树形结构集中出现的频率从低到高进行排序,将形成的有序的可能含缺陷的所有程序点即有序的所有缺陷嫌疑点输出给源代码映射模块7。其中,所述频率的数值是一个大于等于0,小于等于1的实数,定义为:该缺陷嫌疑点在成功执行树形结构集出现的次数/所有成功测试用例的个数。其中,成功执行树形结构集是成功执行树形结构的集合,某缺陷嫌疑点在成功执行树形结构集出现的次数等于成功执行树形结构集中含有该缺陷嫌疑点的成功执行树形结构的数目。
源代码映射模块7将按照接收到的有序的缺陷嫌疑点集合中的各缺陷嫌疑点映射到Java源代码文件的相应位置,将所有缺陷嫌疑点对应的源代码位置按每个缺陷嫌疑点含有缺陷的可能性从大到小排序后,作为缺陷定位报告显示给程序员。其中每个缺陷嫌疑点含有缺陷的可能性采用一个数值来表征,该数值是一个大于等于0,小于等于1的实数,其值等于1减去频率的值。可以看出,频率的值越小,对应缺陷嫌疑点含有缺陷的可能性越高。
本发明还提供一种应用上述缺陷自动定位装置的缺陷自动定位方法,如图2所示,包括如下步骤:
步骤一:将需要缺陷检测的Java类文件和其对应的测试用例输入类文件改装模块1中,类文件改装模块1对所有的被测Java类文件进行改装,在相应的程序点自动加入相应的打印语句。本步骤将Java类文件中的特殊程序点与打印语句代码绑定。当执行到该程序点时,打印语句将输出打印内容至trace文件。被改装的程序点有三类:函数入口、函数return语句和分支选择语句。
如图3所示,为说明本发明的过程所使用的一个示例程序mid(),程序mid()每次输入3个整数参数,输出3个整数中处于中间位置的整数值。程序在第7行中存在一个bug,if语句的条件表达式正确的形式应该是“x<z”。图4为改装后的示例程序mid()。经改装,程序中的函数入口、函数return语句和分支选择语句会自动加入相应的打印语句。如图4所示,图4中(1)是对程序中的函数入口的改装,使之在执行时输出标识“Method_Call”及函数名,记录该函数被调用;图4中(6)是对程序中的函数return语句的改装,使之在执行时输出标识“Method_End”及函数名,记录该函数调用过程结束;图4中(2)和(3)记录if分支选择语句调用过程,其中(2)输出标识“IF_Call”、if分支对应的源代码行号和分支语句内容“if (y < z)”,记录该分支被调用,其中,该if分支对应的源代码行号为如图3中源代码的第4行;(3)输出标识“IF_Out”及if分支对应的源代码行号和分支语句内容,记录该分支调用结束;同理,图4中(4)和(5)记录else分支选择语句调用过程。需要进一步说明的是:(a)程序mid()的其他分支语句,如mid()源代码中的第5行的if分支选择语句等也如同上述第4行if分支选择语句那样被改装,这里不再赘述;(b)本发明直接作用于Java类文件,为了便于说明,仍采用源代码形式展示,实际的改装效果与图示相同。
步骤二:测试执行模块2将所有测试用例按照步骤一中改装后的Java类文件执行,并输出trace文件。
如图5所示,本发明实施例的测试用例一栏中共有6个测试用例,每个测试用例的编号以方括号表示,每个测试用例的首栏中3个数字依次表示输入的3个整数参数。
每个圆形实心黑点表示执行每个测试用例时,改装后的mid()程序输出打印信息的位置。其中,第1行为函数mid()的入口,第14行则是函数mid()的return语句,标注圆形实心黑点的其他行表示分支语句调用时,输出打印信息的位置,如图5中第4行。
每个测试用例的最后一栏标明了用例执行成功与失败的情况,“F”表示执行失败,“P”表示执行成功。如图5所示,测试用例[1]、[3]、[4]执行成功;测试用例[2]、[5]、[6]执行失败。
通过输入测试用例和改装后的Java类文件,测试执行模块2执行所有测试用例,并收集每个测试用例输出的trace文件。
如图6所示为输入测试用例[1],3个整数分别为1,2,3时,输出的trace文件的内容。结合图5中的第一个测试用例的打印信息输出位置示意可知,trace文件真实的反映了程序函数调用和分支选择等控制状态的转移情况。
步骤三:成功与失败分类模块3根据步骤二中各测试用例执行结果正确与否将所有trace文件分为成功trace文件与失败trace文件两类。通过判读trace文件中是否报告执行错误或程序执行结果是否与预期结果一致自动将trace文件分为成功trace文件与失败trace文件两类。其中,如果trace中报告发生错误或者程序执行结果与预期结果不一致,则该trace文件划入失败trace文件一类;否则trace文件划入成功trace文件一类。
如图5所示,测试用例中用例[1]、[3]、[4]产生的trace文件划为成功trace文件一类,测试用例[2]、[5]、[6]产生的trace文件划为失败trace文件一类。
步骤四:Trace文件解析模块4对步骤三中分类后的trace文件进行解析,使得解析后的trace文件能被后续模块识别与处理。所有的trace信息将以树形结构组织,其中树的根节点是测试用例信息,分支与叶节点是步骤一中的三类程序点信息。每个测试用例产生的trace文件构造为相应的一个树形数据结构存储。
如图7所示,图为测试用例[1]产生的trace文件被解析后形成树形结构,其中树的根节点是测试用例[1],分支与叶节点均是步骤一中的程序点信息。第1层为方法mid()的调用,第2层为源代码第4行的if调用,第3层为源代码第5行的if调用。树形结构的层次关系表示了调用关系,例如测试用例[1]调用了方法mid()。该树中第3层为树叶节点,不再有子节点。完成解析后,树形结构使trace中的信息不丢失且能被后续模块识别与处理。
Trace文件解析模块4解析所有的成功trace文件与所有的失败trace文件后,得到成功执行树形结构集与失败执行树形结构集。
步骤五:失败执行交集模块5计算所有失败执行的交集,找到所有缺陷嫌疑点。该模块通过对所有失败执行树形结构求交集,得出程序中所有缺陷嫌疑点的集合。本发明中认为在每一个失败的测试用例中都被执行到的或者说每一个失败执行树形结构中都出现的程序点是缺陷嫌疑点。
如图8所示,测试用例[2]、[5]、[6]均为失败的用例,对测试用例[2]、[5]、[6]求交集,得到如图8所示的可能含有缺陷的所有缺陷嫌疑点,列于图8中“嫌疑点”一栏,缺陷嫌疑点有:程序第1行、第4行、第5行、第7行以及第14行。需要说明的是第1行被视为函数mid()的入口,而第14行则是函数mid()的return语句,均加入缺陷嫌疑点集合中。
步骤六:排序模块6针对步骤五找到的缺陷嫌疑点,根据它们在成功执行树形结构集中出现的频率由低到高对它们排序。频率的数值是一个大于等于0,小于等于1的实数,定义为:该缺陷嫌疑点在成功执行树形结构集出现的次数/所有成功测试用例的个数。其中,成功执行树形结构集是成功执行树形结构的集合,某缺陷嫌疑点在成功执行树形结构集出现的次数等于成功执行树形结构集中含有该缺陷嫌疑点的成功执行树形结构的数目。
如图9所示,本步骤针对每一个步骤五中报告的缺陷嫌疑点,根据它们在成功的测试用例产生的trace文件中的出现频率对它们排序,频率越低含有缺陷的可能性越大,排序越靠前。例如第5行缺陷嫌疑点只在1个成功的测试用例产生的trace文件中出现,即在测试用例[1]中出现,总的成功的测试用例产生的trace文件数为3个,则该缺陷嫌疑点的在成功的测试用例产生的trace文件中的出现频率为1/3。所有缺陷嫌疑点的频率列于图9中“频率”一栏。根据每个缺陷嫌疑点的频率从低到高对它们排序。所有缺陷嫌疑点的在序列中的位置列于图9中“排序”一栏。如图9所示,按照频率从低到高排序后的缺陷嫌疑点为:程序第7行、第5行、第1行、第4行以及第14行。
步骤七:源代码映射模块7将步骤六中排序后的各缺陷嫌疑点映射到Java源代码文件的相应位置,并将排序后的所有缺陷嫌疑点对应的源代码位置以及每个缺陷嫌疑点含有缺陷的可能性顺序显示出来。其中每个缺陷嫌疑点含有缺陷的可能性,其数值是一个大于等于0,小于等于1的实数,其值等于1减去步骤六中频率的值。即步骤六中的频率值越小,每个语句含有缺陷的可能性越高。如图9所示,排序后第7行将作为最终报告的第一个缺陷嫌疑点告知程序员,程序员能马上定位程序缺陷。

Claims (8)

1.一种基于控制流交集的缺陷自动定位装置,其特征在于,该缺陷自动定位装置主要由类文件改装模块、测试执行模块、成功与失败分类模块、Trace文件解析模块、失败执行交集模块、排序模块以及源代码映射模块组成;
类文件改装模块通过在相应的程序点自动加入相应的打印语句,对输入的所有被测Java类文件进行改装,并将改装后的Java类文件和输入的测试用例输出给测试执行模块,所述的程序点包括三类:函数入口、函数return语句和分支选择语句;测试执行模块对所有测试用例执行改装后的Java类文件,收集每个测试用例输出的trace文件并输出给成功与失败分类模块;成功与失败分类模块根据测试执行模块中各测试用例执行结果正确与否将所有trace文件分为成功trace文件与失败trace文件,并将这两类trace文件传送给Trace文件解析模块;Trace文件解析模块对所有成功trace文件与所有失败trace文件进行解析处理,将构造的成功执行树形结构集与失败执行树形结构集传递给失败执行交集模块;失败执行交集模块对所有失败执行树形结构求交集,将在每一个失败执行树形结构中都出现的程序点作为缺陷嫌疑点得到失败执行交集,并将失败执行交集与成功执行树形结构集传递给排序模块;排序模块针对失败执行交集中的缺陷嫌疑点,根据每个缺陷嫌疑点在成功执行树形结构集中出现的频率从低到高进行排序,将形成的有序的所有缺陷嫌疑点输出给源代码映射模块;源代码映射模块将有序的所有缺陷嫌疑点映射到Java源代码文件的相应位置,并最终将所有缺陷嫌疑点对应的源代码位置按每个缺陷嫌疑点含有缺陷的可能性从大到小排序后,作为缺陷定位报告显示出来。
2.根据权利要求1所述的一种基于控制流交集的缺陷自动定位装置,其特征在于,所述解析处理后的trace文件将以树形数据结构的形式组织,其中树形结构的根节点是测试用例信息,分支与叶节点是三类程序点信息。
3.根据权利要求1所述的一种基于控制流交集的缺陷自动定位装置,其特征在于,所述频率,其数值等于该缺陷嫌疑点在成功执行树形结构集出现的次数与所有成功测试用例的个数的比值。
4.根据权利要求1或3所述的一种基于控制流交集的缺陷自动定位装置,其特征在于,所述的每个缺陷嫌疑点含有缺陷的可能性,其数值等于1减去频率的值。
5.应用权利要求1所述的缺陷自动定位装置的缺陷自动定位方法,其特征在于,包括以下步骤:
步骤一、类文件改装模块对所有的被测Java类文件改装,在三类程序点:函数入口、函数return语句和分支选择语句,自动加入相应的打印语句;
步骤二、测试执行模块将所有测试用例按照步骤一中改装后的Java类文件执行,并收集每个测试用例输出的trace文件;
步骤三、成功与失败分类模块根据步骤二中各测试用例执行结果正确与否将所有trace文件分为成功trace文件与失败trace文件两类;
步骤四、Trace文件解析模块对trace文件解析,通过构造树形数据结构存储trace信息,Trace文件解析模块解析所有的成功trace文件与所有的失败trace文件后,得到成功执行树形结构集与失败执行树形结构集;
步骤五、失败执行交集模块通过对所有失败执行树形结构求交集,得出程序中所有缺陷嫌疑点的集合;
步骤六、排序模块针对步骤五得到的缺陷嫌疑点,根据它们在成功执行中出现的频率从低到高对它们排序;所述的频率的数值为该缺陷嫌疑点在成功执行树形结构集出现的次数与所有成功测试用例的个数的比值;
步骤七、源代码映射模块将排序后的各缺陷嫌疑点映射到Java源代码文件的相应位置,并将排序后的所有缺陷嫌疑点对应的源代码位置以及每个缺陷嫌疑点含有缺陷的可能性顺序显示出来。
6.根据权利要求5所述的缺陷自动定位方法,其特征在于,步骤四中所述的树形数据结构存储trace信息,具体为:树形结构的根节点是测试用例信息,分支与叶节点是步骤一中的三类程序点信息。
7.根据权利要求5所述的缺陷自动定位方法,其特征在于,步骤五中所述的缺陷嫌疑点指在每一个失败执行树形结构中都出现的程序点。
8.根据权利要求5所述的缺陷自动定位方法,其特征在于,步骤七中所述的可能性,其数值等于1减去步骤六中所述的频率的值。
CN2010102546318A 2010-08-17 2010-08-17 基于控制流交集的缺陷自动定位装置及其自动定位方法 Expired - Fee Related CN101894073B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102546318A CN101894073B (zh) 2010-08-17 2010-08-17 基于控制流交集的缺陷自动定位装置及其自动定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102546318A CN101894073B (zh) 2010-08-17 2010-08-17 基于控制流交集的缺陷自动定位装置及其自动定位方法

Publications (2)

Publication Number Publication Date
CN101894073A CN101894073A (zh) 2010-11-24
CN101894073B true CN101894073B (zh) 2011-11-16

Family

ID=43103267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102546318A Expired - Fee Related CN101894073B (zh) 2010-08-17 2010-08-17 基于控制流交集的缺陷自动定位装置及其自动定位方法

Country Status (1)

Country Link
CN (1) CN101894073B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567162B (zh) * 2010-12-31 2016-01-20 重庆重邮信科通信技术有限公司 一种基于dsp核的物理层系统验证装置及方法
CN103377123B (zh) * 2012-04-25 2016-03-23 腾讯科技(深圳)有限公司 一种网页代码自动化测试方法及装置
CN102789420B (zh) * 2012-07-24 2016-01-20 中国矿业大学 基于程序执行轨迹的动态切片系统
US9569336B2 (en) 2013-03-06 2017-02-14 International Business Machines Corporation System and method for managing traceability suspicion with suspect profiles
CN113064824B (zh) * 2021-03-31 2022-12-02 重庆紫光华山智安科技有限公司 结果分析方法和装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1038221B1 (de) * 1997-12-09 2002-02-13 Siemens Aktiengesellschaft Verfahren zur überprüfung der pfadüberdeckung bei software-tests
CN1809889A (zh) * 2003-06-23 2006-07-26 皇家飞利浦电子股份有限公司 用于记录信息的装置和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1038221B1 (de) * 1997-12-09 2002-02-13 Siemens Aktiengesellschaft Verfahren zur überprüfung der pfadüberdeckung bei software-tests
CN1809889A (zh) * 2003-06-23 2006-07-26 皇家飞利浦电子股份有限公司 用于记录信息的装置和方法

Also Published As

Publication number Publication date
CN101894073A (zh) 2010-11-24

Similar Documents

Publication Publication Date Title
CN101739339B (zh) 一种基于程序动态依赖关系的软件故障定位方法
US7315973B1 (en) Method and apparatus for choosing tests for simulation and associated algorithms and hierarchical bipartite graph data structure
CN101894073B (zh) 基于控制流交集的缺陷自动定位装置及其自动定位方法
US20090132860A1 (en) System and method for rapidly diagnosing bugs of system software
US6993736B2 (en) Pending bug monitors for efficient processor development and debug
Goseva-Popstojanova et al. Large empirical case study of architecture-based software reliability
Lyu et al. An empirical study on testing and fault tolerance for software reliability engineering
CN103823747A (zh) 自动回归测试的方法
CN104794059A (zh) 一种基于函数调用记录的缺陷定位方法及装置
CN105512036A (zh) 根据预置规则自动生成测试用例的测试模板及测试方法
CN101706749B (zh) 基于软件安全缺陷检测的综合处理方法
CN103995780B (zh) 一种基于语句频度统计的程序错误定位方法
CN101231614A (zh) 一种基于执行轨迹块相似度的软件缺陷定位方法
CN103294595A (zh) 一种基于遗传算法的软件修复方法
Polo et al. Integrating techniques and tools for testing automation
CN110347580A (zh) 一种构建非嵌入式软件可靠性测试过程模型的方法
CN105243023B (zh) 并行运行时错误检测方法
CN105975664A (zh) 一种芯片功耗评估平台的评估方法
CN108595312A (zh) 一种模拟用户行为的性能自动化方法及装置
Repinski et al. Combining dynamic slicing and mutation operators for ESL correction
Swain et al. Minimal testcase generation for object-oriented software with state charts
CN104750608A (zh) 一种程序中基于动态符号执行的自动错误定位方法
Mijatov et al. Testing functional requirements in UML activity diagrams
CN112685316A (zh) 代码执行路径的获取方法、装置、计算机设备及存储介质
CN109508204B (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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111116

Termination date: 20130817