一种基于谓词自适应随机测试的测试用例集扩增方法

文档序号:6435320阅读:393来源:国知局
专利名称:一种基于谓词自适应随机测试的测试用例集扩增方法
技术领域
本发明属于软件测试技术领域,尤其是软件测试中回归测试技术领域,用于进行测试用例集的扩增,实现对新版本软件更全面地测试,为一种基于谓词自适应随机测试的测试用例集扩增方法。
背景技术
由于功能修改、性能调优、软件重构和错误修复等因素,软件需要修改演化。回归测试是对软件修改进行检测以确保其未引入新错误。现有回归测试研究通常分为三大类 测试用例选择(Test Case Selection),测试用例修复(Test Case R印airing),以及测试用例集扩增(Test Suite Augmentation)。测试用例选择的主要任务就是从原有测试用例中进行挑选,按目标不同可分为三类回归测试选择、测试用例集约简和测试用例优先级。 软件的修改可能使得原有测试用例不可用;测试用例修复的目标是将其修复成可用测试用例。测试用例集扩增则通过新增测试用例进行更加全面的回归测试。过去二十年回归测试研究主要集中在测试用例选择。然而在面向软件演化测试的一些应用中,重用部分甚至全部测试用例也不能完全满足软件演化带来的测试需求。例如, 原有测试用例往往不能测试到新增模块。因而需要新的测试用例来满足测试需求。测试用例集扩增通过软件修改分析提取新的测试需求,并通过特定测试用例生成方法得到新测试用例。测试用例集扩增的主要挑战是如何将软件修改分析与测试用例生成有机结合,以降低测试成本并提高回归测试的精度。当前的测试用例集扩增主要基于符号执行、启发式搜索等测试用例生成技术。白盒测试技术适合与软件修改分析相结合,但用其进行测试用例生成往往受限于过高的代价。

发明内容
本发明要解决的问题是现有的测试用例扩增方法不能满足回归测试中测试用例集扩增对测试成本和测试精度的要求,需要新的测试用例扩增方法来满足这些需求。本发明的技术方案为一种基于谓词自适应随机测试的测试用例集扩增方法,程序中的分支条件表达式称为分支,由分支条件回溯至输入域的表达式称为谓词,用于回归测试,结合软件修改分析的白盒测试技术与自适应随机测试ART的黑盒测试技术,首先进行谓词提取,然后通过谓词距离引导ART进行测试用例集扩增,包括以下步骤
1)使用Dejavu测试用例选择方法,从原测试用例集中选择经过修改部分的测试用例, 构成“选择的测试用例集”;
2)静态分析回归测试的新版本程序,提取程序中所有可能被提取的谓词;
3)采用谓词序列值的Jaccard距离计算测试用例之间的距离将提取出的谓词组成一个谓词集合,谓词数量记为凡77,谓词结果集中相同值的数量记为;然后使用测试用例t 静态执行谓词得到一个谓词结果集合R ;通过谓词结果集合R计算测试用例间的谓词距离, 测试用例间的谓词距离々(G t2)采用Jaccard距离计算,如下所示将所得谓词距离定义为测试用例间的距离;
4)进行基于谓词的自适应测试用例生成过程,生成新的测试用例集,具体过程为在输入域上随机生成η个测试用例,分别计算生成的测试用例与已选择测试用例集的各个测试用例之间的谓词距离,并将所得最小距离作为该生成的测试用例与已选择测试用例集之间的距离,然后将这η个测试用例中与已选择测试用例集距离最大的那个作为新增的测试用例,重复此过程m次,整个过程终止,m为需要扩增的测试用例数量;或者在设定的时间内未扩增新的测试用例时,整个过程终止。作为优选,步骤4)中,在输入域上随机生成η个测试用例,η=10。步骤2)中的谓词提取为从程序分支中静态回溯所提取的表达式,并表示为输入域变量和程序常量的表达式,其具体形式如下
Expression Θ Constant
Θ表示比较符号,Expression表示一个包含变量的表达式,Constant表示常量,对于谓词的其它形式,通过变换表示成此形式;对于Expression中含有非输入参数的变量,通过规约表示为输入参数的形式,规约后的谓词形式如下 Expression only with arguments Θ Constant 谓词提取时
1)忽略含有全局变量的分支;
2)忽略含有对库函数和第三方函数调用的谓词。本发明的特点在于1、提出谓词提取技术;2、提出谓词距离的定义;3、采用谓词距离进行自适应随机测试;4、结合测试用例选择技术和基于谓词的自适应测试技术进行测试用例集扩增。通过实验表明,本发明能够通过较低代价达到更高的分支覆盖。本发明方法结合软件修改分析的白盒测试技术与ART的黑盒测试技术,通过引入新的距离度量方式一谓词距离,引导ART进行测试用例集扩增,从而达到较低成本的测试用例集的有效扩增。测试用例集扩增的经验表明尽可能多利用原来版本的程序信息及测试用例集信息,可以有助于扩增的测试用例达到更好的测试效果。针对软件修改,我们首先采用白盒技术,在分析已有分支覆盖和软件修改信息的基础上,定位需要覆盖的分支条件集合,并将分支条件静态回溯至输入域得到新的谓词表达式。然后通过引入新的距离度量方式一谓词距离,引导ART黑盒测试技术进行有效的测试用例集扩增。程序静态分析技术和黑盒测试用例生成技术的结合,能够有效降低新测试用例生成代价,提高新增测试用例的测试精度。


