频谱信息去冗优化的软件缺陷定位方法

文档序号:6546831阅读:187来源:国知局
频谱信息去冗优化的软件缺陷定位方法
【专利摘要】本发明提供一种频谱信息去冗优化的软件缺陷定位方法,通过运行测试用例,收集程序运行结果信息即频谱信息;对所得频谱信息进行去冗优化处理,利用频谱信息计算可疑度;根据可疑度值的大小对语句进行降序排列,根据已排序的语句序列逐个进行排错,直至找到引发程序异常的语句。本发明在基于频谱的错误定位方法中,在利用覆盖信息表进行可疑度计算之前,对频谱信息进行去冗余处理,利用有效的频谱信息进行可疑度计算,提高根据可疑度进行缺陷定位的可靠性,进而提高软件缺陷定位的效率。
【专利说明】频谱信息去冗优化的软件缺陷定位方法
【技术领域】
[0001]本发明涉及一种频谱信息去冗优化的软件缺陷定位方法,属于软件测试领域。
【背景技术】
[0002]多年来,人们在缺陷定位的研究中提出了许多方法,主要通过程序的静态信息和动态信息来定位程序错误。但获得静态信息的开销较大,对于大型软件,全面的静态分析甚至是不现实的,而动态信息的收集只要是运行测试用例,并不会给测试带来过多的开销。同时,由于动态信息包含了程序运行时的信息,与利用静态信息的方法相比,可以提供更准确的结果。
[0003]利用程序频谱信息进行缺陷定位,是目前比较切实有效的软件缺陷定位方法,程序频谱是一种表示程序运行时覆盖情况的信息,反应程序运行某一特征的代码剖面信息。程序频谱与程序行为之间存在着一定的关系,通过研究运行失败测试用例得到的频谱信息与运行成功测试用例得到的频谱信息之间的差异性可为软件缺陷定位提供帮助。对于程序的单条语句,被失效测试用例执行的越多,成功的测试用例执行的越少,语句含有错误的可能性就越大,发生错误的概率就越大。利用这种特征对程序语句被成功测试用例以及失败测试用例的覆盖情况进行统计分析,找出含有缺陷的程序语句。
[0004]对基于程序频谱的程序定位方法,可以从多角度采取优化策略提高软件缺陷定位的效率:第一,提高选取测试用例集的有效性;第二,尽量减少收集程序频谱的开销;第三,提高可以度算法的精确度性。在以往的优化策略的基础上,如何提出一种新的优化策略,对覆盖信息表进行去冗优化,提高依赖程序语句可疑度进行缺陷定位的可靠性,从而达到提高软件缺陷定位的效率是在基于程序频谱的程序定位方法的优化过程中应当予以考虑并解决的问题。

【发明内容】

