CN102521131A - 一种基于动态基本块的缺陷定位测试用例约简方法 - Google Patents
一种基于动态基本块的缺陷定位测试用例约简方法 Download PDFInfo
- Publication number
- CN102521131A CN102521131A CN2011104135907A CN201110413590A CN102521131A CN 102521131 A CN102521131 A CN 102521131A CN 2011104135907 A CN2011104135907 A CN 2011104135907A CN 201110413590 A CN201110413590 A CN 201110413590A CN 102521131 A CN102521131 A CN 102521131A
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- case
- fundamental block
- yojan
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 172
- 230000007547 defect Effects 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 38
- 239000011159 matrix material Substances 0.000 claims abstract description 40
- 238000013101 initial test Methods 0.000 claims abstract description 16
- 238000005192 partition Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 claims description 14
- 238000001310 location test Methods 0.000 claims description 10
- 238000007689 inspection Methods 0.000 claims description 5
- 238000010998 test method Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 14
- 241000239292 Theraphosidae Species 0.000 description 6
- 239000012141 concentrate Substances 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- HUTDUHSNJYTCAR-UHFFFAOYSA-N ancymidol Chemical compound C1=CC(OC)=CC=C1C(O)(C=1C=NC=NC=1)C1CC1 HUTDUHSNJYTCAR-UHFFFAOYSA-N 0.000 description 1
- 230000007850 degeneration Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种基于动态基本块的测试用例约简方法,首先根据执行路径构建语句覆盖矩阵,然后将语句覆盖矩阵转换为动态基本块覆盖矩阵,通过最大划分策略MDS和均匀划分策略EDS两种简约策略约简需要人工检查结果的测试用例集来节约人力,再将约简后的测试用例集用于缺陷定位。本发明可以从初始的测试用例集中选择出一个规模小得多的测试用例子集,极大地降低了开发人员对测试用例输出结果进行判断的负担,并且使用此测试用例集进行缺陷定位的效果与使用约简前的测试用例集相比几乎不下降。
Description
技术领域
本发明属于软件测试技术领域,涉及软件测试结果的验证及缺陷定位技术,主要应用于测试输入的产生和测试用例的执行可以自动完成,但测试结果需要人工比对的场景下,为一种基于动态基本块的缺陷定位测试用例约简方法。
背景技术
基于测试执行的语句覆盖的缺陷定位技术通过运行测试用例集来获取程序的动态执行信息,根据语句的覆盖情况和用例的执行结果计算各条语句的可疑度,具有高可疑度的语句优先被检查。其中,最具有代表性的是Agrawal等的削片方法,Renieris和Reiss的最近邻方法,Jones和Harrold等提出的Tarantula方法。
研究表明这些基于覆盖信息的缺陷定位技术可以有效地减少程序中需要检查的语句数,从而减少了缺陷定位的工作量。然而,基于覆盖信息的缺陷定位技术要求测试用例集具有很高的语句覆盖率,虽然现有的测试用例生成工具可以自动生成高覆盖率的测试输入,但是这些测试输入对应的输出结果是未知的。人工判断所有的输出结果对测试人员来说是及其困难且不现实的。而且,判断测试输入的执行结果正确与否,是测试领域的难题:测试预言问题。
这个问题的存在严重影响了基于覆盖信息的缺陷定位技术在实际中的应用,带来了极大的负担。考虑到用测试用例生成工具自动生成的测试输入集存在很大的冗余,研究人员提出对测试输入进行约简,采用一些策略从测试用例集中挑选出部分用例组成一个子集。测试人员只需检查这个子集的测试输出结果,然后在这个子集上应用基于覆盖信息的缺陷定位技术即可。
Yu Y和Jones J等研究了测试用例集的约简对缺陷定位效果的影响,他们的实验表明,在测试用例约简和缺陷定位效果间存在一个折中,一般来说,现有的测试用例约简策略降低了缺陷定位的效果。Hao Dan等人提出了一种包含三种策略(下面分别称为S1,S2,S3)的测试输入约简方法(Hao D,Xie T,Zhang L,etal.Test input reduction for result inspection to facilitate fault localization.Journal ofAutomated 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)包含n个元素B1,B2,...,Bn,则TS中每条测试用例ti都被表示成一个n维的向量:
ti=<b1,b2,...,bn>
将语句覆盖矩阵转化为动态基本块覆盖矩阵;
3)设约简后的测试用例集为TS’,初始时TS’为空集,从TS中选择任意一条出现错误的测试用例加入到测试用例集TS’中;
4)使用划分策略MDS或EDS挑选测试用例加入到TS’中,并判断所挑选的测试用例是否能继续对当前所挑选出的测试用例集所划分出的动态基本块做划分;
5)如果能,则转步骤4)继续挑选测试用例,不能则转步骤6);
6)将挑选的所有测试用例构成约简后的测试用例集TS’,用于缺陷定位。
3、根据权利要求2所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是最大划分策略MDS首先将步骤3)任意选择的那条错误测试t1用例作为它选择的第一条用例,对于初始测试用例集TS,用N(B(TS))表示TS分出的动态基本块的数量,N(Bt1(TS))表示TS对错误测试用例t1覆盖的部分能够划分出的动态基本块数量,设当前已经选择的测试用例的集合为T0,MDS在TS中选择使N(Bt1(T0∪{t}))达到最大值的测试用例t,将测试用例t加入T0,继续下一轮迭代选择,其中,当有不止一个t满足条件时,任意选择一个用例;直到对于所有未选择的测试用例t’,N(Bt1(T0∪{t’}))都与N(Bt1(T0))相同而不再增加,由所选择的测试用例得到最终的约简后的测试用例集为TS’。
4、根据权利要求2所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是EDS采用迭代从TS中挑选测试用例,用Size(t,P)表示一条测试用例t划分一个临时块P产生的子块中较小的那一个包含的动态基本块的数量,假如t对P没有产生划分,Size(t,P)为0,设当前已经选择的测试用例的集合为T0,则T0=Tp∪Tf,其中Tp代表正确测试用例的集合,Tf代表错误测试用例的集合,EDS挑选测试用例后后立即检查其正确与否,用N(BTf(T0))表示T0对所有已选错误测试用例都覆盖的部分能够划分出的临时动态基本块数量,EDS挑选能够使最大的用例,当对所有未挑选的测试用例都为0时,说明所有需要被划分的动态基本块都被划分开来,不再产生新的划分,EDS收敛,完成挑选,由所选择的测试用例得到最终的约简后的测试用例集为TS’。
在基于测试执行的语句覆盖信息的缺陷定位技术中,缺陷定位算法可以识别的最小单元为动态基本块,位于同一个动态基本块中的两条语句将被赋予相同的可疑度,本发明提出了一种基于动态基本块覆盖的测试用例约简算法,将每条测试用例表示成以动态基本块为单位的向量,并在此基础上采用两种策略对测试用例集进行约简:最大划分策略MDS(maximum division strategy)和均匀划分策略EDS(even division strategy),两种策略都能够从待约简的初始测试用例集中选出一个较小的子集,与初始测试用例集相比,利用这个子集进行缺陷定位的效果几乎不下降。
本发明的特征是:
首先,对语句覆盖矩阵做计算,找到初始测试用例集TS划分出的所有动态基本块B(TS),假设B(TS)含有n个元素,将每条测试用例表示成n维向量,语句覆盖矩阵转化为动态基本块覆盖矩阵。
此时,B(TS)中的各个元素是互相可区分的,即动态基本块覆盖矩阵中的每一行都不相同。注意到,从初始测试用例集中移除部分测试用例,覆盖矩阵可能因为列的减少而产生相同的行,假设此时剩余测试用例集用T表示,则T划分的动态基本块集合B(T)中元素个数可能因为相同行的合并而小于n。一个极端的例子是当约简后的子集只包含一条测试用例时,动态基本块覆盖矩阵只剩一列,B(T)只包含两个元素。为了使约简后的测试用例子集具有最强的划分能力,约简后B(T)的元素个数与B(TS)相比不减少,且尽可能使得T的规模最小,本发明提出了MDS和EDS两种具体的约简策略。
从测试用例集中挑选出一个子集,由于丢失了部分信息,原本位于两个动态基本块中的可以区分开来的语句可能因为动态基本块的合并成为同一个基本块中的语句而变得不可区分。这种现象在动态基本块覆盖矩阵中表现为移除列所造成的行合并,被合并行中的动态基本块退化为一个块。注意到,若初始的测试用例集有n个动态基本块,那么它的子集可以划分出的动态基本块的数量最大为n。为防止行合并造成缺陷定位效果下降,需要保证约简后的用例集对应的动态基本块覆盖矩阵与约简前的矩阵行数相同,即原来的动态基本块仍可以被用例集相互区分开来。最大划分策略MDS反过来执行这个过程,不是从初始测试用例集中移除用例,而是采用迭代挑选最优用例作为保留的用例,即向空矩阵中添加列,将一个退化的块不断划分,直到初始测试用例集对应的动态基本块都被划分开来。
MDS工作时,挑选能够划分出更多块的用例,而不关心是如何划分的。假如一条用例产生了新的划分,它将当前的某一块划分成两个新的子块,这两个子块的大小可能接近,也可能相差悬殊。可以想象,均匀划分能够更快的收敛;而当划分不均匀,产生了一个较大的子块和一个较小的子块时,较大的那个块很可能需要更多的用例才能被划分开来。均匀划分策略EDS在MDS的基础上挑选不但能够划分出更多的块而且能更均匀划分的用例。因此对于本发明而言,EDS的约简效率优于MDS。MDS迭代挑选用例,算法结束后再判断挑选出的子集中所有用例的执行结果是否正确。然而,已经挑选出的用例能够提供更多的信息,假如除第一条用例以外的某条已选用例是错误的,那么错误不会在它没有执行的部分,它可以帮助缩小错误所在的可能范围。因而,EDS每挑选一条用例,就马上检查它的结果正确与否,假如是错误的,就将当前划分对象的范围与它覆盖的部分做交集运算,以减小需要划分的块的数量。
本发明首次使用了动态基本块覆盖标准作为测试用例的约简标准,将每条测试用例都表示成以动态基本块为单位的向量,并在此基础上提供了两种具体的测试用例约简策略。本发明可以从初始的测试用例集中选择出一个规模小得多的测试用例子集,极大地降低了开发人员对测试用例输出结果进行判断的负担,并且使用此测试用例集进行缺陷定位的效果与使用约简前的测试用例集相比几乎不下降。
附图说明
图1为本发明的流程示意图。
图2(a)为分别使用S1,S2,及本发明MDS和EDS约简用例集前后,利用Tarantula方法在西门子程序集上的缺陷定位效率。
图2(b)为分别使用S1,S2,及本发明MDS和EDS约简用例集前后,利用Tarantula方法在Space程序集上的缺陷定位效率。
具体实施方式
基于覆盖信息的缺陷定位技术通过计算语句的可疑度对语句进行排名,而位于同一动态基本块内的语句具有相同的覆盖信息,总是被赋予相同的可疑度因而无法被区分开来。表面上,基于覆盖信息的缺陷定位技术是对语句的可疑度排名,实际上是对测试用例集所划分出的动态基本块做可疑度排名。动态基本块是基于覆盖信息的缺陷定位技术所能识别的最小粒度。考虑到动态基本块的这一特性,本发明提出了利用动态基本块覆盖来进行测试用例约简。动态基本块覆盖将每条测试用例都表示成以动态基本块为单位的向量。本发明实施的步骤主要包括:
1)对待测试程序P执行测试用例集TS,TS为待约简的初始测试用例集,根据测试用例执行路径收集语句覆盖信息,构建语句覆盖矩阵;
2)由语句覆盖矩阵得到动态基本块集合B(TS),将语句覆盖矩阵转化为动态基本块覆盖矩阵;
3)设约简后的测试用例集为TS’,初始时TS’为空集,从TS中选择任意一条出现错误的测试用例加入到测试用例集TS’中;
4)使用划分策略MDS或EDS挑选测试用例加入到TS’中,并判断所挑选的测试用例是否能继续对当前所挑选出的测试用例集所划分出的动态基本块做划分;
5)如果能,则转步骤4)继续挑选测试用例,不能则转步骤6);
6)将挑选的所有测试用例构成约简后的测试用例集TS’,用于缺陷定位。
给定一个待测试程序P,包含m条可执行语句s1,S2,...,sm,测试用例集TS,假设P被TS分出的动态基本块的集合B(TS)包含n个元素B1,B2,...,Bn,则TS中每条测试用例都被表示成一个n维的向量:
ti=<b1,b2,...,bn>
其中B(TS)从覆盖矩阵中可以很容易地被计算出。
下面以实例程序Mid()为例说明本发明的具体实施过程。
表1显示了Mid()程序和它的覆盖矩阵。Mid()的功能是求三个输入值中的中值,如表1所示,错误存在于第7行,正确的程序应把x的值而不是y的值赋给m。由覆盖矩阵可以看出,语句s1,s2,s3和s13被全部的测试用例执行了,它们组成一个动态基本块;s8和s9具有相同的行,组成一个动态基本块;其他的语句分别为一个块。最后可以得出B(TS)={(s1,s2,s3,s13),(s4),(s5),(s6),(s7),(s8,s9),(s10),(s11),(s12)}。由此,每条测试用例都可以表示成一个9维的向量。t1=<1,1,0,1,1,0,0,0,0>,t2的覆盖信息与t1相同,表示成向量也为<1,1,0,1,1,0,0,0,0>。t3=<1,1,1,0,0,0,0,0,0,0>,t4=<1,0,0,0,0,1,1,1,0,0>,t5=<1,0,0,0,0,1,0,1,0>,t6=<1,1,0,1,0,0,0,0,0>。这样,原来以语句为单位的13维的测试用例被表示成以动态基本块为单位的9维的向量。全部测试用例的覆盖信息转化为一个新的动态基本块覆盖矩阵,如表2所示。
表1.Mid程序及其覆盖信息
表2.Mid程序的动态基本块覆盖矩阵
本发明的目的是在已经生成的庞大的测试用例集上进行约简,用保留的用例子集进行缺陷定位,仍能保持与约简前相近的效果。约简是为了方便缺陷定位更好地工作,因此,约简过程中应当尽量保留能够为找到错误提供信息的用例,丢弃对缺陷定位没有帮助的用例。而基于覆盖信息的缺陷定位算法可以识别的最小粒度为动态基本块,被相同的测试用例覆盖的语句处于同一动态基本块,具有相同的可疑度而不能够被区分开来。因此,对缺陷定位技术而言,一个好的测试用例集必须对语句具有良好的可区分性,可以划分出相对较多的动态基本块。根据这个思想,本发明的约简算法寻找具有最强划分能力的用例子集。
下面分别介绍两种不同的划分策略MDS和EDS的实施过程。
最大划分策略MDS首先将初始的那条错误用例作为它选择的第一条用例。在应用约简策略之前,除了这条错误用例的输出结果已知,其他用例的输出结果都是未知的,这样做可以保证选择出的子集至少包含一条揭示错误的错误测试用例。而错误只可能在初始错误测试用例覆盖的那些语句中,因此没有必要对初始测试用例集划分出的全部动态基本块加以区分,MDS只对初始错误测试用例覆盖的那些基本块做有效划分,以保证约简后的子集能够把这部分基本块相互区分开来。
对于给定的测试用例集TS,用N(B(TS))表示TS划分出的动态基本块的数量,N(Bt1(TS))代表TS对初始错误测试用例t1覆盖的部分能够划分出的动态基本块数量,假设当前已经选择的测试用例的集合为T0,策略1迭代的选择能够使N(Bt1(T0∪{t}))达到最大值的t,并将T0更新继续下一轮迭代。直到对于所有未选择的t,N(Bt1(T0∪{t}))都与N(Bt1(T0))相同而不再增加。当有不止一个t满足条件时,任意选择一个用例,如可以选择最靠前的那条。MDS必定会收敛,且收敛时N(Bt1(T0))即为初始错误测试用例t1覆盖的基本块的数量N(Bt1)。
MDS的每次迭代都需要对初始测试用例集的动态基本块覆盖矩阵按列扫描一次,并记录当前的划分情况。仍以mid()程序为例,表3显示了MDS的工作过程。第1列为迭代次数,第2列给出此次迭代开始时已被选出的用例组成的集合,第3列记录了当前T0对t1覆盖部分的划分情况,第4列列出划分产生的块数,第5列显示了对所有未选择的用例N(Bt1(T0∪{ti}))的值。
开始时,T0只包含一个元素t1,t1覆盖了动态基本块B1,B2,B4,B5,但由于此时只有t1一条用例,B1,B2,B4,B5不能够被划分开来,它们退化为一个块,N(Bt1(T0))=N(Bt1(t1))=1。t2的覆盖与t1完全相同,假如选择t2,块的数量不会增加,而选择t3,t4,t5,t6中的任何一个,都能够将块的数量增加为2。我们选择最先出现的t3,此时,T0更新为{t1,t3},由T0划分开的两个块为P1={B1,B2}和P2={B4,B5}。按照这个方法继续选择,经过4轮迭代之后,B1,B2,B4,B5全部被划分开来,此时,无论选择哪条未被选择的用例,块的数量都不会再增加,因为N(Bt1(T0))已经达到了最大值,即与N(Bt1)相同,为4。最终选择出的子集为{t1,t3,t4,t6}。注意到,在迭代过程中,当有多个用例都能最大化N(Bt1(T0∪{t}))时,无论选择哪条用例,算法收敛时的块数都为N(Bt1)。
MDS必定会收敛,最差的情况是全部的测试用例都被选择,没有用例被丢弃,但对于大规模的测试用例集而言,一般总是存在部分信息冗余,因此这是几乎不可能出现的。
表3.MDS在mid程序上的工作流程
MDS工作时,挑选能够划分出更多块的用例,而不关心是如何划分的。均匀划分策略EDS在MDS的基础上挑选不但能够划分出更多的块而且能更均匀划分的用例。另外,MDS迭代挑选用例,结束后再判断挑选出的子集中所有用例的执行结果是否正确。然而,已经挑选出的用例能够提供更多的信息,假如除第一条用例以外的某条已选用例是错误的,那么错误不会在它没有执行的部分,它可以帮助缩小错误所在的可能范围。因而,EDS每挑选一条用例,就马上检查它的结果正确与否,假如是错误的,就将当前划分对象的范围与它覆盖的部分做交集运算,以减小需要划分的块的数量。很明显,这可以让过程收敛更快,选出的子集规模更小。
我们用Size(t,P)表示一条测试用例t划分一个临时块P产生的子块中较小的那一个包含的动态基本块的数量,假如t对P没有产生划分,Size(t,P)为0。仍假设当前已经选择的测试用例的集合为T0,则T0=Tp∪Tf,其中Tp代表正确测试用例的集合,Tf代表错误测试用例的集合。EDS挑选后立即检查的做法使得Tp与Tf都为可知的。用N(BTf(T0))表示T0对所有已选错误测试用例都覆盖的部分能够划分出的临时动态基本块数量。EDS总是挑选能够使最大的用例ti。当对所有未挑选的用例都为0时,说明所有需要被划分的动态基本块都被划分开来,不再产生新的划分,EDS收敛,完成挑选。
表4.EDS在Mid程序上的工作流程
初始时,T0包含一个元素t1,覆盖了动态基本块B1,B2,B4,B5,它们退化为一个块P1。t2不产生新的划分;t3将P1划分成大小相同的两个子块,t4,t5和t6虽然也能把P1划分成两个块,但较大的块包含3个动态基本块,较小的块只有一个动态基本块,它们的所以在第一轮的迭代中应该选择t3,并马上判断t3的结果,它是一条正确的测试用例,不需要做交集运算缩小划分对象的范围。4轮迭代之后,算法收敛,选出的测试用例子集为{t1,t3,t4,t6}。
如表5和表6,我们将Hao的三种策略S1,S2,S3及本发明的两种策略MDS和EDS在西门子程序集和Space程序集中做了测试用例约简,得到了平均约简剩余率。行代表子程序,列表示约简策略。表中的每个入口指出用相应的约简策略约简得到的平均约简剩余率。表5最后一行是一个汇总,用西门子程序集全部子程序的全部错误版本计算求得。
表5作用于西门子程序集的测试用例集平均约简剩余率
MDS | EDS | S1 | S2 | S3 | |
print_tokens | 0.339 | 0.266 | 0.460 | 0.291 | 0.969 |
print_tokens2 | 0.389 | 0.365 | 0.510 | 0.389 | 1.531 |
replace | 0.343 | 0.325 | 0469 | 0.325 | 1.895 |
schedule | 0.491 | 0.453 | 0.528 | 0.491 | 3.698 |
schedule2 | 0.443 | 0.480 | 0.554 | 0.443 | 1.697 |
tcas | 0.373 | 0.373 | 0435 | 0.373 | 0.871 |
tot_info | 1.236 | 1.141 | 1.521 | 1.236 | 4.658 |
avg | 0.449 | 0.421 | 0.554 | 0.430 | 1.878 |
表6作用于Space的测试用例集平均约简剩余率
MDS | EDS | S1 | S2 | S3 | |
Space | 0.385 | 0.361 | 0.881 | 0.380 | 3.217 |
如图2(a)和2(b),我们用约简前后的测试用例集分别在西门子程序集和Space程序集上做了缺陷定位,得到了缺陷定位效果比较。其中缺陷定位方法使用的是已有的Tarantula方法。图中所示分别为利用S1,S2,MDS,EDS约简后使用Tarantula方法所得的定位效果及约简前使用Tarantula方法的缺陷定位效果。由于S3约简效率最低,约简后的用例集规模比其他几种策略高一个数量级,与本发明的策略在缺陷定位效率上不具有可比性,因此没有比较。
Claims (4)
1.一种基于动态基本块的缺陷定位测试用例约简方法,在基于测试执行的语句覆盖信息的缺陷定位技术中,缺陷定位算法可以识别的最小单元为动态基本块,其特征是根据测试用例的执行路径构建语句覆盖矩阵,由语句覆盖矩阵得到动态基本块集合,根据动态基本块集合将每条测试用例表示成以动态基本块为单位的向量,将语句覆盖矩阵转换为动态基本块覆盖矩阵,对其中需要人工检查结果的测试用例集进行约简:采用最大划分策略MDS或均匀划分策略EDS挑选测试用例,并判断所挑选的测试用例是否能继续对当前已划分出的动态基本块做划分,如果能,则保留已挑选的测试用例,继续挑选余下的测试用例,如果不能,则将已经挑选的所有测试用例构成约简后的测试用例集,约简后的测试用例集用于缺陷定位。
2.根据权利要求1所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是包括以下步骤:
1)对待测试程序P执行测试用例集TS,TS为待约简的初始测试用例集,根据测试用例执行路径收集语句覆盖信息,构建语句覆盖矩阵;
2)由语句覆盖矩阵得到动态基本块集合B(TS),设动态基本块集合B(TS)包含n个元素B1,B2,...,Bn,则TS中每条测试用例ti都被表示成一个n维的向量:
ti=<b1,b2,...,bn>
将语句覆盖矩阵转化为动态基本块覆盖矩阵;
3)设约简后的测试用例集为TS’,初始时TS’为空集,从TS中选择任意一条出现错误的测试用例加入到测试用例集TS’中;
4)使用划分策略MDS或EDS挑选测试用例加入到TS’中,并判断所挑选的测试用例是否能继续对当前所挑选出的测试用例集所划分出的动态基本块做划分;
5)如果能,则转步骤4)继续挑选测试用例,不能则转步骤6);
6)将挑选的所有测试用例构成约简后的测试用例集TS’,用于缺陷定位。
3.根据权利要求2所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是最大划分策略MDS首先将步骤3)任意选择的那条错误测试t1用例作为它选择的第一条用例,对于初始测试用例集TS,用N(B(TS))表示TS划分出的动态基本块的数量,N(Bt1(TS))表示TS对错误测试用例t1覆盖的部分能够划分出的动态基本块数量,设当前已经选择的测试用例的集合为T0,MDS在TS中选择使N(Bt1(T0∪{t}))达到最大值的测试用例t,将测试用例t加入T0,继续下一轮迭代选择,其中,当有不止一个t满足条件时,任意选择一个用例;直到对于所有未选择的测试用例t’,N(Bt1(T0∪{t’}))都与N(Bt1(T0))相同而不再增加,由所选择的测试用例得到最终的约简后的测试用例集为TS’。
4.根据权利要求2所述的一种基于动态基本块的缺陷定位测试用例约简方法,其特征是EDS采用迭代从TS中挑选测试用例,用Size(t,P)表示一条测试用例t划分一个临时块P产生的子块中较小的那一个包含的动态基本块的数量,假如t对P没有产生划分,Size(t,P)为0,设当前已经选择的测试用例的集合为T0,则T0=Tp∪Tf,其中Tp代表正确测试用例的集合,Tf代表错误测试用例的集合,EDS挑选测试用例后后立即检查其正确与否,用N(BTf(T0))表示T0对所有已选错误测试用例都覆盖的部分能够划分出的临时动态基本块数量,EDS挑选能够使最大的用例,当对所有未挑选的测试用例都为0时,说明所有需要被划分的动态基本块都被划分开来,不再产生新的划分,EDS收敛,完成挑选,由所选择的测试用例得到最终的约简后的测试用例集为TS’。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110413590.7A CN102521131B (zh) | 2011-12-13 | 2011-12-13 | 一种基于动态基本块的缺陷定位测试用例约简方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110413590.7A CN102521131B (zh) | 2011-12-13 | 2011-12-13 | 一种基于动态基本块的缺陷定位测试用例约简方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521131A true CN102521131A (zh) | 2012-06-27 |
CN102521131B CN102521131B (zh) | 2014-10-29 |
Family
ID=46292062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110413590.7A Expired - Fee Related CN102521131B (zh) | 2011-12-13 | 2011-12-13 | 一种基于动态基本块的缺陷定位测试用例约简方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521131B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932975A (zh) * | 2015-05-28 | 2015-09-23 | 浪潮(北京)电子信息产业有限公司 | 一种测试用例选择方法和装置 |
CN105550110A (zh) * | 2015-12-10 | 2016-05-04 | 艾瑞克·李 | 软件图形用户人机接口测试用例的自动生成方法 |
CN109597747A (zh) * | 2017-09-30 | 2019-04-09 | 南京大学 | 一种基于多目标优化算法nsga-ⅱ推荐跨项目关联缺陷报告的方法 |
CN111274129A (zh) * | 2020-01-16 | 2020-06-12 | 浙江理工大学 | 一种基于动态程序失效执行块的程序错误定位方法 |
CN112052153A (zh) * | 2019-06-06 | 2020-12-08 | 腾讯科技(深圳)有限公司 | 产品版本测试方法及装置 |
CN113076250A (zh) * | 2021-04-14 | 2021-07-06 | 南京大学 | 一种带约束测试模型的动态随机测试方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376080B (zh) * | 2018-09-27 | 2021-10-01 | 北京大学 | 时间适配的自动化缺陷定位方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240113A1 (en) * | 2006-01-30 | 2007-10-11 | Microsoft Corporation | Model independent input reduction |
CN101814055A (zh) * | 2010-04-06 | 2010-08-25 | 南京大学 | 一种测试用例聚类取样方法 |
-
2011
- 2011-12-13 CN CN201110413590.7A patent/CN102521131B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240113A1 (en) * | 2006-01-30 | 2007-10-11 | Microsoft Corporation | Model independent input reduction |
CN101814055A (zh) * | 2010-04-06 | 2010-08-25 | 南京大学 | 一种测试用例聚类取样方法 |
Non-Patent Citations (1)
Title |
---|
BENOIT BAUDRY 等: "Improving Test Suites For Efficient Fault Localization", 《28TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932975A (zh) * | 2015-05-28 | 2015-09-23 | 浪潮(北京)电子信息产业有限公司 | 一种测试用例选择方法和装置 |
CN104932975B (zh) * | 2015-05-28 | 2018-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种测试用例选择方法和装置 |
CN105550110A (zh) * | 2015-12-10 | 2016-05-04 | 艾瑞克·李 | 软件图形用户人机接口测试用例的自动生成方法 |
CN105550110B (zh) * | 2015-12-10 | 2017-12-15 | 艾瑞克·李 | 软件图形用户人机接口测试用例的自动生成方法 |
CN109597747A (zh) * | 2017-09-30 | 2019-04-09 | 南京大学 | 一种基于多目标优化算法nsga-ⅱ推荐跨项目关联缺陷报告的方法 |
CN112052153A (zh) * | 2019-06-06 | 2020-12-08 | 腾讯科技(深圳)有限公司 | 产品版本测试方法及装置 |
CN112052153B (zh) * | 2019-06-06 | 2023-05-16 | 腾讯科技(深圳)有限公司 | 产品版本测试方法及装置 |
CN111274129A (zh) * | 2020-01-16 | 2020-06-12 | 浙江理工大学 | 一种基于动态程序失效执行块的程序错误定位方法 |
CN113076250A (zh) * | 2021-04-14 | 2021-07-06 | 南京大学 | 一种带约束测试模型的动态随机测试方法及装置 |
CN113076250B (zh) * | 2021-04-14 | 2023-08-25 | 南京大学 | 带约束测试模型的动态随机测试方法、装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102521131B (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521131A (zh) | 一种基于动态基本块的缺陷定位测试用例约简方法 | |
CN102750153B (zh) | 一种基于程序变更的回归测试用例集构建方法 | |
CN101377758B (zh) | 一种生成测试用例的方法和装置 | |
CN105718641A (zh) | 批量化建立cae二维网格的方法 | |
CN103617119B (zh) | 基于语句交互覆盖的回归测试用例选择方法 | |
CN105825045A (zh) | 多阶段任务系统可修备件需求预测方法 | |
CN104317707A (zh) | 一种基于程序结构影响感知的软件错误定位方法 | |
CN103309811A (zh) | 一种基于测试执行记录快速定位软件代码缺陷的方法 | |
CN104318110A (zh) | 一种基于重要度和敏感性复合排序的提高大型复杂系统风险设计及维修效率的方法 | |
CN103353895A (zh) | 一种配电网线损数据的预处理方法 | |
CN111782532A (zh) | 一种基于网络异常节点分析的软件故障定位方法及系统 | |
US8266573B2 (en) | Method and system for test point insertion | |
CN105183624B (zh) | 一种基于数据匹配的仿真回放方法 | |
CN102332048B (zh) | 集成电路设计过程中单节点并行自动修复保持时间违例的方法 | |
CN106919762A (zh) | 一种有限元网格阵列建模方法 | |
CN103605603B (zh) | 覆盖表约简的方法及系统 | |
CN102436525A (zh) | 一种集成电路设计过程中多节点并行自动修复保持时间违例的方法 | |
KR101482229B1 (ko) | 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체 | |
CN115879720A (zh) | 一种采用通用检测工具检测的检查次序优化方法和系统 | |
CN105068793A (zh) | 生成业务逻辑关系图以及实现业务应用的方法和装置 | |
JPWO2016151710A1 (ja) | 仕様構成装置および方法 | |
CN102902623B (zh) | 一种复杂系统测试优选的实现方法 | |
CN104933234A (zh) | 一种铁路机车抗侧滚扭杆系统中扭杆组件的分析方法 | |
CN102073584B (zh) | 基于附加测试的多参数系统错误模式快速定位方法 | |
CN104407969A (zh) | 基于路径特征的程序执行轨迹状态自动获取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141029 Termination date: 20141213 |
|
EXPY | Termination of patent right or utility model |