基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:a)基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联;b...基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:a)基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联;b)基于谓词覆盖的方法只针对谓词进行插桩,最后只计算谓词的可疑度并对谓词进行排序,如果缺陷是非谓词,此类方法无法准确定位缺陷位置;c)忽略了基本块之间的关联和层次特性,将各个基本块看成相互独立的个体。为解决上述问题,首先,将谓词错误与执行结果之间的关联性这一有用信息加入到算法的设计中;其次,加入谓词分层覆盖与分析的思想,对覆盖矩阵中的基本块进行细分和分层;最后,将两者结合,提出一种基于谓词分层覆盖矩阵的缺陷定位方法,即谓词分层覆盖算法Phcm。将西门子程序集作为目标程序,通过与其他三种缺陷定位方法进行对比实验,验证了该方法在提高缺陷定位的精准度和减小代码检查率上的有效性。展开更多
为充分挖掘执行结果与程序频谱的潜在关系,提出基于互信息的可疑度计算公式MIStar(mutual information star)。通过分析程序在不同测试用例下的执行信息,引用互信息对传统的怀疑度公式进行优化,给每条语句赋予权重值,不断修正不确定性参...为充分挖掘执行结果与程序频谱的潜在关系,提出基于互信息的可疑度计算公式MIStar(mutual information star)。通过分析程序在不同测试用例下的执行信息,引用互信息对传统的怀疑度公式进行优化,给每条语句赋予权重值,不断修正不确定性参数Star,获得良好的定位效果。实验结果表明,该方法较其它可疑度算法在准确度上有了明显提高,具备良好的实用价值。展开更多
文摘基于频谱的缺陷定位(spectrum-based fault localization,SBFL)通过分析测试用例的覆盖信息和执行结果信息进行快速定位,是目前最常用的缺陷定位技术。然而,该方法未能充分利用代码中隐含的语义和结构信息。若能将缺陷预测中使用到的代码结构信息和频谱信息融合使用,将有助于进一步提升缺陷定位的效果。为此,提出了一种融合代码静态特征和频谱的软件缺陷定位(fault localization combing static features and spectrums,FLFS)技术。首先,从Halstead等度量元集合中选取度量元指标并进行修改,以适用于度量代码的方法级特征;然后,根据选取的度量元指标提取程序中各个方法的静态特征并用于训练缺陷预测模型;最后,使用缺陷预测模型预测程序中各方法存在缺陷的预测可疑度,并与SBFL技术计算的频谱可疑度进行融合,以定位缺陷所在方法。为验证FLFS的有效性,将其与两种定位效果最好的SBFL技术DStar和Ochiai在Defects4J数据集上进行了对比实验。结果表明,FLFS具有更好的缺陷定位性能,对于E inspect@n指标,当n=1时,FLFS相比DStar和Ochiai分别多定位到16和10个缺陷;对于MRR指标,FLFS相比DStar和Ochiai分别提升了4.13%和1.08%。
文摘基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:a)基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联;b)基于谓词覆盖的方法只针对谓词进行插桩,最后只计算谓词的可疑度并对谓词进行排序,如果缺陷是非谓词,此类方法无法准确定位缺陷位置;c)忽略了基本块之间的关联和层次特性,将各个基本块看成相互独立的个体。为解决上述问题,首先,将谓词错误与执行结果之间的关联性这一有用信息加入到算法的设计中;其次,加入谓词分层覆盖与分析的思想,对覆盖矩阵中的基本块进行细分和分层;最后,将两者结合,提出一种基于谓词分层覆盖矩阵的缺陷定位方法,即谓词分层覆盖算法Phcm。将西门子程序集作为目标程序,通过与其他三种缺陷定位方法进行对比实验,验证了该方法在提高缺陷定位的精准度和减小代码检查率上的有效性。
文摘为充分挖掘执行结果与程序频谱的潜在关系,提出基于互信息的可疑度计算公式MIStar(mutual information star)。通过分析程序在不同测试用例下的执行信息,引用互信息对传统的怀疑度公式进行优化,给每条语句赋予权重值,不断修正不确定性参数Star,获得良好的定位效果。实验结果表明,该方法较其它可疑度算法在准确度上有了明显提高,具备良好的实用价值。