[0005]本发明对已有缺陷定位方法采取优化策略产生一种新的错误定位方法,使缺陷定位的效率更高。通过运行测试用例,收集程序运行结果信息即频谱信息,对频谱信息进行去冗优化处理,利用频谱信息进行可疑度计算,根据可疑度值的大小对语句进行降序排列,最后根据已排序的语句序列逐个进行排错,直到找到引发程序异常的语句。
[0006]本发明的技术解决方案是:
[0007]一种频谱信息去冗优化的软件缺陷定位方法,
[0008]通过运行测试用例,收集程序运行结果信息即频谱信息;
[0009]对所得频谱信息进行去冗优化处理,利用频谱信息计算可疑度;
[0010]根据可疑度值的大小对语句进行降序排列,根据已排序的语句序列逐个进行排错,直至找到弓I发程序异常的语句。
[0011]优选地,S1、获取可执行的待测程序以及测试用例集;
[0012]S2、执行测试用例,获取程序执行的动态信息;[0013]S3、收集所有测试用例的运行情况,并进行去冗余处理,生成无冗余覆盖信息表;
[0014]S4、根据覆盖信息表进行语句可疑度计算;
[0015]S5、根据可疑度值,对程序语句进行降序排列,根据排序的语句序列进行缺陷定位。
[0016]优选地,步骤SI具体为:
[0017]S11、获取待测的可执行程序P ;
[0018]S12、将程序P的每条语句进行编号,按序编为S1, S2, S3,…,S」,...,Sn,将编号集合记为S,其中S」表示程序P的第j条语句,η为程序语句的总条数;
[0019]S13、获取测试用例集,记为Listsuites ;
[0020]S14、对Listsuites中的测试用例进行编号,按序编为
[0021]test” test2, test3,...,test”..., testm,其中 testj 表不测试用例集 Listsuites中的第i条测试用例,m为测试用例的总条数。
[0022]优选地,步骤S2具体为:
[0023]S21、根据测试用例的 编号按序从Listsuites中读取测试用例testi ;
[0024]S22、根据测试用例的输入以及执行条件执行读取的测试用例test ;
[0025]S23、在测试用例执行过程中对覆盖语句以及未覆盖的语句用“O”和“I”进行区分标记,“O”表示语句没有被当前测试用例执行,“ I ”表示语句被当前测试用例执行;
[0026]S24、判定测试用例运行结果;
[0027]S25、收集测试用例test的运行情况,记为
[0028]Fttesti] (T(S1), T(S2), T (S3)...T (Sj)...T (Sn),R},,即频谱信息,其中,T(Sj)表示语句S」被当前测试用例覆盖的情况,R表示当前测试用例的运行通过情况;
[0029]S26、判断测试用例集中的所有的测试用例是否均被运行,如果“是”,转步骤S27,否则转步骤S21 ;
[0030]S27、收集所有测试用例的执行情况。
[0031]优选地,步骤S24具体为:
[0032]S241、获取当前测试用例test在程序中的实际运行结果;
[0033]S242、获取当前测试用例test的预期运行结果;
[0034]S243、判断实际运行结果与预期结果是否相同,如果“是”,转步骤S244,否则转步骤S245 ;
[0035]S244、运行结果记为0,记入R中,R表示测试用例运行结果情况;
[0036]S245、运行结果记为1,记入R中,R表示测试用例运行结果情况。
[0037]优选地,步骤S3具体为:
[0038]S31、首个测试用例默认处理;
[0039]S32、将 FF[testJ (Test1, T(S1), T (S2), T (S3)...T (Sj)...T (Sn), R}记入覆盖信息表G,G由
[0040]FF [testj (Test1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}累积生成;
[0041]S33、获取下一条测试用例的执行情况
[0042]F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R};
[0043]S34、判定 Fbesti] {T (S1),T (S2),T (S3)…T (Sj)…T (Sn),R}是否与覆盖信息表 G已有行F[test]相同,如果“是”,转步骤S35,否则转步骤S37 ;
[0044]S35、判定测试tesh为非有效测试用例;
[0045]S36、删除 FEtestJIT(S1),T(S2) ,T(S3)...T(Sj)...T(Sn),R};
[0046]S37、判定测试用例tesh为有效测试用例;
[0047]S38、对有效测试用例test进行编号,编为Test1,表示第I个有效测试用例;
[0048]S39、拓展testi运行结果为
[0049]FF [testj (Test1, F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}},
[0050]即FF [testj (Test1, T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R};
[0051]S310、将 FFttesti] (Test1, T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}记入覆盖信息表G中;
[0052]S311、判断Listsuites中所有测试用例是否都被执行,如果“是”,转步骤S312,否则转步骤S33 ;
[0053]S312、获得最终覆盖信息表G。
[0054]优选地,步骤S31具体为:
[0055]默认第一个测试用例test:为有效测试用例;
[0056]对第一个有效测试用例test:进行编号,记为Test1,表不第一个有效测试用例;
[0057]拓展有效测试用例的执行情况为
[0058]FF [testj (Test1,F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}},
[0059]即为FF [testj (Test1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}。
[0060]优选地,步骤S4具体为:
[0061]S41、针对S」语句,收集执行完测试用例集Listsuites所提供的<arf,

aep, anf,anp>,其中,
【权利要求】
1.一种频谱信息去冗优化的软件缺陷定位方法,其特征在于: 通过运行测试用例,收集程序运行结果信息即频谱信息; 对所得频谱信息进行去冗优化处理,利用频谱信息计算可疑度; 根据可疑度值的大小对语句进行降序排列,根据已排序的语句序列逐个进行排错,直至找到引发程序异常的语句。
2.如权利要求1所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于: s1、获取可执行的待测程序以及测试用例集; s2、执行测试用例,获取程序执行的动态信息; s3、收集所有测试用例的运行情况,并进行去冗余处理,生成无冗余覆盖信息表; s4、根据覆盖信息表进行语句可疑度计算; s5、根据可疑度值,对程序语句进行降序排列,定位缺陷语句。
3.如权利要求1所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤SI具体为: s11、获取待测的可执行程序P; s12、将程序P的每条语句进行编号,按序编为S1,S2, S3,..., Sj,..., Sn,将编号集合记为S,其中S」表示程序P的第j条语句,η为程序语句的总条数; s13、获取测试用例集,记为Listsuites; SHjfListsuites中的测试用例进行编号,按序编为 test^ test2, test3, , test^ , testm,其中 testi 表不测试用例集 Listsuites 中的第i条测试用例,m为测试用例的总条数。
4.如权利要求1所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S2具体为: s21、根据测试用例的编号按序从Listsuites中读取测试用例tesh; s22、根据测试用例的输入以及执行条件执行读取的测试用例test; s23、在测试用例执行过程中对覆盖语句以及未覆盖的语句用“O”和“I”进行区分标记,“O”表示语句没有被当前测试用例执行,“ I ”表示语句被当前测试用例执行; s24、判定测试用例运行结果; s35、收集测试用例tesh的运行情况,记为 Fttesti] {T (S1),T (S2),T (S3)…T (Sj)…T (Sn),R},即频谱信息,其中,T (Sj)表示语句Sj被当前测试用例覆盖的情况,R表示当前测试用例的运行通过情况; s26、判断测试用例集中的所有的测试用例是否均被运行,如果“是”,转步骤S27,否则转步骤S21 ; s27、收集所有测试用例的执行情况。
5.如权利要求4所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S24具体为: s241、获取当前测试用例test在程序中的实际运行结果; s242、获取当前测试用例test的预期运行结果; s243、判断实际运行结果与预期结果是否相同,如果“是”,转步骤S244,否则转步骤S245 ;S244、运行结果记为O,记入R中,R表示测试用例运行结果情况; S245、运行结果记为1,记入R中,R表示测试用例运行结果情况。
6.如权利要求1所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S3具体为: S31、首个测试用例默认处理;
S32、将FF [testj (Test1, T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}记入覆盖信息表 G,G 由 FF [testj ITest1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}累积生成; S33、获取下一条测试用例的执行情况
F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R};
S34、判定F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}是否与覆盖信息表 G 已有行F[test]相同,如果“是”,转步骤S35,否则转步骤S37 ; S35、判定测试test为非有效测试用例;
S36、删除Fttesti] {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}; S37、判定测试用例test为有效测试用例; S38、对有效测试用例test进行编号,编为Test1,表示第I个有效测试用例; S39、拓展test运行结果为
FF[testj (Test1, F[testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}},
即 FFEtesti] (Test1, T(S1), T(S2), T (S3)...T (Sj)...T (Sn), R};
S310、将FFttesti] ITest1, T(S1),T(S2),T (S3)...T (Sj)...T (Sn),R}记入覆盖信息表G中; S311、判断Listsuites中所有测试用例是否都被执行,如果“是”,转步骤S312,否则转步骤S33 ; S312、获得最终覆盖信息表G。
7.如权利要求6所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S31具体为: 默认第一个测试用例test为有效测试用例; 对第一个有效测试用例test:进行编号,记为Test1,表不第一个有效测试用例; 拓展有效测试用例的执行情况为
FF[testJ ITest1, Fttest1] (T(S1), T (S2),T (S3)...T(Sj)...T (Sn),R}},
即为 FF[testj ITest1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}。
8.如权利要求1-7任一项所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S4具体为: S41、针对&语句,收集执行完测试用例集Listsuites所提供的<aef,aep, anf,anp>,其中,
9.如权利要求1-7任一项所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S5具体为: S51、语句排序;
获取语句编号序列S:S1; S2,S3...Sj...Sn; 获取语句序列S中相应语句的可疑度值序列z:z1; z2,z3...Zj...Zn,其中τ、表示第j条语句的可疑度值; 根据Z中可疑度值进行降序排列; 根据已排序的Z序列,对S进行排序; S52、错误定位。
10.如权利要求9所述的频谱信息去冗优化的软件缺陷定位方法,其特征在于,步骤S52具体为: S521、获取重新排序的S序列; S522、按序获取S中的编号Sj;S523、查看程序P的语句S」是否含有缺陷,如果“是”,转步骤S524,否则转步骤S522; S524、确定程序语句S」为缺陷语句,缺陷定位成功。
【文档编号】G06F11/36GK104008051SQ201410210134
【公开日】2014年8月27日 申请日期:2014年5月16日 优先权日:2014年5月16日
【发明者】张卫丰, 张晓红, 王云, 王子元, 周国强, 张迎周 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1