CN111831556A - 软件多故障解耦及并行定位方法及装置 - Google Patents

软件多故障解耦及并行定位方法及装置 Download PDF

Info

Publication number
CN111831556A
CN111831556A CN202010559375.7A CN202010559375A CN111831556A CN 111831556 A CN111831556 A CN 111831556A CN 202010559375 A CN202010559375 A CN 202010559375A CN 111831556 A CN111831556 A CN 111831556A
Authority
CN
China
Prior art keywords
test case
failed test
failed
program
fault
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.)
Pending
Application number
CN202010559375.7A
Other languages
English (en)
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.)
Technology and Engineering Center for Space Utilization of CAS
Original Assignee
Technology and Engineering Center for Space Utilization of CAS
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 Technology and Engineering Center for Space Utilization of CAS filed Critical Technology and Engineering Center for Space Utilization of CAS
Priority to CN202010559375.7A priority Critical patent/CN111831556A/zh
Publication of CN111831556A publication Critical patent/CN111831556A/zh
Pending legal-status Critical Current

Links

Images

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/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

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)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种软件多故障解耦及并行定位方法及装置,涉及软件故障定位领域。该方法基于失败测试用例相似度分析及聚类方法构造测试用例子集,针对不同故障的测试用例进行分离后进行并行定位,从而将多故障问题转化为单故障问题,在很大程序上减弱了不同故障之间互相影响,有助于大幅提升故障定位效率和定位精准度,从而解决了软件多故障定位不准确、故障定位效率低等问题。并且本发明具有较好的普适性,可应用于多种运行平台、多种编程语言的软件故障定位中,适用于医疗、交通、通信、航空航天、军事、核能等关键技术领域的软件多故障定位。

Description

