论文部分内容阅读
随着信息化技术与人类社会的不断结合,人类与软件之间也越来越密不可分。而自从软件问世以来,其质量问题一直是困扰人们的一大难题,每年因为软件质量造成的损失更是数以亿万计。为此,众多研究者们不断探索,希望找到一种切实有效的测试方法。如今比较流行的一种测试方法是随机测试(Random Testing,RT),随机测试凭借实现快、操作简单的特点受到了众多业内人士的青睐。但随机测试也存在着检测效率较低的缺点,通过多年研究,TY Chen等人针对程序错误普遍连续的特性,在随机测试的基础上进行改进,并提出了一种名为自适应随机测试(Adaptive Random Testing,ART)的高效算法。ART算法的基本思想是,在输入域中使生成的测试用例尽可能均匀地散布,从而提高检测软件缺陷的效率。基于该思想,许多ART算法也被提出,其中变概率ART算法是目前其中检测效果最好的算法之一。本文重点分析了其中一种变概率ART算法——基于概率密度函数的ART算法(Adaptive Random Testing through Test Profile,ARTTP),该方法通过已执行测试用例生成一个概率密度函数,并利用逆变换法得到下一个测试用例。本文在分析了ARTTP算法后,针对该算法的不足之处提出了改进,并将其应用到面向对象程序测试中,最后实现了一个基于两种算法的测试原型系统并进行实验,实验证明本文提出的算法具有一定的有效性。本文的主要工作如下:1.针对ARTTP算法对程序动态信息利用不足的缺陷,本文在该算法基础上进行改进,提出了两种回归测试中的变概率ART算法(Probability Adaptive Random Testing based on Regression Testing,PARTRT)。PARTRT-A算法的主要思想是首先随机生成大量的测试用例并执行,通过插桩等方法获取它们的语句覆盖和分支覆盖信息,之后在回归测试中在变概率ART算法的基础上,针对不同的动态信息选择不同的比较方式进行挑选测试用例,以此改进ART算法从而进一步提高它的检测效果。PARTRT-B算法的主要思想则是利用变概率ART算法生成测试用例并执行,在获取动态信息后通过比较不同的动态信息进行挑选测试用例,从而提高检测软件缺陷的效率。通过对不同实际程序的测试,并与其他相关算法比较,结果表明两种PARTRT算法在检测效果上都具有更高的优越性,且时间开销也不是特别大。2.由于面向对象程序的众多优点,现在面向对象程序越来越普及,然而现在面向对象程序测试方法还依旧不够成熟。针对这一问题,我们提出针对面向对象程序的ARTTP算法(Adaptive Random Testing through Test Profile for Object-Oriented Software,ARTTP-OO)。由于面向对象测试用例结构复杂,无法简单地将一个测试用例数值化一个点从而生成概率密度函数。为此我们提出在输入域边缘生成一个测试用例,利用OMISS度量公式计算面向对象测试用例间的距离。通过距离生成概率密度函数,从而能够挑选测试用例进行测试,实现了ARTTP算法在面向对象程序中的应用。通过对实际面向对象程序的测试,ARTTP-OO算法在不降低检测效果的情况下,具有较少的时间开销。3.设计并实现了一个基于上述变概率ART算法的测试原型系统。通过将本文算法继承在系统中,实现了算法测试的自动化。系统主要包括数值型程序测试和面向对象程序测试两个模块,每个模块下有各自的子模块。利用该系统进行算法测试,证明了该原型系统能较好地实现本文算法,并具有较高的可扩展性。