基于频谱的增量式缺陷定位方法技术

技术编号:13783191 阅读:143 留言:0更新日期:2016-10-05 00:28
本发明专利技术公开了基于频谱的增量式缺陷定位方法,该方法采用增量式逐步迭代的方法,利用程序信息和测试信息找出程序缺陷语句或者预测缺陷语句可能存在的范围。该方法首先通过运行测试用例,收集测试用例在程序中执行的覆盖信息即频谱信息以及运行结果信息生成覆盖信息表;再对覆盖信息表进行统计分析,计算程序语句可疑度,根据可疑度对程序语句进行排序获得缺陷定位序列;根据定位序列中语句排列逐个进行排错,直到找到引发程序异常的语句。本发明专利技术从多角度采取优化策略提高软件缺陷定位的效率,提高了测试用例的覆盖率,很好地减少了收集频谱的开销,提高了可疑度算法的精确性。

【技术实现步骤摘要】

本专利技术涉及一种基于频谱的增量式缺陷定位方法,属于软件测试

技术介绍
多年来,人们在缺陷定位的研究中提出了许多方法,主要通过程序的静态信息和动态信息来定位程序错误。但获得静态信息的开销较大,对于大型软件,全面的静态分析甚至是不现实的,而动态信息的收集主要是运行测试用例,并不会给测试带来过多的开销。同时,由于动态信息包含了程序运行时的信息,与利用静态信息的方法相比,可以提供更准确的结果。利用程序频谱信息进行缺陷定位,是目前比较切实有效的软件缺陷定位方法,程序频谱是一种表示程序运行时的覆盖信息,反应程序运行某一特征的代码剖面信息。程序频谱与程序行为之间存在着一定的关系,通过研究运行失败测试用例得到的频谱信息与运行通过测试用例得到的频谱信息之间的差异性可为软件缺陷定位提供帮助。对于程序的单条语句,被失败测试用例执行的越多,通过的测试用例执行的越少,语句含有错误的可能性就越大,发生错误的概率就越大。利用这种特征对程序语句被通过测试用例以及失败测试用例的覆盖情况进行统计分析,找出含有缺陷的程序语句。对基于频谱的程序定位方法,这里
技术实现思路
本专利技术目的在于解决了上述现有技术的不足,提出了一种基于频谱的增量式缺陷定位方法,该方法采取优化策略产生一种新的缺陷定位方法,使缺陷定位的效率更高,本专利技术采取一种增量式的方法执行测试用例,并考虑了大量测试用例情况下的边际效应,对后续增加的测试用例对可疑度的贡献进行动态加权,对语句可疑度进行修正,根据修正后的定位序列进行缺陷定位。具体概述如下:对采集的所有测试用例集进行等量随机分组,选择其中一组测试用例执行,收集本组测试用例的执行信息(即频谱)以及结果信息,生成覆盖信息表,对覆盖信息表进行统计分析,进行语句可疑度计算,根据可疑度值的大小获得定位序列。重新选择一组新的测试用例执行,原组测试用例的频谱信息与结果信息与新组测试用例执行信息进行动态加权对原可疑度进行修正,获得新的定位序列,新的定位序列与原定位序列进行比较,若序列趋于稳定或测试用例均执行完毕,则终止测试用例的执行,根据获得的最新定位序列逐个进行排错,直到找到引发程序异常的语句。本专利技术解决其技术问题所采取的技术方案是:一种基于频谱的增量式缺陷定位方法,该方法包括如下步骤:步骤1:获取可执行的待测程序以及测试用例集,测试用例分组;步骤1-1:获取待测的可执行程序P;步骤1-2:将程序P的每条语句进行编号,按序编为S1,S2,S3,…,Sj,…,Sn,将编号集合记为S,其中Sj表示程序P的第j条语句,n为程序语句的总条数;步骤1-3:获取测试用例集,记为Listsuites;步骤1-4:将测试用例集Listsuites中的测试用例进行等量随机分组,共分成k组,并对组进行编号,依次编为Group1,Group2,Group3,...,Groupk;步骤2:运行测试用例,获取覆盖信息表;步骤2-1:选取一组测试用例;步骤2-2:对选择的测试用例集中的测试用例进行编号,按序编为test1,test2,test3,…,testi,…,testm,其中testi表示选定测试用例组中的第i条测试用例,m为选定测试用例组中测试用例的总条数;步骤2-3:从选定的测试用例集按序读取测试用例testi;步骤2-4:运行当前读取的测试用例testi;步骤2-5:标记语句覆盖情况;步骤2-5-1:判定程序P的语句Sj是否被测试用例覆盖,如果“是”,则转步骤2-5-2:,否则转步骤2-5-3;步骤2-5-2:将语句标记为1;步骤2-5-3:将语句标记为0;步骤2-5-4:判定程序P是否执行结束,如果“是”,则转步骤2.5.5),否则转步骤2-5-1:,直到程序P的n条语句均被判定覆盖情况;步骤2-5-5:收集执行完当前测试用例获得的频谱信息T(S1),T(S2),T(S3),…,T(Sj),…,T(Sn),其中T(Sj)表示程序P的第j条语句被当前运行测试用例覆盖的情况;步骤2-6:判定测试用例运行结果;步骤2-6-1:获取当前测试用例testi在程序中的实际运行结果;步骤2-6-2:获取当前测试用例testi的预期运行结果;步骤2-6-3:判断testi的实际运行结果与预期结果是否相同,如果“是”,转步骤2.6.4),否则转步骤2.6.5);步骤2-6-4:运行结果记为0,记入Ri中,Ri表示测试用例运行结果情况;步骤2-6-5:运行结果记为1,记入Ri中,Ri表示测试用例运行结果情况;步骤2-7:收集测试用例testi的运行情况,记为:F[testi]{T(S1),T(S2),T(S3),…,T(Sj),…,T(Sn),Ri本文档来自技高网...

【技术保护点】
一种频谱信息去冗余优化的软件缺陷方法,其特征在于,所述方法包含如下步骤:获取初始定位序列;包括:获取程序语句编号序列S:S1,S2,S3,…,Sj,…,Sn;获取语句序列S:S1,S2,S3,…,Sj,…,Sn相应语句的可疑度值序列Zrough:Z1,Z2,Z3,…,Zj,…,Zn,其中Zj表示第j条语句的可疑度值;根据Zrough中可疑度值进行降序排列;根据已排序的Zrough序列,匹配对应的程序语句编号,对S:S1,S2,S3,…,Sj,…,Sn进行排序,排序后的S即为缺陷定位序列,记为Srough;测试用例增量执行;包括:增加一组测试用例并执行;选取下一组测试用例;可疑度修正;获取执行完上一组测试用例获得语句Sj的<Aef,Aep,Anf,Anp>;将ef,ep,nf,np统称为ev,利用公式(2)分别计算ef,ep,nf,np再次发生的概率p(ef),p(ep),p(nf),p(np);根据公式3分别计算ef,ep,nf,np再次发生后所提供的信息量H(ef),H(ep),H(nf),H(np);根据公式4分别计算ef,ep,nf,np的增量权重αef,αep,αnf,αnp;其中,k为测试用例组数,1/k即为选定执行的测试用例条数占测试用例总条数的百分比;获取执行完本选定组测试用例获得的语句Sj的<aef,aep,anf,anp>,利用公式5,分别计算Aef,Aep,Anf,Anp,Aev=Aev+αev×aev 公式5根据公式1重新计算语句可疑度将记入zslight中,zslight表示修正后的可疑度值序列;判断所有语句是否均获得修正后的可疑度值;获得语句可疑度值序列zslight;定位序列修正;获取语句编号序列S:S1,S2,S3,…,Sj,…,Sn;获取语句序列S:S1,S2,S3,…,Sj,…,Sn相应语句的可疑度值序列zslight:z1,z2,z3,…,zj,…,zn,其中zj表示修正后的第j条语句的可疑度值;根据zslight中可疑度值进行降序排列;根据已排序的zslight序列,匹配对应的程序语句编号,对S:S1,S2,S3,…,Sj,…,Sn进行排序,将排序后的S序列即为修正后定位序列,记为Sslight;定位序列判定;根据定位序列进行缺陷语句定位。...

【技术特征摘要】
1.一种频谱信息去冗余优化的软件缺陷方法,其特征在于,所述方法包含如下步骤:获取初始定位序列;包括:获取程序语句编号序列S:S1,S2,S3,…,Sj,…,Sn;获取语句序列S:S1,S2,S3,…,Sj,…,Sn相应语句的可疑度值序列Zrough:Z1,Z2,Z3,…,Zj,…,Zn,其中Zj表示第j条语句的可疑度值;根据Zrough中可疑度值进行降序排列;根据已排序的Zrough序列,匹配对应的程序语句编号,对S:S1,S2,S3,…,Sj,…,Sn进行排序,排序后的S即为缺陷定位序列,记为Srough;测试用例增量执行;包括:增加一组测试用例并执行;选取下一组测试用例;可疑度修正;获取执行完上一组测试用例获得语句Sj的<Aef,Aep,Anf,Anp>;将ef,ep,nf,np统称为ev,利用公式(2)分别计算ef,ep,nf,np再次发生的概率p(ef),p(ep),p(nf),p(np);根据公式3分别计算ef,ep,nf,np再次发生后所提供的信息量H(ef),H(ep),H(nf),H(np);根据公式4分别计算ef,ep,nf,np的增量权重αef,αep,αnf,αnp;其中,k为测试用例组数,1/k即为选定执行的测试用例条数占测试用例总条数的百分比;获取执行完本选定组测试用例获得的语句Sj的<aef,aep,anf,anp>,利用公式5,分别计算Aef,Aep,Anf,Anp,Aev=Aev+αev×aev 公式5根据公式1重新计算语句可疑度将记入zslight中,zslight表示修正后的可疑度值序列;判断所有语句是否均获得修正后的可疑度值;获得语句可疑度值序列zslight;定位序列修正;获取语句编号序列S:S1,S2,S3,…,Sj,…,Sn;获取语句序列S:S1,S2,S3,…,Sj,…,Sn相应语句的可疑度值序列zslight:z1,z2,z3,…,zj,…,zn,其中zj表示修正后的第j条语句的可疑度值;根据zslight中可疑度值进行降序排列;根据已排序的zslight序列,匹配对应的程序语句编号,对S:S1,S2,S3,…,Sj,…,Sn进行排序,将排序后的S序列即为修正后定位序列,记为Sslight;定位序列判定;根据定位序列进行缺陷语句定位。2.根据权利要求1所述的一种基于频谱信息的增增量式软件缺陷方法,其特征在于,所述方法包括:步骤1:...

【专利技术属性】
技术研发人员:王子元张晓红张卫丰周国强张迎周
申请(专利权)人:南京邮电大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1