软件多故障解耦及并行定位方法及装置
技术领域
本发明涉及软件故障定位领域,尤其涉及一种软件多故障解耦及并行定位方法及装置。
背景技术
目前,随着各行业对软件功能的需求越来越高,导致软件规模和复杂性都不断攀升,尤其在许多关键技术领域,例如医疗、交通、通信、航空航天、军事、核能等领域,软件更加复杂,出现故障概率也大大增加。软件故障的产生原因是复杂的,在软件开发、测试及维护过程中,由于开发人员的设计、编程错误等原因,都可能导致故障。国内外大量统计数据资料表明,软件故障的主要根源来自软件内部的错误或缺陷,这些故障源并不是独立存在的个体,它们之间相互联系、相互影响,由此可能引起更复杂的交互行为。软件在运行过程中,若缺陷被激活而只产生了一个故障,称为单故障;若在同一时间或较短的时间间隔内发生多个故障,称为多故障,或并发故障。
虽然国内外的研究学者对软件故障定位问题提出了很多可行的方法和技术,但是大多数方法和技术都集中在单故障定位,即假定程序中只存在一个故障,并没有考虑故障与故障之间的关系,关于多故障的定位方法研究比较少,并且研究成果相对有限。现有的故障定位技术在单故障定位方面表现出比较好的效果,但在多故障的环境下,故障定位能力的正确率和效率明显不足。
发明内容
本发明所要解决的技术问题是针对软件多故障定位不准确、故障定位效率低等实际问题,提供一种软件多故障解耦及并行定位方法及装置,有效提升复杂多故障软件的故障定位及诊断效率,保障软件产品质量。
本发明解决上述技术问题的技术方案如下:
一种软件多故障解耦及并行定位方法,包括:
步骤1,通过待测试程序运行测试用例集,得到每个测试用例的测试结果,并获取所述测试用例集在所述待测试程序上的覆盖频次信息;
步骤2,根据所述测试结果和所述覆盖频次信息确定覆盖所述待测试程序的失败测试用例集和成功测试用例集;
步骤3,根据失败测试用例对所述待测试程序中全部程序实体的覆盖频次,对所述失败测试用例集中的失败测试用例进行聚类,构造失败测试用例子集簇;
步骤4,将得到的每个失败测试用例子集簇分别与所述成功测试用例集中的成功测试用例进行组合,得到测试用例子集;
步骤5,根据怀疑度公式计算每个测试用例子集的怀疑度并排序,按照怀疑度的顺序检查对应程序实体的代码,定位缺陷。
本发明解决上述技术问题的另一种技术方案如下:
一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如上述技术方案所述的软件多故障解耦及并行定位方法。
本发明解决上述技术问题的另一种技术方案如下:
一种软件多故障解耦及并行定位装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,实现如上述技术方案所述的软件多故障解耦及并行定位方法。
本发明的有益效果是:本发明基于失败测试用例相似度分析及聚类方法构造测试用例子集,针对不同故障的测试用例进行分离后进行并行定位,从而将多故障问题转化为单故障问题,在很大程序上减弱了不同故障之间互相影响,有助于大幅提升故障定位效率和定位精准度,从而解决了软件多故障定位不准确、故障定位效率低等问题。并且本发明具有较好的普适性,可应用于多种运行平台、多种编程语言的软件故障定位中。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
图1为本发明软件多故障解耦及并行定位方法的实施例提供的流程示意图;
图2为本发明软件多故障解耦及并行定位方法的实施例提供的测试用例集中的一个失败测试用例对待测试程序各代码行的覆盖频次信息示意图;
图3为本发明软件多故障解耦及并行定位方法的实施例提供的测试用例集中所有失败测试用例对待测试程序各代码行的覆盖频次信息示意图;
图4为本发明软件多故障解耦及并行定位方法的实施例提供的待测试程序各代码行的怀疑度排序示意图;
图5为本发明软件多故障解耦及并行定位方法的实施例提供的定位结果对比示意图;
图6为本发明软件多故障解耦及并行定位装置的实施例提供的结构框架图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实施例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,为本发明软件多故障解耦及并行定位方法的实施例提供的流程示意图,该方法适用于医疗、交通、通信、航空航天、军事、核能等关键技术领域的软件多故障定位,包括:
S1,通过待测试程序运行测试用例集,得到每个测试用例的测试结果,并获取测试用例集在待测试程序上的覆盖频次信息;
应理解,待测试程序可以包括至少一个程序实体,测试用例集中包含至少一个测试用例,覆盖频次信息可以为各程序实体被每个测试用例经过的次数。
例如,假设被测程序用P来表示,程序P包含n个程序实体,假设Pi为程序P的第i个程序实体,i=1,2,3,……,n,那么程序P可以表示为P={P1,P2,……,Pn}。
假设测试用例集用T来表示,测试用例集T包含m个程序实体,假设Tj为测试用例集T的第j个程序实体,j=1,2,3,……,m,那么测试用例集T可以表示为T={T1,T2,……,Tm}。
那么通过获取待测试程序的动态执行信息,构造出程序频谱矩阵:
Figure BDA0002545523340000041
其中,矩阵M1和M2分别表示测试用例集T在程序P上的覆盖信息和覆盖频次信息,其中,M1矩阵中各点的值为布尔变量,M1ij=1表示测试用例集T中第j个测试用例执行过程中,至少一次执行了程序P中的第i个程序实体;M1ij=0则表示测试用例集T中第j个测试用例执行过程中,从未执行过程序P中第i个程序实体。M2矩阵中的各点表示各程序实体被测试用例经过的次数,对M2中各点的值,有M2ij=x,x≥0,其中,x表示程序P中第i个程序实体被测试用例集T中第j个测试用例执行的次数。
以被测软件Flex V1版本中某个失败测试用例对软件各代码行的覆盖频次为例,如图2所示,提供了一种示例性的一个失败测试用例对待测试程序各代码行的覆盖频次信息示意图,其中DA代表代码行的覆盖频次,中间的数字代表代码行号,最右边的数字代表该测试用例执行该代码行的次数。
如图3所示,提供了一种示例性的所有失败测试用例对待测试程序各代码行的覆盖频次信息示意图,其中,数列为每个测试用例的编号,横行为代码行号,中间的数据为对应测试用例执行对应代码行的次数。
S2,根据测试结果和覆盖频次信息确定覆盖待测试程序的失败测试用例集和成功测试用例集;
可选地,可以将测试用例实际执行结果与预期输出进行对比,并用矩阵RE表示:
RE:(RE1 RE2 ... REm)
其中,REj=p表示测试用例集T中第j个测试用例的执行结果为成功(pass),REj=f表示测试用例集T中第j个测试用例执行结果为失败(fail)。
基于各个测试用例的覆盖频次信息和执行结果,可以用四元矩阵N=<nep(P),nef(P),nnp(P),nnf(P)>来表示。其中,nep(P)和nef(P)分别表示覆盖各程序实体的成功测试用例数和失败测试用例数,nnp(P)和nnf(P)分别表示未覆盖各程序实体的成功测试用例数和失败测试用例数。
S3,根据失败测试用例对待测试程序中全部程序实体的覆盖频次,对失败测试用例集中的失败测试用例进行聚类,构造失败测试用例子集簇;
应理解,此步骤可以使用nef(P)进行数据处理。
S4,将得到的每个失败测试用例子集簇分别与成功测试用例集中的成功测试用例进行组合,得到测试用例子集;
应理解,假设得到的失败测试用例子集簇为k个,那么经过与成功测试用例进行组合后,得到的测试用例子集也为k个。
例如,假设失败测试用例子集簇包括:失败测试用例集包括TF1、TF2和TF3,每个失败测试用例集包括多个失败测试用例,成功测试用例集中包括:成功测试用例P1、P2和P3,那么可以按照如下方式进行组合:
将成功测试用例P1、P2和P3添加到失败测试用例集TF1中,得到第一个测试用例子集;将成功测试用例P1、P2和P3添加到失败测试用例集TF2中,得到第二个测试用例子集;将成功测试用例P1、P2和P3添加到失败测试用例集TF3中,得到第三个测试用例子集。
S5,根据怀疑度公式计算每个测试用例子集的怀疑度并排序,按照怀疑度的顺序检查对应程序实体的代码,定位缺陷。
优选地,可以选择Ochiai怀疑度计算公式计算每个测试用例子集的怀疑度。
如图4所示,以对被测程序Flex进行测试为例,给出了一种示例性的怀疑度排序方式,其中,双引号内的数值为代码行数,其后的小数为怀疑度,例如,以第一行数据为例,“5015”表示第5015行代码,0.516798553927557表示第5015行代码的怀疑度。可以按照怀疑度的数值从大到小降序排列,构造出每个测试用例集所对应的怀疑度的降序排名表。排名靠前,说明语句发生错误的可能性大,即可能是错误语句;相反,若语句的排名靠后,则说明该语句发生错误的可能性小。根据怀疑度列表对程序实体进行故障排查,直到找出所有故障语句。在得到所有错误软件版本的怀疑度列表后,根据怀疑度列表对程序实体进行故障排查。
为验证本发明方法的定位效果,本实施例运用本发明提出的方法对实验软件进行缺陷定位后,与传统定位方法的定位效果进行对比和评价。
大多数单故障定位技术使用基于怀疑度排名的度量:故障定位代价Expense,来评价定位效果,即定位错误所需要检查的语句数占所有可执行代码总行数的百分比,具体公式如下:
Figure BDA0002545523340000071
其中,Rank表示缺陷语句在怀疑度列表中的排名,n表示怀疑度列表中所有代码行的数目。
该标准在衡量单故障定位效果方面得到了广泛的使用和验证,但是不完全适用于多故障定位中。因此,本发明可以采用第一个缺陷定位的Expense以及定位到最后一个植入缺陷的Expense来衡量多故障的定位效果。其中,第一个缺陷定位的Expense的计算方法如下:
Figure BDA0002545523340000072
定位到最后一个植入缺陷的Expense的计算方法如下:
Figure BDA0002545523340000073
其中,n为缺陷总数,Linesfi表示按照怀疑度列表定位到缺陷i所需检查的代码集合,Count(Linesfi)表示代码集合Linesfi中代码总行数,即定位到缺陷i所需检查的代码行数。
在本实施例中,将本发明提出的多故障并行定位方法与传统的缺陷定位方法进行对比,如图5所示,为对比结果示意图,其中,Group1-Group12分别代表对Flex程序构建的12组程序频谱,“Ochiai”和“Jaccard”分别代表传统的Ochiai和Jaccard故障定位方法,“Multi-Fault”代表发明提出的多故障解耦及并行定位方法。
比对结果表明,本发明提出的多故障解耦及并行定位方法相比传统定位算法,定位到第一个缺陷的时间成本平均为0.78%,相对于传统的Ochiai故障定位方法的平均时间成本(11.36%)和Jaccard的故障定位方法的平均时间成本(11.74%),分别提升了93.16%和93.39%;定位到所有缺陷的平均时间成本为9.31%,相对于传统的Ochiai故障定位的平均时间成本(43.21%)和Jaccard故障定位方法的平均时间成本(43.83%),分别提升了78.46%和78.77%。
本发明方法计算简单,适用于不同类型的编程语言,以及不同规模的计算机软件,具有扩展性和适应性;能够快速有效地分析和处理程序信息,提高软件测试和缺陷定位的性能和效率。
本实施例基于失败测试用例相似度分析及聚类方法构造测试用例子集,针对不同故障的测试用例进行分离后进行并行定位,从而将多故障问题转化为单故障问题,在很大程序上减弱了不同故障之间互相影响,有助于大幅提升故障定位效率和定位精准度,从而解决了软件多故障定位不准确、故障定位效率低等问题。并且本发明具有较好的普适性,可应用于多种运行平台、多种编程语言的软件故障定位中。
可选地,在一些可能的实施方式中,通过待测试程序运行测试用例集之前,还包括:
对待测试程序进行插装,将待测试程序的源码经过编译预处理,生成可执行文件。
可选地,可以采用Gcov对被测程序进行插装。Gcov是一个用来获取程序执行覆盖情况的实用工具,与GCC配合使用。编译前,在编译器中加入编译器参数-fprofile-arcs-ftest-coverage;源码经过编译预处理,在生成汇编文件的同时完成插桩;最后,汇编文件生成目标文件,继而生成可执行文件。
可选地,在一些可能的实施例中,获取测试用例集在待测试程序上的覆盖频次信息,具体包括:
获取待测试程序在运行测试用例集时的动态执行信息;
根据动态执行信息构造第一频谱矩阵和第二频谱矩阵,其中,第一频谱矩阵中的元素表示每个测试用例是否覆盖每个程序实体,第二频谱矩阵中的元素表示每个程序实体被每个测试用例覆盖的次数。
其中,第一频谱矩阵可以为上述实施例中的矩阵M1,第二频谱矩阵可以为上述实施例中的矩阵M2,在此不再赘述。
通过动态执行信息构建程序频谱矩阵,能够得到较为准确的覆盖频次信息,并且数据获取过程简单高效。
可选地,在一些可能的实施方式中,根据失败测试用例对待测试程序中全部程序实体的覆盖频次,对失败测试用例集中的失败测试用例进行聚类之前,还包括:
通过Z-score标准化方法对失败测试用例的覆盖频次进行数据标准化处理。
应理解,由于各程序实体被覆盖的次数差异很大,为了消除指标之间的量纲影响,通过对失败测试用例的覆盖频次进行数据标准化处理,能够使得数据指标处于同一数量级,以便进行进一步分析和计算。
可选地,假设失败测试用例集TF中的测试用例TFx对程序实体{P1、P2、…Pi…Pn(1≤i≤n)}的覆盖频次为tx=(x1,x2,...,xi,...xn)(1≤i≤n),其中xi表示程序实体Pi(1≤i≤n)被失败测试用例TFx覆盖的次数,采用Z-score标准化方法对tx中的覆盖频次进行处理,转化函数为:
Figure BDA0002545523340000091
其中,μ为测试用例集TF中的失败测试用例对程序实体Pi(1≤i≤n)覆盖频次数据的均值,σ为测试用例集TF中的失败测试用例对程序实体Pi(1≤i≤n)覆盖频次数据的标准差。
通过Z-score标准化方法对数据进行标准化处理,使数据处于同一量级,能够提高数据的处理速度,进而提高故障的定位速度和精度。
应理解,后续处理过程可以基于标准化处理后的失败测试用例集TF实现,在后续步骤中,不再一一说明。
可选地,在一些可能的实施方式中,步骤3具体包括:
步骤31,从失败测试用例集中选择预设数量的失败测试用例作为初始簇中心;
步骤32,计算失败测试用例集中剩余的失败测试用例与每个初始簇中心的欧式距离,根据欧式距离将剩余的失败测试用例划分到对应的测试用例簇中;
步骤33,重新计算每个测试用例簇中的失败测试用例覆盖频次的平均值,将平均值作为新的簇中心,根据新的簇中心计算每个测试用例簇的总方差;
步骤34,重复步骤32和步骤33,直到每个测试用例簇的总方差不再发生变化,此时得到的失败测试用例子集簇为最终聚类结果。
可选地,总方差S2可以根据如下方式计算:
Figure BDA0002545523340000101
其中,失败测试用例集TF被划分为k个簇,每个簇包含ki个测试用例,x1ij、x2ij.....xnij表示第i(1≤i≤k)个失败测试用例簇中的j(1≤j≤ki)个测试用例分别对于程序P中的第n个程序实体的覆盖频次,
Figure BDA0002545523340000102
表示第i(1≤i≤k)个失败测试用例簇中所有测试用例分别对于程序P中的第n个程序实体的覆盖频次信息的均值,即第i个簇的中心。
通过上述方式进行聚类,通过重新计算每个测试用例簇中的失败测试用例覆盖频次的平均值,将平均值作为新的簇中心,然后判断其方差的变化情况,最为最终聚类结果的判断标准,引入了覆盖频次这一参考量,能够使定位结果更加准确的反映出故障结果,聚类的可信度更高,从而能够适用于多故障解耦与并行定位。
可选地,在一些可能的实施方式中,步骤31具体包括:
步骤311,按照预设规则从失败测试用例集中选择一个基准失败测试用例;
步骤312,计算失败测试用例集中剩余失败测试用例与基准失败测试用例之间的欧式距离;
例如,可以通过以下方式计算欧式距离:
Figure BDA0002545523340000111
其中,ai、bi分别代表采用Z-score标准化方法转换后,测试用例ta和tb对程序实体Pi(1≤i≤n)的覆盖频次,ta=(a1,a2,...,an),tb=(b1,b2,...,bn)。
步骤313,根据欧式距离计算剩余失败测试用例与基准失败测试用例之间的平均距离;
例如,可以通过以下方式计算平均距离:
Figure BDA0002545523340000112
其中,
Figure BDA0002545523340000113
为剩余失败测试用例与基准失败测试用例组成的测试用例对的数量。
步骤314,根据欧式距离和平均距离确定基准失败测试用例的临近点的数量;
例如,可以通过以下方式确定临近点的数量:
Figure BDA0002545523340000114
其中,f(z)的函数表达式为:
Figure BDA0002545523340000115
步骤315,从失败测试用例集除基准失败测试用例之外的剩余失败测试用例中继续选择新的基准失败用例,重复步骤311至步骤315,直到得到失败测试用例集中全部失败测试用例的临近点的数量;
例如,假设失败测试用例集中包含失败测试用例TF1、TF2和TF3,那么可以首先选择TF1作为基准失败测试用例,分别计算TF2与TF1之间的欧氏距离l21,以及TF3与TF1之间的欧式距离l31,然后根据欧氏距离l21和欧式距离l31计算二者的平均值,再分别将欧氏距离l21和欧式距离l31与平均值进行比较,假设欧氏距离l21小于平均值,欧氏距离l31大于平均值,那么表明失败测试用例TF2为基准失败测试用例TF1的临近点,此时,可以得到基准失败测试用例TF1的临近点数量为1。
通过相同的方法,再分别将TF2和TF3作为基准失败测试用例,计算TF2和TF3的临近点数量,就能够得到全部失败测试用例的临近点的数量。
步骤316,将失败测试用例集中全部失败测试用例依据临近点的数量进行排序,从失败测试用例集中取出临近点的数量最多的失败测试用例作为初始簇中心,并从失败测试用例集中取出临近点的数量最少的失败测试用例作为初始簇中心;
步骤317,重复步骤316,直到初始簇中心的数量达到预设数量。
通过上述方式确定初始簇中心可靠性更高,能够便于后续分析,提高故障定位的准确度和速度。
可选地,在一些可能的实施方式中,步骤314具体包括:
分别判断每个剩余失败测试用例与基准失败测试用例之间的欧式距离是否小于平均距离,其中,欧式距离小于平均距离的剩余失败测试用例为基准失败测试用例的临近点,统计得到基准失败测试用例的临近点的数量。
可选地,在一些可能的实施方式中,步骤32具体包括:
计算失败测试用例集中剩余的失败测试用例与每个初始簇中心的欧式距离,将剩余的失败测试用例划分到欧式距离最小的初始簇中心对应的测试用例簇中。
例如,假设失败测试用例集中包含失败测试用例TF1、TF2、TF3、TF4和TF5,初始簇中心为TF2和TF4,分别计算TF1与TF2之间的欧式距离,TF1与TF4之间的欧式距离,假设TF1与TF2之间的欧式距离比TF1与TF4之间的欧式距离更小,那么可以将TF1划分到TF2对应的测试用例簇中。
通过相同的方式继续对TF3和TF5进行划分,就能够得到最终的划分结果,假设TF3和TF5均与TF4较近,那么划分结果可以为:
第一测试用例簇:包括TF1与TF2
第二测试用例簇:包括TF3、TF4和TF5
可以理解,在一些实施方式中,可以包含如上述各实施方式中的部分或全部。
本发明还提供一种存储介质,存储介质中存储有指令,当计算机读取指令时,使计算机执行如上述任意实施方式的软件多故障解耦及并行定位方法。
本发明还提供一种软件多故障解耦及并行定位装置,如图6所示,包括:
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序,实现如上述任意实施方式的软件多故障解耦及并行定位方法。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例仅仅是示意性的,例如,步骤的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个步骤可以结合或者可以集成到另一个步骤,或一些特征可以忽略,或不执行。
上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种软件多故障解耦及并行定位方法,其特征在于,包括:
步骤1,通过待测试程序运行测试用例集,得到每个测试用例的测试结果,并获取所述测试用例集在所述待测试程序上的覆盖频次信息;
步骤2,根据所述测试结果和所述覆盖频次信息确定覆盖所述待测试程序的失败测试用例集和成功测试用例集;
步骤3,根据失败测试用例对所述待测试程序中全部程序实体的覆盖频次,对所述失败测试用例集中的失败测试用例进行聚类,构造失败测试用例子集簇;
步骤4,将得到的每个失败测试用例子集簇分别与所述成功测试用例集中的成功测试用例进行组合,得到测试用例子集;
步骤5,根据怀疑度公式计算每个测试用例子集的怀疑度并排序,按照怀疑度的顺序检查对应程序实体的代码,定位缺陷。
2.根据权利要求1所述的软件多故障解耦及并行定位方法,其特征在于,通过待测试程序运行测试用例集之前,还包括:
对待测试程序进行插装,将所述待测试程序的源码经过编译预处理,生成可执行文件。
3.根据权利要求1所述的软件多故障解耦及并行定位方法,其特征在于,获取所述测试用例集在所述待测试程序上的覆盖频次信息,具体包括:
获取所述待测试程序在运行所述测试用例集时的动态执行信息;
根据所述动态执行信息构造第一频谱矩阵和第二频谱矩阵,其中,所述第一频谱矩阵中的元素表示每个测试用例是否覆盖每个程序实体,所述第二频谱矩阵中的元素表示每个程序实体被每个测试用例覆盖的次数。
4.根据权利要求1所述的软件多故障解耦及并行定位方法,其特征在于,根据失败测试用例对所述待测试程序中全部程序实体的覆盖频次,对所述失败测试用例集中的失败测试用例进行聚类之前,还包括:
通过Z-score标准化方法对所述失败测试用例的覆盖频次进行数据标准化处理。
5.根据权利要求1至4中任一项所述的软件多故障解耦及并行定位方法,其特征在于,步骤3具体包括:
步骤31,从所述失败测试用例集中选择预设数量的失败测试用例作为初始簇中心;
步骤32,计算所述失败测试用例集中剩余的失败测试用例与每个所述初始簇中心的欧式距离,根据所述欧式距离将所述剩余的失败测试用例划分到对应的测试用例簇中;
步骤33,重新计算每个测试用例簇中的失败测试用例覆盖频次的平均值,将所述平均值作为新的簇中心,根据所述新的簇中心计算每个所述测试用例簇的总方差;
步骤34,重复步骤32和步骤33,直到每个所述测试用例簇的总方差不再发生变化,此时得到的失败测试用例子集簇为最终聚类结果。
6.根据权利要求5所述的软件多故障解耦及并行定位方法,其特征在于,步骤31具体包括:
步骤311,按照预设规则从所述失败测试用例集中选择一个基准失败测试用例;
步骤312,计算所述失败测试用例集中剩余失败测试用例与所述基准失败测试用例之间的欧式距离;
步骤313,根据所述欧式距离计算所述剩余失败测试用例与所述基准失败测试用例之间的平均距离;
步骤314,根据所述欧式距离和所述平均距离确定所述基准失败测试用例的临近点的数量;
步骤315,从所述失败测试用例集除所述基准失败测试用例之外的剩余失败测试用例中继续选择新的基准失败用例,重复步骤311至步骤315,直到得到所述失败测试用例集中全部失败测试用例的临近点的数量;
步骤316,将所述失败测试用例集中全部失败测试用例依据所述临近点的数量进行排序,从所述失败测试用例集中取出临近点的数量最多的失败测试用例作为初始簇中心,并从所述失败测试用例集中取出临近点的数量最少的失败测试用例作为初始簇中心;
步骤317,重复步骤316,直到所述初始簇中心的数量达到预设数量。
7.根据权利要求6所述的软件多故障解耦及并行定位方法,其特征在于,步骤314具体包括:
分别判断每个所述剩余失败测试用例与所述基准失败测试用例之间的欧式距离是否小于所述平均距离,其中,欧式距离小于所述平均距离的剩余失败测试用例为所述基准失败测试用例的临近点,统计得到所述基准失败测试用例的临近点的数量。
8.根据权利要求5所述的软件多故障解耦及并行定位方法,其特征在于,步骤32具体包括:
计算所述失败测试用例集中剩余的失败测试用例与每个所述初始簇中心的欧式距离,将所述剩余的失败测试用例划分到欧式距离最小的初始簇中心对应的测试用例簇中。
9.一种存储介质,其特征在于,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如权利要求1至8中任一项所述的软件多故障解耦及并行定位方法。
10.一种软件多故障解耦及并行定位装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,实现如权利要求1至8中任一项所述的软件多故障解耦及并行定位方法。
CN202010559375.7A 2020-06-18 2020-06-18 软件多故障解耦及并行定位方法及装置 Pending CN111831556A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010559375.7A CN111831556A (zh) 2020-06-18 2020-06-18 软件多故障解耦及并行定位方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010559375.7A CN111831556A (zh) 2020-06-18 2020-06-18 软件多故障解耦及并行定位方法及装置

