本发明专利技术公开了基于聚类的面向对象软件测试用例生成方法,属于软件测试技术领域。包括如下步骤:1、根据类图为每个测试用例生成随机数量的对象和方法,以生成测试用例池;2、为测试用例池中的每个测试用例提取出其对象数和方法数;3、采用k中心点聚类算法,根据每个测试用例的对象数和方法数对测试用例池中的测试用例进行聚类;4、以保证测试用例的多样性为原则,从每个簇中取出测试用例,得到测试用例集,对面向对象软件进行测试。本方法通过与现有的随机测试进行实验比较,验证了所提出方法的有效性以及以相同的测试用例能够检测出更多的错误的优势。
【技术实现步骤摘要】
本专利技术属于软件测试领域,涉及一种基于聚类的测试用例生成方法。
技术介绍
软件测试是保证软件质量和可靠性的一种重要手段,已经形成了一套完整的测试理论。随着面向对象(ObjectOriented,OO)技术的不断发展,面向对象软件(ObjectOrientedSoftware,OOS)得到了广泛的应用。然而,由于面向对象的语言具有封装,继承性和多态性的特殊性,这就导致传统的软件测试技术并不能直接应用于面向对象软件的测试中。目前,已有的面向对象软件的测试方法包括随机测试(RandomTesting,RT),基于状态的测试,基于序列的测试等。其中随机测试是保证软件质量的一种简单而重要的技术手段,其测试结果可以协助软件质量保证团队来评估系统的可靠性。由于它的简单性和易用性,RT可以很容易地应用到任何水平的测试软件中(如单元测试、集成测试、系统测试等),同时RT经常被应用于工业中。其他的一些面向对象软件的测试方法一般需要专业测试人员,通常应用于特殊的软件中。然而,RT的有效性和效率受到被测软件的大小和复杂性影响。为了提高RT的缺陷检测效率,Chen等人提出了一种替代的方法,称为自适应随机测试(AdaptiveRandomTesting,ART)。ART的核心思想是通过定义一个度量测试输入距离的度量机制来获得均匀分布在整个输入域上的测试输入。目前ART已被一些研究者应用于OOS的测试中,并且研究证明ART能够有效提高OOS的缺陷检测效率。Ciupa等人针对OOS测试提出了一种测试方法,命名为面向对象自适应随机测试(AdaptiveRandomTestingforObject-OrientedSoftware,ARTOO),该方法通过定义了一种对象间的距离度量机制首次将ART技术与OOS测试结合在了一起。ARTOO的主要思想是利用对象间的距离度量机制从候选测试用例集中选择距离已执行测试用例最远的测试用例作为下一个执行对象。Lin等人将ARTOO扩展到了高维输入空间,使得测试输入可以均匀地分散在面向对象程序的高维输入空间。然而,传统的面向对象测试方法在执行测试用例时是随机的,没有顺序的,极有可能会重复执行相似的测试输入,从而导致产生类似的结果降低了发现缺陷的效果。如果将有不同的特性且均匀的分布在输入域上的测试用例优先执行,那么就能更快的找出缺陷。本文提出的基于聚类的测试用例生成方法,不仅能更快的找出缺陷,而且能找出更多的缺陷。聚类分析的核心思想是将具有相似性质的测试用例分配到同一个簇中。同一个簇中的测试用例具有相似的性质,不同簇中测试用例的性质差异较大。一般而言,在同一个簇中的测试用例可能有类似的缺陷检测能力。所以从不同簇中提取出具有不同的性质测试用例能够检测出程序中的不同缺陷。如今,聚类分析技术已经被进一步研究并应用到面向对象软件的测试中,如基于方法覆盖的聚类分析和基于方法调用序列的聚类分析,然后将相似的测试用例聚到同一个簇中。基于方法覆盖向量的方法能够很好地反映测试用例执行的动态行为,然而它只关注了方法是否执行和方法执行的次数。基于方法调用序列向量的方法能够很好地表示方法调用序列的信息,然而他们都没有关注到测试用例的结构信息。
技术实现思路
为了提高面向对象软件测试的有效性,在聚类分析的基础上,提出了面向对象软件测试用例生成方法及其基于方法和对象数的聚类算法MOClustering(MethodandObjectClustering)。根据测试用例的对象数和方法数进行聚类,将具有相似性质的测试用例分配到同一个簇中。此外,提出了一种抽样策略,以保证测试用例的多样性。并且将本方法的实验结果与包含方法调用序列的RT方法(RTwithmultipleobjectinteractionsandmethodinvocations,RT-ms)和ARTOO的结果进行比较,验证了提出方法的有效性和能够检测出更多缺陷的优势。本专利技术的技术方案如下:步骤1,根据类图为每个测试用例生成随机数量的对象和方法,以生成测试用例池;步骤2,为测试用例池中的每个测试用例提取出其对象数和方法数;步骤3,采用k中心点聚类算法,根据每个测试用例的对象数和方法数对测试用例池中的测试用例进行聚类;步骤4,以保证测试用例的多样性为原则,从每个簇中取出测试用例,得到测试用例集,对面向对象软件进行测试。上述步骤1的具体步骤如下:步骤1.1,读取并分析所测项目的类图;步骤1.2,根据类图中定义的要创建的类的信息,使用类的构造函数创建类的实例,为对象中的成员赋值;步骤1.3,随机生成指定个数的方法,以生成方法序列,然后验证生成的方法序列是否合法;步骤1.4,根据方法参数的类型和给定的参数的取值范围,调用相应类型的随机数生成器,在指定的取值范围内生成参数的值,为生成的方法随机生成参数值;步骤1.5,重复步骤1.2-1.4,直至生成拥有指定测试用例数量的测试用例池为止;步骤1.6,输出测试用例池,算法结束。上述步骤2的具体步骤如下:步骤2.1,为测试用例池中的每个测试用例创建一个二元向量,分别用来存储该测试用例的对象数和方法数;步骤2.2,读取测试用例池中每个测试用例的对象数和方法数,并填进二元向量中;步骤2.3,输出每个测试用例所对应的二元向量,算法结束。上述步骤3的具体步骤如下:步骤3.1,从数据集中随机选择k个向量作为初始代表对象;步骤3.2,用欧氏距离计算每个二元向量所代表的测试用例到每个簇代表对象的距离,并将每个测试用例放到与其距离最短的簇中;步骤3.3,在每个簇中寻找出一个候选代表对象,计算该候选代表对象到同簇中所有对象的距离,若其小于该簇中原代表对象到同簇中所有对象的距离,则用此对象代替原代表对象;步骤3.4,重新计算所有向量到每个簇代表对象的距离,将重新每个测试用例指派到与其距离最近的簇中,判断每个簇中的元素是否发生变化,若有变动则重复步骤3.2-3.4,若无变化则聚类结束;步骤3.5,输出已完成聚类的所有簇,算法结束。上述步骤4的具体步骤如下:步骤4.1,在已完成聚类的所有簇中,随机选择一个簇作为初始簇;步骤4.2,计算所有未被选择的簇与当前所选簇的距离,并选择距离最远的簇作为下一个簇;步骤4.3,重复步骤4.2,直至所有的簇都已经被选择,形成一个有顺序的簇的序列;步骤4.4,依次在该序列的每个簇中随机选择一个测试用例,直至选择完指定个数的测试用例。若某个簇中的所有测试用例已经被执行完,则跳至下一个簇;步骤4.5,输出测试用例集,算法结束。本专利技术的有益效果:1、本专利技术采用了聚类分析的核心思想,将具有相似性质的测试用例分配到同一个簇中。同一个簇中的测试用例具有相似的性质,不同簇中测试用例的性质差异较大。一般而言,在同一个簇中的测试用例可能有类似的缺陷检测能力。所以从不同簇中提取出具有不同的性质测试用例能够检测出程序中的不同缺陷。因此,本专利技术能够用较少的测试用例检测出较多的缺陷。2、传统的基于方法覆盖向量的方法和基于方法调用序列向量的方法虽然能够很好地反映测试用例执行的动态行为和方法调用序列的信息,但是它们只关注了方法是否执行、方法执行的次数,都关注到测试用例的结构信息。本专利技术技术不仅考虑到测试用例中方法的覆盖信息,还考虑到测试用例的结构信息。3本文档来自技高网...
【技术保护点】
基于聚类的面向对象软件测试用例生成方法,其特征在于,包括以下步骤:步骤1,根据类图为每个测试用例生成随机数量的对象和方法,以生成测试用例池;步骤2,为测试用例池中的每个测试用例提取出其对象数和方法数;步骤3,采用k中心点聚类算法,根据每个测试用例的对象数和方法数对测试用例池中的测试用例进行聚类;步骤4,以保证测试用例的多样性为原则,从每个簇中取出测试用例,得到测试用例集,对面向对象软件进行测试。
【技术特征摘要】
1.基于聚类的面向对象软件测试用例生成方法,其特征在于,包括以下步骤:步骤1,根据类图为每个测试用例生成随机数量的对象和方法,以生成测试用例池;步骤2,为测试用例池中的每个测试用例提取出其对象数和方法数;步骤3,采用k中心点聚类算法,根据每个测试用例的对象数和方法数对测试用例池中的测试用例进行聚类;步骤4,以保证测试用例的多样性为原则,从每个簇中取出测试用例,得到测试用例集,对面向对象软件进行测试。2.根据权利要求1所述的基于聚类的面向对象软件测试用例生成方法,其特征在于,所述步骤1的具体如下:步骤1.1,读取并分析所测项目的类图;步骤1.2,根据类图中定义的要创建的类的信息,使用类的构造函数创建类的实例,为对象中的成员赋值;步骤1.3,随机生成指定个数的方法,以生成方法序列,然后验证生成的方法序列是否合法;步骤1.4,根据方法参数的类型和给定的参数的取值范围,调用相应类型的随机数生成器,在指定的取值范围内生成参数的值,为生成的方法随机生成参数值;步骤1.5,重复步骤1.2-1.4,直至生成拥有指定测试用例数量的测试用例池为止;步骤1.6,输出测试用例池,算法结束。3.根据权利要求1所述的基于聚类的面向对象软件测试用例生成方法,其特征在于,所述步骤2的具体如下:步骤2.1,为测试用例池中的每个测试用例创建一个二元向量,分别用来存储该测试用例的对象数和方法数;步骤2.2,读取测试用例池中每个测试用例的对象数和方法数,并...
【专利技术属性】
技术研发人员:陈锦富,朱莉莉,郭昱池,黄如兵,葛宏河,杨鹤标,
申请(专利权)人:江苏大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。