一种基于动态基本块的缺陷定位测试用例约简方法

文档序号:6351710阅读:266来源:国知局
专利名称:一种基于动态基本块的缺陷定位测试用例约简方法
技术领域
本发明属于软件测试技术领域,涉及软件测试结果的验证及缺陷定位技术,主要应用于测试输入的产生和测试用例的执行可以自动完成,但测试结果需要人工比对的场景下,为一种基于动态基本块的缺陷定位测试用例约简方法。
背景技术
基于测试执行的语句覆盖的缺陷定位技术通过运行测试用例集来获取程序的动态执行信息,根据语句的覆盖情况和用例的执行结果计算各条语句的可疑度,具有高可疑度的语句优先被检查。其中,最具有代表性的是Agrawal等的削片方法,Renieris和Reiss 的最近邻方法,Jones和Harrold等提出的Tarantula方法。研究表明这些基于覆盖信息的缺陷定位技术可以有效地减少程序中需要检查的语句数,从而减少了缺陷定位的工作量。然而,基于覆盖信息的缺陷定位技术要求测试用例集具有很高的语句覆盖率,虽然现有的测试用例生成工具可以自动生成高覆盖率的测试输入,但是这些测试输入对应的输出结果是未知的。人工判断所有的输出结果对测试人员来说是及其困难且不现实的。而且,判断测试输入的执行结果正确与否,是测试领域的难题 测试预言问题。这个问题的存在严重影响了基于覆盖信息的缺陷定位技术在实际中的应用,带来了极大的负担。考虑到用测试用例生成工具自动生成的测试输入集存在很大的冗余,研究人员提出对测试输入进行约简,采用一些策略从测试用例集中挑选出部分用例组成一个子集。测试人员只需检查这个子集的测试输出结果,然后在这个子集上应用基于覆盖信息的缺陷定位技术即可。Yu Y和Jones J等研究了测试用例集的约简对缺陷定位效果的影响,他们的实验表明,在测试用例约简和缺陷定位效果间存在一个折中,一般来说,现有的测试用例约简策略降低了缺陷定位的效果。Hao Dan等人提出了一种包含三种策略(下面分别称为 Si, S2, S3)的测试输入约简方法(Hao D, Xie T, Zhang L, et al. Test input reduction for result inspection to facilitate fault localization. Journal of Automated Software Engineering, 2010. 5 31.),实验证明他们的方法可以帮助开发人员选择出测试输入的一个小的子集,检查这个子集中测试输入对应的输出结果并在其覆盖信息基础上进行缺陷定位,仍然可以获得有效的缺陷定位效果。Baudry B等人的研究表明,在基于语句覆盖信息的缺陷定位技术中,缺陷定位算法可以识别的最小单元为动态基本块,位于同一个动态基本块中的两条语句将被赋予相同的可疑度。因此,可以利用动态基本块覆盖来进行测试用例约简。动态基本块的基本含义为假设P为待测试的程序,TS为测试用例集,一个动态基本块DBB(dynamic basic block) 是程序P中被TS中相同测试用例覆盖的语句的集合。位于同一个动态基本块中的语句在覆盖矩阵中具有相同的行,它们被测试用例集中相同的测试用例所覆盖,也就是说,测试用例集中任意一条测试用例要么执行了这个块中全部语句,要么没有执行块中任何一条语句。

