基于谓词频率统计的软件故障定位方法
【专利摘要】本发明公开了一种基于谓词频率统计的软件故障定位方法,用于解决现有软件故障定位方法定位精度低的技术问题。技术方案是采用化整为零的方法,将所求面积分成N块,对每一块求值,最后将所有的N个子块的面积求和,即求得要求的总区间[0,1.0]上的总面积,也就是反映谓词和错误相关性的度量值。在一定范围内,N的值越高,计算的就越精确。本发明在将故障定位粒度细化至谓词级别的基础上,采用了基于非参数模型的统计方法,不需要被统计量符合某种已知分布模型,排除由于被统计数据的随机性对算法稳定性带来的影响,可以提高定位精度。
【专利说明】基于谓词频率统计的软件故障定位方法
【技术领域】
[0001] 本发明设及一种软件故障定位方法,特别是设及一种基于谓词频率统计的软件故 障定位方法(简称FDI)。
【背景技术】
[0002] 软件故障定位是软件测试实践中最重要的活动之一。目前,利用人工方式通过调 试器进行故障定位仍然占据主导地位,故障定位能力常常依赖于人员的知识和经验,调试 效率低,调试支持工具相对较弱,对程序员要求高。因此,无论在软件开发阶段还是软件投 入使用W后,研究软件调试和故障定位的自动化技术越来越成为一个有重要价值的研究课 题。
[0003] 国内外专家针对故障自动定位理论、方法已展开探索,在指出故障发生范围和修 复数据结构、内存W及特定类型故障方面,取得了一定的成绩。自2002年W来,自动化错误 定位技术逐渐成为软件工程界的研究热点。W下表1-1中简要地列举出了部分典型的错误 定位技术W及相关的研究机构和论文发表期刊或会议。
[0004] 表1-1故障定位算法
[0005]
【权利要求】
1. 一种基于谓词频率统计的软件故障定位方法,其特征在于包括以下步骤: 对某程序一次运行中某一个谓词P多次赋值的记录采用真值率来描述; ① 在程序的一次运行中,假设谓词P被记录为真的次数为nt,被记录为假的次数为nf, 那么称:
为谓词P在这次执行中的真值频率; 由极大似然法知,在样本足够多的情况下,P的真值频率无限接近P取值为真的概率, 因此(P)在一定程度上反映了谓词P在一次取值中为真的概率; ② 假设对于一个程序,所有的测试用例集合为T,Tf表示失败的测试用例集合,Tp表示 成功的测试用例集合,那么f(X| 0P)和f(X| 0f)分别表示TjPT5的真值率的概率密度函 数; 设f(X| 0P)和f(X| 0f)分别表示谓词P在成功的运行集合与失败的运行集合中的真 值率的概率密度函数; 采用f(X| 0 p)和f(X| 0f)两者相差的部分的面积:
作为衡量二者差异的关键值; 采取了化整为零、分段计算的方式代替直接求表达式的方式: 假设在总共X次的程序执行中,谓词P得到了Y个真值率记录,有X> =Y; 谓词P的真值率(P)的取值范围为闭区间[〇, 1.0],将该区间化整为零,分成N段单独处理:取N= 10000,得到[0, 0? 0001),[0? 0001,0? 0002),[0? 0002, 0? 0003), [0. 0003, 0. 004).....[0. 9999, 1. 0]这10000个子区间;假设对于每个子区间[a,b] (0〈= a〈b〈 = 1)上,在成功运行和失败运行的样本中,Ji(P)落在该区间范围内的样本数分别为ZjPZf,那么该区间的分布密度就分别等于公式(3):
【文档编号】G06F17/30GK104503908SQ201410787115
【公开日】2015年4月8日 申请日期:2014年12月17日 优先权日:2014年12月17日
【发明者】郑炜, 李知隆, 阴一溦, 柏晗, 吴潇雪 申请人:西北工业大学