[发明专利]一种基于谓词执行信息分析的自适应软件缺陷定位方法有效
申请号: | 201210037955.5 | 申请日: | 2012-02-17 |
公开(公告)号: | CN102622295A | 公开(公告)日: | 2012-08-01 |
发明(设计)人: | 郑征;郝鹏;李伟;宫成;蔡开元 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于谓词执行信息分析的自适应软件缺陷定位方法,它有七大步骤:(1)对含缺陷的程序插桩;(2)加载程序的测试用例,运行插有桩函数的程序;(3)分别收集程序运行成功时和运行失败时,桩函数的输出信息;(4)对每个谓词在所有失败测试用例下的执行信息进行预处理;(5)计算谓词P的缺陷关联度;(6)重复第五步,计算所有谓词缺陷关联度,并按照从高到低将所有谓词进行排序;(7)根据第六步中的排序结果,对谓词依序进行查找,直到找到缺陷为止。本发明原理简单,容易实现,能有效解决现有基于谓词软件动态缺陷定位方法无法有效利用谓词执行信息的问题,从而克服了传统方法的局限性,提高了定位效率。 | ||
搜索关键词: | 一种 基于 谓词 执行 信息 分析 自适应 软件 缺陷 定位 方法 | ||
【主权项】:
1.一种基于谓词执行信息分析的自适应软件缺陷定位方法,其特征在于:该方法具体步骤如下:步骤一:对含缺陷的程序插桩;对程序中的分支和返回值:if、while、for以及retum语句中的谓词进行插桩,桩函数要求在程序运行时输出相应的谓词执行信息;步骤二:加载程序的全部测试用例,运行插有桩函数的待测程序;步骤三:分别收集程序运行成功和运行失败时桩函数的输出信息;由于插桩程序设计的不同,桩函数输出的谓词执行信息可分为两类,一种是:谓词的编号,谓词在程序运行时的执行状态;另一种是:用每6个数表示一个谓词,其中第一个数表示该谓词判断为“真”的次数,第二个数表示该谓词判断为“假”的次数,第三个数表示该谓词被执行到的次数;步骤四:对每个谓词在所有失败测试用例下的执行信息进行预处理,该步骤分为三小步:(一)利用桩函数的第二种类型输出信息,统计程序运行失败时的错误矩阵
其中
表示第k个(1≤k≤m,m表示失败测试用例总数)失败测试用例下,插桩谓词i(1≤i≤n,n表示插桩谓词总数)输出的第二种类型信息中的第j个(1≤j≤6,j取整数)数;(二)在错误矩阵A1中统计单个谓词的执行次数以及执行次数出现频率,将执行次数和相应的执行次数出现频率按谓词编号存储在矩阵
中;例如:第i行第j列元素aij中记录着谓词i的一个执行次数以及该执行次数所对应的出现频率;(三)在矩阵A2的每一行中确定出现频率最高的前N个执行次数,2<N<6,N取整数,针对选出的执行次数,计算权值xj(1≤j≤N)=运行时出现该执行次数的失败测试用例数目/总失败测试用例数目,保存计算结果;步骤五:计算谓词P的缺陷关联度。该步骤分为两小步:(一)根据第四步中得到的谓词P出现频率最高的前N个执行次数,2<N<6,N取整数,选择相应的流程来计算缺陷关联度;该步骤又可分为三小步:(1)若前N个执行次数,2<N<6,N取整数中包含有执行次数i=0,则根据流程一计算。流程一描述如下:①计算failure ( P ) = F ( P ) F ( P ) + S ( P ) , ]]> 其中F(P)为谓词P被判断为“真”时,运行失败的测试用例数目,S(P)为谓词P被判断为“真”时,运行成功的测试用例数目;②计算context ( P ) = F ( Oberseved ) F ( Oberseved ) + S ( Observed ) , ]]> 其中F(Observed)为谓词P被执行到时即指被判断为“真”或“假”,运行失败的测试用例数目,S(Observed)为谓词P被执行到时,运行成功的测试用例数目;③计算Increase(P)=failure(P)-context(P);④判断Increase(P)的取值,若为正值,则转第⑤步,否则返回缺陷关联度值Suspicious(P)=0;⑤判断失败测试用例总数m的取值,若m=1,则转第⑥步,否则转第⑦步;⑥返回谓词P的缺陷关联度计算值,Suspicious ( P ) = 2 1 + 1 Increase ( P ) ; ]]> ⑦返回谓词P的缺陷关联度计算值,Suspicious ( P ) = 2 1 Increase ( P ) + 1 log ( F ( P ) ) log ( m ) ; ]]> (2)若前N个执行次数,2<N<6,N取整数中包含有执行次数i=1,则根据流程二计算;流程二描述如下:①计算程序运行失败时谓词P被判断为“真”的概率值Xf(P),X f ( P ) = Σ 1 n φ f ( P ) n , ]]>φ f ( P ) = n t ( P ) n t ( P ) + n f ( P ) ; ]]> 其中nt(P)表示在程序一次失败运行中,谓词P被判断为“真”的次数,nf(P)表示谓词P被判断为“假”的次数;若nt(P)+nf(P)=0,则该次运行的φf(P)=0.5,n为失败测试用例的总数;②计算程序运行成功时谓词P被判断为“真”的概率值Xs(P),X s ( P ) = Σ 1 m φ s ( P ) m , ]]>φ s ( P ) = n t ( P ) n t ( P ) + n f ( P ) ; ]]> 其中nt(P)表示在程序一次成功运行中,谓词P被判断为“真”的次数,nf(P)表示谓词P被判断为“假”的次数;若nt(P)+nf(P)=0,则该次运行的φs(P)=0.5,m为成功测试用例的总数;③如果谓词P在所有失败测试用例中均没有被执行即指没有被判断为“真”或“假”,则返回谓词P的缺陷关联度值Suspicious(P)=0;否则转第④步;④返回谓词P的缺陷关联度值计算值,计算公式为Suspicious(P)=|Xf(P)-Xs(P)|;(3)若前N个执行次数,2<N<6,N取整数中包含有执行次数i≥2即i取2,3,4,5及其以上整数时,则根据流程三计算;流程三描述如下:①计算所有成功测试用例下谓词P的成功执行序列向量P+;方法是:1)利用桩函数的第一种类型输出信息,计算程序第k次成功运行下谓词P的成功执行序列集合ES P k = es P 1 es P 2 · · · es P m ; ]]> 其中,
中的上标m表示在程序第k次成功运行中谓词P只被执行了m次;
表示程序第k次成功运行中第j次(1≤j≤m)经过谓词P时,谓词P的判断结果,若判断为“真”,
否则
2)针对成功执行序列
统计谓词P的M位成功执行序列向量
其中
为执行序列
包含子序列a1a2…aM的个数,al=0或1,l=1,2,…,M,a1a2…aM为
的排列组合;获取M位成功执行序列向量的具体操作是:a.根据确定的执行次数i选择执行序列向量的位数M;若i=2,则M=2;若i=3,则M=3;若i=4,则M=4;若i≥5,则M=5例如:i=2时,选择谓词执行序列向量的位数M=2,
包含22=4个值,为n01、n10、n00,n11这四个元素;b.根据选择的执行序列向量的位数M确定
的值;当m≥M时,
为执行序列
中包含子序列a1a2…aM的个数;当m=0时,
中各值均等于零;当m<M时,则采取等概率补齐的方式(
bl=0或1,l=1,2,…N-x)对相应元素进行赋值,其他的元素赋值为零;例如:当选择谓词执行序列向量的位数M=2时,若谓词P执行了多次,则n01、n10、n00,n11分别记录执行序列中含有子序列01、10、00,11的个数;若谓词P没有执行,则n01=n10=n11=n00=0;若执行次数小于向量位数时,当只执行了一次,谓词P执行序列为0时,设定n00=n01=0.5,n10=n11=0;谓词P执行序列为1时,设定n10=n11=0.5,n01=n00=0;3)将谓词P的m个成功执行序列向量相加,进行归一化处理,得到谓词P的成功执行序列向量P+,即
②计算所有失败测试用例下谓词P的失败执行序列向量P;方法是:前两步与上面叙述的1)和2)相同,只是将成功执行序列换成失败执行序列;3)将谓词P的n个失败执行序列向量相加,进行归一化处理,得到谓词P的失败执行序列向量P,即
③如果谓词P在所有测试用例中,包括成功和失败测试用例或者在所有失败测试用例中均没有被执行到,则返回缺陷关联度值Suspicious(P)=0,否则转第④步;④利用谓词执行序列向量,计算谓词P的缺陷关联度,定义单个谓词的缺陷关联度公式Suspicious(P)=|P+-P-|;(二)采用公式Suspicious(P)=a1×R1+a2×R2+…aN×RN来最终对谓词P的缺陷关联度进行综合;其中a1,a2,…,aN为步骤四中计算出来的权值,R1,R2,…,RN为步骤五中第(一)小步对应的计算结果;例如,若a1为出现执行次数为零次的失败测试用例数目占所有失败测试用例的比例,R1则为用流程一进行计算的结果;步骤六:对程序中的每个谓词都执行步骤五,直至得到全部谓词的缺陷关联度;按照缺陷关联度从高到低,将所有谓词进行排序;步骤七:根据步骤六中得到的谓词排序表,对谓词依序进行查找,直到找到缺陷为止。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210037955.5/,转载请声明来源钻瓜专利网。
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置