【技术实现步骤摘要】
一种软件缺陷定位方法及系统
[0001]本专利技术属于软件缺陷检测
,更具体地,涉及一种软件缺陷定位方法及系统。
技术介绍
[0002]现代软件系统在运行过程中不可避免地会触发一些缺陷,这可能会造成灾难性的后果。因此,软件调试在实践中被广泛采用,但这是一项耗时耗力的工作。
[0003]为了简化调试工作,研究人员提出各种自动化缺陷定位技术,以便帮助开发者更快地定位和修复缺陷。其中,基于频谱的缺陷定位技术是常用的自动化缺陷定位技术。频谱指测试样例在执行期间产生的特征向量,因为失败测试样例产生的特征向量不同于通过测试样例,通过对比特征向量之间的差异,可以计算出代码语句包含缺陷的可能性(即可疑值),可疑值越高意味着语句越有可能包含缺陷。然而,基于频谱的缺陷定位技术通常在函数或语句级别定位缺陷,不能定位缺陷相关的变量,无法进行细粒度的缺陷定位。
技术实现思路
[0004]针对现有技术的以上缺陷或改进需求,本专利技术提供了一种软件缺陷定位方法及系统,用以解决现有技术无法进行细粒度的缺陷定位的技术问题。 />[0005]为了本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种软件缺陷定位方法,其特征在于,包括:S1、向待测试程序中输入测试样例,计算在与变量v相关的基本块中被执行基本块的所占的比例,得到变量v在输入测试样例下的执行频率;其中,变量v为所述待测试程序中的任意变量;所述测试样例包括:失败测试样例和通过测试样例;S2、计算变量v在不同失败测试样例下的执行频率均值Freq
f
(v),以及变量v在不同通过测试样例下的执行频率均值Freq
f
(p),并计算二者之和,得到总执行频率均值;计算Freq
f
(v)与所述总执行频率均值之比,得到变量v的可疑值Susp(v);S3、比较所述待测试程序中所有变量的可疑值大小,将可疑值最高的M个变量作为定位得到的缺陷变量;M为正整数。2.根据权利要求1所述的软件缺陷定位方法,其特征在于,所述步骤S2还包括:获取向所述待测试程序中输入测试样例时变量v的执行路径特征;变量v的执行路径特征包括与变量v相关的每一个基本块被输入测试样例执行的次数;计算变量v分别在任意失败测试样例下和任意通过测试样例下的执行路径特征的相似度,并计算所有相似度的平均值,得到执行路径特征相似度Sim
f,p
(v);将Susp(v)更新为Susp(v)
‑
α1Sim
f,p
(v);其中,α1为[0,1]范围内的权重值。3.根据权利要求2所述的软件缺陷定位方法,其特征在于,所述执行路径特征相似度为:其中,为变量v在第i个失败测试样例下的执行路径特征与变量v在第k个通过测试样例下的执行路径特征之间的相似度;m为失败测试样例的总数量;n为通过测试样例的总数量。4.根据权利要求3所述的软件缺陷定位方法,其特征在于,采用余弦相似度函数计算任意失败测试样例下和任意通过测试样例下变量v的执行路径特征之间的相似度。5.根据权利要求1
‑
4任意一项所述的软件缺陷定位方法,其特征在于,还包括:在所述步骤S2和所述步骤S3之间执行的步骤S4;所述步骤S4包括:比较所述待测试程序中所有变量的可疑值大小,获取可疑值最高的N个变量,对其中的任意一个变量w,获取向所述待测试程序中输入测试样例时所述变量w的执行特征;所述变量w的执行特征包括所述待测试程序中的每一个基本块被输入测试样例执行的次数;N≥M;对变量w进行变异,得到所述变量w的一个或多个变异体,以及对应的变异程序;获取向所述变量w的任意一个变异体w
′
所对应的变异程序中输入测试样例时所述变异体w
′
的执行特征;所述变异体w
′
的执行特征包括对应的变异程序中的每一个基本块被输入测试样例执行的次数;计算所述变量w与所述变异体w
′<...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。