共查询到17条相似文献,搜索用时 62 毫秒
1.
何海江 《计算机工程与科学》2022,44(12):2187-2195
在程序调试过程中,基于程序谱的软件错误定位(SBFL)技术能提供有效的帮助。为改善SBFL的性能,提出一种组合程序谱、代码行静态属性的软件错误定位排序学习方法,由线性排序支持向量机学习最优错误定位模型。代码行静态属性包括局部变量、类属性、逻辑运算符和方法调用等程序实体的个数。在使用C、C++和Java语言开发的22个实际故障项目上,采用跨工程的形式训练错误定位模型。实验结果表明,新方法比最优SBFL减少了37.1%的最坏策略EXAM和22.6%的平均策略EXAM。还比较了程序语句的3类轻量级特征:结构化类别、变量谱和静态属性。新方法的时间复杂度低,能实时地推荐可能出现故障的语句序列。 相似文献
2.
传统的软件错误定位技术通常利用测试覆盖信息计算程序语句发生错误的可疑度进行软件错误定位,但是这种定位技术没有充分考虑程序本身固有的依赖信息,缺乏语句筛选,从而使错误定位的精度受限.提出了一种基于层次切片谱的错误定位技术,以提高面向对象程序中的错误定位效率.这种技术首先分析程序不同粒度层次元素(包、类、方法以及语句)之间的依赖信息,对可能发生错误的元素进行筛选,缩小错误查找范围;在此基础上,建立了层次切片谱模型,并定义了一种可疑度度量方法;最后根据该可疑度结果从大到小的顺序进行错误定位.通过实验验证了基于层次切片谱的错误定位技术的有效性,且比基于程序谱的Tarantula 技术、Union 技术、Intersection 技术效率更高. 相似文献
3.
故障定位是软件调试过程中一项耗时耗力的工作,自动化查错的应用对于提高软件调试效率具有重要的现实意义。近年来,基于程序谱的故障定位方法得到了研究人员的大量关注。针对单错误现象,提出了基于改良程序谱的软件故障定位新方法,该方法基于“在单错误情况下,若测试用例运行错误,则该测试用例运行必定覆盖了故障语句”这一论断,将所有的故障测试用例对程序语句的覆盖情况做交运算,从而得到故障基,再利用故障基定位故障。最后,以西门子测试程序集为测试数据,对比了不同方法对故障定位的效果和效率的影响,其结果表明所提出的方法可以有效地提高故障定位的效果和效率。 相似文献
4.
针对基于程序谱错误定位方法完全依赖于测试用例的语句覆盖信息导致错误定位效率低下的问题,提出了一种基于变异测试技术的程序谱错误定位方法。在原有语句怀疑度计算方法的基础上,增加了程序变异后执行结果与原程序执行结果不同的测试用例变化情况的分析。此外,为解决程序变异后产生的变异体数量巨大而导致执行代价过大的问题,提出了根据变异位置约简变异体的策略。实验结果表明,与几种基于程序谱的程序错误定位方法相比,该方法的错误定位代价最低,能有效提高错误定位的效率。 相似文献
5.
在软件开发中,错误定位是修复软件缺陷的必要前提.为此,研究者们提出了一系列自动化的错误定位方法.这些方法利用了测试用例运行时的覆盖路径和运行结果等信息,大幅减少了定位错误代码的难度.在竞争性众包软件开发中,往往存在多个竞争性实现(解决方案),提出一种专门面向众包软件工程的错误定位方法.主要思想是,在定位错误语句时,将其多个竞争性实现作为参考程序.针对程序中的各个语句,在参考程序中搜索参考语句,并利用参考语句计算其错误概率.给定一个错误程序和相应的测试用例,首先运行测试用例并使用广泛流行的基于频谱的错误定位方法计算其初始错误概率.然后,根据此语句与其参考语句的相似性调整错误概率.在118个真实的错误程序上进行实验,结果表明所提方法相比基于频谱的方法,定位错误的成本降低了25%以上. 相似文献
6.
何海江 《计算机工程与应用》2017,53(21):42-48
基于谱的错误定位(SBFL)方法能帮助程序员减小软件调试的困难。作为一种轻量方法,SBFL只需收集测试用例的覆盖信息和测试结果,计算程序每条语句的运行特征。众多SBFL方法,将四个运行特征组合成不同的可疑度计算公式。然而,这些公式受固定参数的影响,无法适应不同的程序集。因此,提出一种机器学习方法,能自动确定特定程序集的可疑度计算公式。首先,收集已标注错误语句的程序旧版本;再将错误语句与正确语句的运行特征两两相减,构造为训练集的一个样本;最后基于Weka的分类算法,学习到线性函数,作为该程序的错误定位模型。在Siemens程序包、space和gzip三个基准数据集上,使用Logistic、SGD、SMO和LibLinear学习到的模型,性能都要优于SBFL方法。 相似文献
7.
软件错误定位技术旨在通过挖掘程序与测试用例执行数据,提升定位准确性。针对SBFL技术过于依赖二进制覆盖信息的问题,提出一种基于图可解释网络的软件错误定位方法,将测试执行转化为图结构,利用图注意网络建模深度挖掘代码片段隐含的信息及其相互关系,并采用强化学习思想对图注意力网络学习后的决策过程进行解释,从而确定关键节点,缩小错误定位范围。实验的场景设立在Defects4j数据集的5个项目进行了,并与SBFL及未经过解释的深度学习方法进行了对比。结果显示,基于图可解释网络的定位方法在Top-1、Top-3和Top-5指标上分别提升了7.26%、7.56%和9.96%,EXAM指数也提升了8.98%,显著优于其他方法。 相似文献
8.
罗奇鸣 《小型微型计算机系统》2013,34(2):324-327
自动故障定位对于提高软件调试的效率有重要意义.本文提出利用语句、数据流和控制流的频谱信息并基于局部最优性生成和计算语句序列的可疑度,并综合语句所在序列的可疑度和语句的可疑度以获得语句的最终可疑度排序.在西门子测试程序集上与两种基于语句可疑度的故障定位方法做了实验性能比较,结果验证了所提出方法的有效性. 相似文献
9.
在实际调试中,程序员往往通过追溯错误的变量值及其传播来定位软件错误,其中具有错误值的变量称为感染变量,感染变量在失败运行中具有错误值的程序位置即为感染位置。提出了一种结合动态正向程序切片和语句覆盖信息对程序变量感染的初始位置进行定位的技术。该技术通过分析感染变量的起源与传播,可以更加精确地找到与感染变量相关的错误语句集合。与传统的基于程序覆盖信息的错误定位技术进行了对比实验,结果表明,该技术可定位程序中的感染变量及其初始感染位置,并且可以显著提高程序错误定位的精度。 相似文献
10.
11.
错误定位是软件调试的重要环节,基于切片谱的统计错误定位技术,借助程序切片可以提高错误定位效率.而这类技术执行效果取决于构建切片谱的切片选择策略和怀疑度计算公式的选择.为评估不同的切片选择策略及怀疑度计算公式对错误定位效率的影响,提出一种基于切片谱的错误定位框架.该框架首先计算程序执行失败时的全切片和成功时的执行切片,随后提出一组基于相似度的切片挑选策略以构建切片谱,最后按照选定的公式计算怀疑度并生成定位报告.应用提出的错误定位框架,针对一组典型的Java基准程序开展错误定位实证研究.结果表明:最优怀疑度计算公式Wong,Russel&Rao和Binary的错误定位效率与切片选择策略无关,而提出的怀疑度计算公式HSS,Tarantula,DStar,Naish1和Naish2在低相似度切片谱上定位效果较好. 相似文献
12.
基于频谱的缺陷定位(spectrum-based fault localization, SBFL)通过分析测试用例的覆盖信息和执行结果信息进行快速定位,是目前最常用的缺陷定位技术。然而,该方法未能充分利用代码中隐含的语义和结构信息。若能将缺陷预测中使用到的代码结构信息和频谱信息融合使用,将有助于进一步提升缺陷定位的效果。为此,提出了一种融合代码静态特征和频谱的软件缺陷定位(fault localization combing static features and spectrums, FLFS)技术。首先,从Halstead等度量元集合中选取度量元指标并进行修改,以适用于度量代码的方法级特征;然后,根据选取的度量元指标提取程序中各个方法的静态特征并用于训练缺陷预测模型;最后,使用缺陷预测模型预测程序中各方法存在缺陷的预测可疑度,并与SBFL技术计算的频谱可疑度进行融合,以定位缺陷所在方法。为验证FLFS的有效性,将其与两种定位效果最好的SBFL技术DStar和Ochiai在Defects4J数据集上进行了对比实验。结果表明,FLFS具有更好的缺陷定位性能,对于Einspe... 相似文献
13.
基于条件执行切片谱的多错误定位(Multiple Fault Localization based on Conditioned Execution Slicing Spectrum,CESS-MFL)考虑了程序的依赖性,可以一定程度降低程序随着缺陷数的增多而效率降低的问题,但该技术仍受与缺陷无关语句的影响比较大。因此,提出了一种基于条件分类可执行切片的软件缺陷定位方法(Conditioned Classification Execution Slicing Spectrum-based Software Fault Localization,CCESS-SFL),该技术对CESS-MFL技术中的谓词条件进行了改进并分类。根据谓词条件与缺陷相关执行切片确定条件特征集,根据条件特征集进行分类得到条件分类执行切片谱,计算元素的可疑度,最后生成可疑度报告。CCESS-SFL技术在西门子7个套件中得到了有效的验证,它优于当前流行的Tarantula、Jaccard、Ochiai以及CESS-MFL技术,可以进一步降低与缺陷无关语句的影响。 相似文献
14.
深度神经网络已经在自动驾驶和智能医疗等领域取得了广泛的应用.与传统软件一样,深度神经网络也不可避免地包含缺陷,如果做出错误决定,可能会造成严重后果.因此,深度神经网络的质量保障受到了广泛关注.然而,深度神经网络与传统软件存在较大差异,传统软件质量保障方法无法直接应用于深度神经网络,需要设计有针对性的质量保障方法.软件缺陷定位是保障软件质量的重要方法之一,基于频谱的缺陷定位方法在传统软件的缺陷定位中取得了很好的效果,但无法直接应用于深度神经网络.在传统软件缺陷定位方法的基础上提出了一种基于频谱的深度神经网络缺陷定位方法 Deep-SBFL.该方法首先通过收集深度神经网络的神经元输出信息和预测结果作为频谱信息;然后将频谱信息进行处理作为贡献信息,以用于量化神经元对预测结果所做的贡献;最后提出了针对深度神经网络缺陷定位的怀疑度公式,基于贡献信息计算深度神经网络中神经元的怀疑度并进行排序,以找出最有可能存在缺陷的神经元.为验证该方法的有效性,以EInspect@n (结果排序列表前n个位置内成功定位的缺陷数)和EXAM (在找到缺陷元素之前必须检查元素的百分比)作为评测指... 相似文献
15.
错误定位就是寻找程序错误的位置.现有的错误定位方法大多利用测试用例的覆盖信息,以标识一组导致程序失效的可疑语句,却忽视了这些语句相互作用导致失效的上下文.因此,提出一种增强上下文的错误定位方法Context-FL,以构建上下文的方式来优化错误定位性能.Context-FL利用动态切片技术构建数据与控制相关性的错误传播上下文,显示了导致失效的语句之间传播依赖关系;然后,基于可疑值度量来区分上下文片段中不同语句的可疑度;最后,Context-FL以标记可疑值的上下文作为定位结果.实验结果表明,Context-FL优于8种典型错误定位方法. 相似文献
16.
错误定位方法大多通过分析语句覆盖信息来标识出导致程序失效的可疑语句.其中,语句覆盖信息通常以语句执行或语句未执行的二进制状态信息来表示.然而,该二进制状态信息仅表明该语句是否被执行的信息,无法体现该语句在具体执行中的重要程度,可能会降低错误定位的有效性.为了解决这个问题,提出了基于词频-逆文件频率的错误定位方法.该方法采用词频-逆文件频率技术识别出单个测试用例中语句的影响程度高低,从而构建出具有语句重要程度识别度的信息模型,并基于该模型来计算语句的可疑值.实验结果表明,该方法大幅提升了错误定位的效能. 相似文献
17.
缺陷定位是软件质量保证中关键且困难的一项工作,随着软件规模的增大,人工进行缺陷定位的成本越来越高,自动化缺陷定位技术成为研究热点。现有的基于程序频谱的缺陷定位技术可以将缺陷定位到程序语句,但对于大型复杂的软件系统,这种定位方法将带来较大的时间花销。针对此问题,提出一种基于程序频谱的两阶段缺陷定位方法,第一阶段为粗粒度定位,将缺陷定位到程序模块;第二阶段为细粒度定位,在定位的程序模块中再将缺陷定位到语句;最后输出可疑语句推荐列表,辅助开发人员的调试工作。实验结果表明,相比于传统的方法,该方案在保证定位效果的前提下平均减少了10.24%的定位时间。 相似文献