Publications (1)

Publication Number Publication Date
CN111831556A true CN111831556A (zh) 2020-10-27

Family

ID=72899179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010559375.7A Pending CN111831556A (zh) 2020-06-18 2020-06-18 软件多故障解耦及并行定位方法及装置

Country Status (1)

Country Link
CN (1) CN111831556A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113392000A (zh) * 2021-06-10 2021-09-14 卫宁健康科技集团股份有限公司 测试用例执行结果分析方法、装置、设备及存储介质
CN114826876A (zh) * 2022-01-11 2022-07-29 杭州金硕信息技术有限公司 一种基于日志分析和在线仿真的云服务故障检测系统及方法
CN115185814A (zh) * 2022-06-13 2022-10-14 中南大学 一种基于二维程序频谱的多缺陷定位方法、系统及设备
CN116088863A (zh) * 2023-04-04 2023-05-09 阿里云计算有限公司 故障定位方法及系统
CN117130945A (zh) * 2023-10-26 2023-11-28 中国证券登记结算有限责任公司 一种测试方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
CN110362484A (zh) * 2019-07-03 2019-10-22 北京航空航天大学 软件多故障的定位方法、装置、电子设备以及存储介质
CN111258901A (zh) * 2020-01-17 2020-06-09 北京科技大学 一种微服务组合程序的故障定位方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
CN110362484A (zh) * 2019-07-03 2019-10-22 北京航空航天大学 软件多故障的定位方法、装置、电子设备以及存储介质
CN111258901A (zh) * 2020-01-17 2020-06-09 北京科技大学 一种微服务组合程序的故障定位方法及系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113392000A (zh) * 2021-06-10 2021-09-14 卫宁健康科技集团股份有限公司 测试用例执行结果分析方法、装置、设备及存储介质
CN113392000B (zh) * 2021-06-10 2024-01-30 卫宁健康科技集团股份有限公司 测试用例执行结果分析方法、装置、设备及存储介质
CN114826876A (zh) * 2022-01-11 2022-07-29 杭州金硕信息技术有限公司 一种基于日志分析和在线仿真的云服务故障检测系统及方法
CN114826876B (zh) * 2022-01-11 2024-05-03 杭州金硕信息技术有限公司 一种基于日志分析和在线仿真的云服务故障检测系统及方法
CN115185814A (zh) * 2022-06-13 2022-10-14 中南大学 一种基于二维程序频谱的多缺陷定位方法、系统及设备
CN115185814B (zh) * 2022-06-13 2024-05-21 中南大学 一种基于二维程序频谱的多缺陷定位方法、系统及设备
CN116088863A (zh) * 2023-04-04 2023-05-09 阿里云计算有限公司 故障定位方法及系统
CN116088863B (zh) * 2023-04-04 2023-09-26 阿里云计算有限公司 故障定位方法及系统
CN117130945A (zh) * 2023-10-26 2023-11-28 中国证券登记结算有限责任公司 一种测试方法和装置
CN117130945B (zh) * 2023-10-26 2024-02-09 中国证券登记结算有限责任公司 一种测试方法和装置