图1为本发明的流程图。图2为本发明谓词提取的示例图。图3为利用本发明方法对0. 5%的测试用例集扩增15个新测试用例。图4为利用本发明方法对1%的测试用例集扩增10个新测试用例。
具体实施例方式如图1,本发明结合软件修改分析的白盒测试技术与自适应随机测试的黑盒测试技术对于回归测试中的测试用例集进行扩增,使其通过较低代价达到更高的分支覆盖率, 步骤如下
1)使用Dejavu测试用例选择方法,从原测试用例集中选择经过修改部分的测试用例, 构成“已选择测试用例集”,原有测试用例集T中其它测试用例则被去除;
2)静态分析回归测试的新版本程序,提取程序中所有可能被提取的谓词;程序中的分支条件表达式称为“分支”,由分支条件回溯至输入域的表达式称为“谓词”。谓词提取为 从程序分支中静态回溯所提取的表达式,并表示为输入域变量和程序常量的表达式,其具体形式如下
Expression Θ Constant
Θ表示比较符号,Expression表示一个包含变量的表达式,Constant表示常量,对于谓词的其它形式,通过变换表示成此形式;对于Expression中含有非输入参数的变量,通过规约表示为输入参数的形式,规约后的谓词形式如下 Expression only with arguments Θ Constant 谓词提取时
(1)若谓词中含有全局变量,由于全局变量值在程序运行时才能确定,全局变量值难以静态确定,因此忽略含有全局变量的分支;
(2)若谓词中含有对库函数和第三方函数的调用,由于此类函数难以静态分析,因此忽略此类谓词。特别注意的是,虽然更多的谓词能够表达更精确的“谓词距离”,但本发明的技术并不要求所有分支均静态回溯成谓词。谓词提取过程示例如图2,在这个例子中,示例程序共有3个不同谓词(Pl,P2, P3),下面介绍提取过程P1符合提取谓词的目标形式,所以直接输出;P2有一条路径通往程序入口,消除中间变量后输出;P3有两条路径通往程序入口,所以谓词规约为P3A和P3B, 提取后消除中间变量后输出。示例程序的谓词序列如表1所示。表1 示例程序的谓词提取序列
权利要求
1.一种基于谓词自适应随机测试的测试用例集扩增方法,程序中的分支条件表达式称为分支,由分支条件回溯至输入域的表达式称为谓词,其特征是用于回归测试,结合软件修改分析的白盒测试技术与自适应随机测试ART的黑盒测试技术,首先进行谓词提取,然后通过谓词距离引导ART进行测试用例集扩增,包括以下步骤1)使用Dejavu测试用例选择方法,从原测试用例集中选择经过修改部分的测试用例, 构成已选择测试用例集;2)静态分析回归测试的新版本程序,提取程序中所有能被提取的谓词;3)采用谓词序列值的Jaccard距离计算测试用例之间的距离将提取出的谓词组成一个谓词集合,谓词数量记为Nall,谓词结果集中相同值的数量记为Ns_ ;然后使用测试用例t 静态执行谓词得到一个谓词结果集合R ;通过谓词结果集合R计算测试用例间的谓词距离, 测试用例间的谓词距离D(t1; t2)采用Jaccard距离计算,如下所示D(t1; t2) = 1-Nsame/Nall将所得谓词距离定义为测试用例间的距离;4)进行基于谓词的自适应测试用例生成过程,生成新的测试用例集,具体过程为在输入域上随机生成η个测试用例,分别计算生成的测试用例与已选择测试用例集的各个测试用例之间的谓词距离,并将所得最小距离作为该生成的测试用例与已选择测试用例集之间的距离,然后将这η个测试用例中与已选择测试用例集距离最大的那个作为新增的测试用例,重复此过程m次,整个过程终止,m为需要扩增的测试用例数量;或者在设定的时间内未扩增新的测试用例时,整个过程终止。
2.根据权利要求1所述的一种基于谓词自适应随机测试的测试用例集扩增方法,其特征是步骤4)中,在输入域上随机生成η个测试用例,η = 10。
3.根据权利要求1或2所述的一种基于谓词自适应随机测试的测试用例集扩增方法, 其特征是步骤幻中的谓词提取为从程序分支中静态回溯所提取的表达式,并表示为输入域变量和程序常量的表达式,其具体形式如下Expression Θ ConstantΘ表示比较符号,Expression表示一个包含变量的表达式,Constant表示常量,对于谓词的其它形式,通过变换表示成此形式;对于Expression中含有非输入参数的变量,通过规约表示为输入参数的形式,规约后的谓词形式如下Expression only with arguments Θ Constant谓词提取时1)忽略含有全局变量的分支;2)忽略含有对库函数和第三方函数调用的谓词。
全文摘要
一种基于谓词自适应随机测试的测试用例集扩增方法,程序中的分支条件表达式称为分支,由分支条件回溯至输入域的表达式称为谓词,用于回归测试,结合软件修改分析的白盒测试技术与自适应随机测试ART的黑盒测试技术,首先进行谓词提取,然后通过谓词距离引导ART进行测试用例集扩增。本发明方法结合软件修改分析的白盒测试技术与ART的黑盒测试技术,从而达到较低成本的测试用例集的有效扩增。
文档编号G06F11/36GK102508770SQ20111030694
公开日2012年6月20日 申请日期2011年10月10日 优先权日2011年10月10日
发明者张 杰, 房春荣, 杨忠军, 赵志宏, 陈振宇 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1