发明内容
本发明所要解决的技术问题是现有的基于语句覆盖的缺陷定位方法需要检查测试用例执行结果,耗费大量人力,如果对测试用例进行约简,充分利用语句覆盖信息来帮助挑选用于缺陷定位的测试用例,可以节约成本,约简的测试用例集要保证和原有的用例集具有相同或相近的缺陷定位效果。本发明的技术方案为一种基于动态基本块的缺陷定位测试用例约简方法,在基于测试执行的语句覆盖信息的缺陷定位技术中,缺陷定位算法可以识别的最小单元为动态基本块,根据测试用例的执行路径构建语句覆盖矩阵,由语句覆盖矩阵得到动态基本块集合,根据动态基本块集合将每条测试用例表示成以动态基本块为单位的向量,将语句覆盖矩阵转换为动态基本块覆盖矩阵,对其中需要人工检查结果的测试用例集进行约简采用最大划分策略MDS或均勻划分策略EDS挑选测试用例,并判断所挑选的测试用例是否能继续对当前已划分出的动态基本块做划分,如果能,则保留已挑选的测试用例,继续挑选余下的测试用例,如果不能,则将已经挑选的所有测试用例构成约简后的测试用例集,约简后的测试用例集用于缺陷定位。2、根据权利要求1所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是包括以下步骤1)对待测试程序P执行测试用例集TS,TS为待约简的初始测试用例集,根据测试用例执行路径收集语句覆盖信息,构建语句覆盖矩阵;2)由语句覆盖矩阵得到动态基本块集合B (TS),设动态基本块集合B (TS)包含η 个元素B1, B2, . . .,Βη,则TS中每条测试用例、都被表示成一个η维的向量
权利要求
1.一种基于动态基本块的缺陷定位测试用例约简方法,在基于测试执行的语句覆盖信息的缺陷定位技术中,缺陷定位算法可以识别的最小单元为动态基本块,其特征是根据测试用例的执行路径构建语句覆盖矩阵,由语句覆盖矩阵得到动态基本块集合,根据动态基本块集合将每条测试用例表示成以动态基本块为单位的向量,将语句覆盖矩阵转换为动态基本块覆盖矩阵,对其中需要人工检查结果的测试用例集进行约简采用最大划分策略 MDS或均勻划分策略EDS挑选测试用例,并判断所挑选的测试用例是否能继续对当前已划分出的动态基本块做划分,如果能,则保留已挑选的测试用例,继续挑选余下的测试用例, 如果不能,则将已经挑选的所有测试用例构成约简后的测试用例集,约简后的测试用例集用于缺陷定位。
2.根据权利要求1所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是包括以下步骤1)对待测试程序P执行测试用例集TS,TS为待约简的初始测试用例集,根据测试用例执行路径收集语句覆盖信息,构建语句覆盖矩阵;2)由语句覆盖矩阵得到动态基本块集合B(TS),设动态基本块集合B (化)包含η个元素B1,化,...,Βη,则TS中每条测试用例、都被表示成一个η维的向量ti = <b” b2,…,bn> θ,(没覆盖动态基本块b
7 =Il名覆盖了动态基本块~将语句覆盖矩阵转化为动态基本块覆盖矩阵;3)设约简后的测试用例集为TS’,初始时TS’为空集,从TS中选择任意一条出现错误的测试用例加入到测试用例集TS’中;4)使用划分策略MDS或EDS挑选测试用例加入到TS’中,并判断所挑选的测试用例是否能继续对当前所挑选出的测试用例集所划分出的动态基本块做划分;5)如果能,则转步骤4)继续挑选测试用例,不能则转步骤6);6)将挑选的所有测试用例构成约简后的测试用例集TS’,用于缺陷定位。
3.根据权利要求2所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是最大划分策略MDS首先将步骤幻任意选择的那条错误测试、用例作为它选择的第一条用例,对于初始测试用例集TS,用N(BCTQ)表示TS划分出的动态基本块的数量,N(Btl (TS)) 表示TS对错误测试用例^覆盖的部分能够划分出的动态基本块数量,设当前已经选择的测试用例的集合为T。,MDS在TS中选择使N(Btl(TQ U {t}))达到最大值的测试用例t,将测试用例t加入Ttl,继续下一轮迭代选择,其中,当有不止一个t满足条件时,任意选择一个用例;直到对于所有未选择的测试用例t’,N(Btl(TQ U {t’ }))都与N(BtlCU)相同而不再增力口,由所选择的测试用例得到最终的约简后的测试用例集为TS’。
4.根据权利要求2所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是EDS采用迭代从TS中挑选测试用例,用Size(t,P)表示一条测试用例t划分一个临时块P产生的子块中较小的那一个包含的动态基本块的数量,假如t对P没有产生划分, Size(t, P)为0,设当前已经选择的测试用例的集合为Ttl,则Ttl = Tp U Tf,其中Tp代表正确测试用例的集合,Tf代表错误测试用例的集合,EDS挑选测试用例后后立即检查其正确与否,用ΝΦμΟ;))表示Tci对所有已选错误测试用例都覆盖的部分能够划分出的临时动态基本块数量,EDS挑选能够使
全文摘要
一种基于动态基本块的测试用例约简方法,首先根据执行路径构建语句覆盖矩阵,然后将语句覆盖矩阵转换为动态基本块覆盖矩阵,通过最大划分策略MDS和均匀划分策略EDS两种简约策略约简需要人工检查结果的测试用例集来节约人力,再将约简后的测试用例集用于缺陷定位。本发明可以从初始的测试用例集中选择出一个规模小得多的测试用例子集,极大地降低了开发人员对测试用例输出结果进行判断的负担,并且使用此测试用例集进行缺陷定位的效果与使用约简前的测试用例集相比几乎不下降。
文档编号G06F11/36GK102521131SQ201110413590
公开日2012年6月27日 申请日期2011年12月13日 优先权日2011年12月13日
发明者卢红敏, 徐宝文, 陈林, 马倩 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1