Similar Documents

Publication Publication Date Title
CN111831556A (zh) 软件多故障解耦及并行定位方法及装置
Daka et al. Generating unit tests with descriptive names or: Would you name your children thing1 and thing2?
CN110362484B (zh) 软件多故障的定位方法、装置、电子设备以及存储介质
Zhang et al. Non-parametric statistical fault localization
JP6062933B2 (ja) 即時提出結果の最適qc法を決定するためのシステムと方法
CN107168995B (zh) 一种数据处理方法及服务器
Lyu et al. An empirical study on testing and fault tolerance for software reliability engineering
Gonzalez‐Sanchez et al. Prioritizing tests for software fault diagnosis
CN110083514B (zh) 软件测试缺陷评估方法、装置、计算机设备及存储介质
CN105760295A (zh) 基于搜索算法的多缺陷定位方法
US20090217246A1 (en) Evaluating Software Programming Skills
Xie et al. Essential spectrum-based fault localization
CN103019943B (zh) 一种面向失败测试用例稀少情况的软件错误定位方法
Jain et al. Contextual Predictive Mutation Testing
CN111880957A (zh) 一种基于随机森林模型的程序错误定位方法
Patel et al. An information theoretic notion of software testability
CN108304330B (zh) 内容提取方法、装置和计算机设备
Bodhe et al. Diagnostic Fail Data Minimization Using an $ N $-Cover Algorithm
CN115827353A (zh) 故障诊断方法及装置
Chu et al. FAST: a framework for automating statistics-based testing
Shaikh et al. A Learning-Based Fault Localization Approach Using Subset of Likely and Dynamic Invariants.
Nagy et al. An Enhanced Approach for Test Suite Reduction Using Clustering and Genetic Algorithms
Liu et al. Improving spectrum-based fault localization using quality assessment and optimization of a test suite
CN111274129A (zh) 一种基于动态程序失效执行块的程序错误定位方法
Sarhan et al. New ranking formulas to improve spectrum based fault localization via systematic search

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20201027

RJ01 Rejection of invention patent application after publication