关键词:
面向对象软件
自适应随机测试
聚类算法
测试用例生成
距离度量
摘要:
随着面向对象技术的不断发展,面向对象软件得到了广泛的应用。然而由于面向对象语言的封装性、继承性和多态性等特性,传统的软件测试技术并不能直接应用于面向对象软件测试。由于随机测试的简单性和易用性,随机测试已被普遍的应用到面向对象软件的测试中。但是随机测试的有效性和效率会受到被测软件的大小和复杂性影响,自适应随机测试能够克服这一缺陷。自适应随机测试的核心思想是通过给定的度量机制来生成均匀分布在整个输入域上的测试输入。通过定义好的一种对象间的距离度量机制,将自适应随机测试技术与面向对象软件测试结合在一起,就形成了面向对象软件自适应随机测试方法。然而,传统的面向对象测试方法在选择测试用例执行时带有随机性,极有可能会连续重复执行相似的测试输入,导致类似的测试结果的产生,降低了缺陷发现的效率。若将有不同特性且均匀的分布在输入域上的测试用例优先执行,提高测试用例的多样性,那么就能更快的找出缺陷。另外,在面向对象自适应随机测试中,所有已执行的测试用例将放到一个集合中作为已执行测试用例集,并生成固定数量的测试用例放入另一个集合中作为候选测试用例集。为了减少时间开销,自适应随机测试往往从已执行测试用例集中根据一定策略挑选出部分测试用例来代表整个已执行测试用例集并与候选测试用例集中的测试用例进行距离计算,从而挑选出距离已执行测试用例集最远的测试用例作为下一个执行对象。现有面向对象自适应随机测试在已执行测试用例集中采取的策略具有随机性,并不一定能挑选出具有代表性的测试用例,这有可能会影响到所挑选的下一个测试用例的执行效果,从而影响缺陷发现能力。本文针对以上问题分别提出了基于k中心点的面向对象软件测试用例生成方法和基于k均值的面向对象软件自适应随机测试用例生成方法,并分别对所提出的方法进行了大量实验以证明方法的可行性。同时完成了一个基于聚类的面向对象软件测试原型系统。本文主要工作阐述如下:1.提出了基于k中心点的面向对象软件测试用例生成方法。在该方法中提出了两种测试用例聚类算法MOClustering(Method Object Clustering)和DMClustering(Distance Metric Clustering)。在MOClustering算法中,测试用例中的对象数和方法数被用来代表测试用例,并用k中心点聚类算法对测试用例进行聚类。DMClustering算法使用了一种度量机制直接计算测试用例间的距离,同时也采用了k中心点聚类算法对测试用例进行聚类。在完成聚类之后,基于自适应随机思想,提出了一种取样算法MSampling(Maximum Sampling),该算法保持了测试用例的多样性,生成了用于面向对象软件测试的测试用例集。2.提出了基于k均值的面向对象软件自适应随机测试用例生成方法及其两种算法WClustering-ART(Trisection Frequency Conversion Clustering-Adaptive Random Testing)和TFClustering-ART(Wavelet Clustering-Adaptive Random Testing),并相应的提出了两种面向对象软件测试用例距离的度量机制WTS(Wavelet Transform Similarity)和TFCS(Third Frequency Conversion Similarity)。WClustering-ART和TFClustering-ART分别运用WTS和TFCS距离度量机制将聚类技术与自适应随机测试技术相结合,从而将自适应随机测试作用到面向对象软件的测试中。对自适应随机测试的已执行测试用例集进行聚类得到具有代表性的已执行测试用例子集,用该子集代表整个已执行测试用例集来计算距离最远的下一个测试用例。3.设计实现了一个测试原型系统OOSTS(Object Oriented software Testing System)。其中包含了系统的类图录入模块、距离度量模块、测试用例生成模块、MOClustering算法模块、DMClustering算法、和TFClustering-ART算法模块等。该原型系统能用于实际的面向对象软件测试,并具有较好的可操作性。