CN102063374A - 一种使用半监督信息进行聚类的回归测试用例选择方法 - Google Patents

一种使用半监督信息进行聚类的回归测试用例选择方法 Download PDF

Info

Publication number
CN102063374A
CN102063374A CN2011100031627A CN201110003162A CN102063374A CN 102063374 A CN102063374 A CN 102063374A CN 2011100031627 A CN2011100031627 A CN 2011100031627A CN 201110003162 A CN201110003162 A CN 201110003162A CN 102063374 A CN102063374 A CN 102063374A
Authority
CN
China
Prior art keywords
test
test case
case
program
regression
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.)
Pending
Application number
CN2011100031627A
Other languages
English (en)
Inventor
陈振宇
陈松宇
冯洋
赵志宏
徐宝文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN2011100031627A priority Critical patent/CN102063374A/zh
Publication of CN102063374A publication Critical patent/CN102063374A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种使用半监督信息进行聚类的回归测试用例选择方法,记录测试用例的执行覆盖信息,生成函数执行剖面,以量化形式表示测试用例;通过对历史测试结果的分析,获得测试用例之间的约束关系并应用半监督聚类算法分析测试用例,了解它们执行情况的异同,理解程序行为及测试用例之间的联系,在回归测试阶段有效降低测试用例数量并保持足够高的错误检测能力。本发明基于数据挖掘技术,通过测试用例所展现出的程序行为的内在联系来理解程序,使得测试用例的选择变得更加容易和自动化,从而可以更有效的使用这些测试用例进行回归测试,提高了测试用例选择的精确度,提高了回归测试的效率。

Description

一种使用半监督信息进行聚类的回归测试用例选择方法
技术领域
本发明属于计算机软件测试技术领域,涉及回归测试中的测试用例选择技术和软件测试中的程序行为聚类分析技术,用于提高回归测试的效率并使测试用例具备较高的错误检测能力,具体为一种使用半监督信息进行聚类的回归测试用例选择方法。
背景技术
随着软件版本的变迁,程序被不断的修改,在修改的过程中可能会在程序的原有功能里引入新的Bug,回归测试技术重复使用之前已开发的测试用例集来测试程序的原有功能,从而确认程序原有功能的正确性没有被修改所影响。但由于原有的测试用例集规模通常很大,执行其中所有的测试用例会耗费巨大的资源和人力,所以人们提出了很多种可行的技术,试图有效的约简测试用例集以提高回归测试的效率。回归测试用例选择技术(Regression test selection technique)就是其中的一种重要技术。
回归测试用例选择技术基于某种标准来选取符合该标准的测试用例子集,以达到约简测试用例集的目的,并通过标准的约束来保证足够高的错误检测能力。该技术包括多种方法,这些方法都有大致相似的过程:
1.确定新旧两个版本的程序,并使用某种形式表示出程序的相关信息,如源代码、控制流图、数据流图……等;
2.基于这些感兴趣的相关信息比较两个版本的程序;
3.识别出两个版本的程序中存在的差别,即修改的地方;
4.选取那些执行路径经过程序修改的测试用例作为候选测试用例集。
回归测试用例选择技术的目的是减少测试用例的数量,但是在约简过程中可能会将实际上能够检测出程序错误的测试用例剔除掉,从而降低了候选测试用例集的错误检测能力。因此,对于回归测试用例选择技术来说,既要能够有效的缩小测试用例集,同时要保证错误检测能力相对于原有的测试用例集不能下降过多,测试用例的数量和错误检测能力这两者的权衡是至关重要的。目前,研究人员提出的各种方法也都对这一问题突出考虑,而有些方法因为没有很好的处理这两者的权衡关系而导致效果不理想。
聚类分析(Cluster analysis)技术是机器学习中数据挖掘技术的一种,是用来分析统计数据的一种实用技术,用于处理分析大量数据来刻画类别、组群特征,并从中获得有意义的信息。给定一个可度量的对象集合,聚类分析过程会将这些对象指派到一系列的类簇中去,使得处于同一类簇中的对象在某种意义上是相似的,而处于不同类簇中的对象是不相似的。这种将对象集合划分成相似的等价类的过程就称作聚类分析。
由于缺少标签信息,传统的聚类分析属于非监督学习。而半监督聚类(Semi-supervised Clustering)是近年来模式识别和机器学习领域的重点问题,利用少部分标签数据辅助大量未标签数据进行训练和聚簇,提高聚类的性能。由于在每次版本修改之后都需要进行回归测试,因此利用多次回归测试结果推演出少量监督信息以提高聚类的性能是一种可行的方法。
现阶段,有研究人员将聚类分析技术用于软件回归测试,对测试用例集划分等价类,从集合中挑选出最有可能具备检错能力的测试用例,提高回归测试的效率并保证足够高的错误检测能力,该研究取得了比较好的成果。但是,在回归测试中使用半监督聚类分析技术目前尚未被正式提出,相关成果也非常少。
发明内容
本发明所要解决的技术问题是:由于没有充分利用测试过程中获得的历史测试结果和测试者本身的测试经验,现有的回归测试用例选择技术在权衡测试用例数量和错误检测能力这两者上表现不佳;提出一种在回归测试用例选择技术中使用半监督聚类分析的方法,通过对程序行为的深入理解,从历史测试结果中推演出或者由测试者本身给出测试用例之间的约束信息用以提高聚类的结果,来有效降低测试用例数量并保持足够高的错误检测能力。
本发明的技术方案为:一种使用半监督信息进行聚类的回归测试用例选择方法,包括一个已通过测试的原始版本程序和基于原始版本的多个修改版本程序,在每个修改版本程序上都要进行回归测试,记录原始版本程序的测试用例集的测试结果为历史信息,每次正式回归测试之前,首先从原始版本程序测试用例集中以5%的比例随机抽取样本,然后根据样本中的测试用例的历史信息提取约束信息作为半监督信息,将原始版本程序的测试用例的函数执行剖面矩阵投影到新的向量空间,以优化聚类结果,具体为:
1)获取约束信息:包括两种方式:①从原始版本程序的测试用例集中以5%随机抽取样本,所述抽取样本对各个修改版本程序进行回归测试,再将抽取样本包含的测试用例两两对比其回归测试结果,根据历史信息进行判断,若抽取样本中的两个测试用例检测到相同的错误,则定义这两个测试用例为正约束Must-Link,若检测的错误不存在交集,则定义这两个测试用例为负约束Cannot-Link;得到成对约束值(t1,t2),表明测试用例t1和t2符合约束定义;②从原始版本程序的测试用例集中以5%随机抽取样本,由测试者区分测试用例之间的功能是否相同,相同则为正约束,不同则为负约束,得到约束值;
2)根据得出的约束信息计算投影矩阵,根据目标函数J(w)计算出投影矩阵w;
J ( w ) = 1 2 n 2 Σ i , j ( w T x i - w T x j ) 2
+ α 2 n C Σ ( x i , x j ) ∈ C ( w T x i - w T x j ) 2
- β 2 n M Σ ( x i , x j ) ∈ M ( w T x i - w T x j ) 2
其中α,β分别为正约束和负约束的权重,默认1∶1,n指总的测试用例个数;nC是符合负约束的测试用例对数,nM是符合正约束的测试用例对数,(xi,xj)∈C表示属于负约束的约束值,(xi,xj)∈M表示属于正约束的约束值;w指投影矩阵,xi和xj是符合约束定义的成对测试用例的函数执行剖面;
然后将原始版本程序的函数执行剖面矩阵与投影矩阵进行乘积,得到新的度量矩阵;
3)在新的度量矩阵构成的距离度量空间进行聚类分析,符合正约束的测试用例之间距离缩小,而符合负约束的测试用例之间距离放大,利于在聚类分析时根据距离将样本进行划分;
4)从聚类分析得到的每个类簇中抽样测试用例,根据对抽样的测试用例的检查结果判定选择类簇或者丢弃类簇,形成最终的回归测试用例集,用于正式回归测试。
进一步的,半监督信息累积给下一次进行的回归测试,并且每次回归测试记录抽样测试用例子集的执行情况,作为历史信息用于之后回归测试的半监督信息的提取。
聚类分析包括以下步骤:
1)根据原始版本程序的测试用例集的覆盖信息,形成函数执行剖面,其中原始版本程序中的每个函数都对应一个度量,指示该函数关于测试用例的覆盖情况,如果某个函数在某个测试用例的执行过程中被调用了,那么该度量为1,否则该度量为0;全部的度量构成一条剖面记录,每个测试用例都对应一条这样的记录;获得原始版本程序的函数执行剖面后,每个初始候选测试用例集的测试用例都成为一个对象,以向量形式度量表示:X:<x1,x2,...,xn>,向量中每个xi,i=1,2…n对应程序中相应函数的覆盖情况,值为1或0;
2)聚类分析计算对象之间的距离或相异度,对于以向量形式表示的测试用例,采用欧几里得距离公式计算对象之间的距离,设两个对象分别表示为:X:<x1,x2,...,xn>和Y:<y1,y2,...,yn>,则它们的距离为:
D ( X , Y ) = &Sigma; i = 1 n ( x i - y i ) 2 ;
3)从原始测试用例集中随机抽取一定比例的测试用例作为样本,比较每两对测试用例之间的关系:若两个测试用例分别在不同的修改版本检测出错误,那么就表明这两个测试用例的功能不同,应该被划分到不同等价类,为负约束;若两个测试用例检测出错误所在的修改版本存在交集,并且交集达到一定比重,那么就表明这两个测试用例的功能相似,应该属于同一等价类,为正约束,所述交集的比重由测试人员配置;
4)根据获得的约束信息,计算投影矩阵w,将原始程序的函数执行剖面矩阵投影到一个新的距离空间,在此空间度量属性获得筛选并将差异度放大,使得聚类的结果更加精确;
5)计算出所有初始候选测试用例集中测试用例之间的距离后,使用Simple K-means聚类算法进行聚类。
对于聚类分析得到的每个类簇,先在类簇中随机选择出部分测试用例进行抽样检查,选择的数量保证每个类簇至少有一个,检查方式为比较测试用例在原始版本程序和修改版本程序下的输出,如果检查结果是所有被抽样的测试用例在两个版本被测程序下的输出都一样,即没有测试用例发现程序错误,根据聚类分析的特征,同一类簇中其他测试用例很有可能也不会发现程序错误,则丢弃该类簇;如果发现抽样的测试用例中至少有一个测试用例在原始版本程序和修改版本程序下的输出不一样,即发现了程序错误,则同一类簇中其他相似的测试用例也很有可能会发现程序错误,则保留该类簇;依次检查所有类簇后,保留的所有类簇中的测试用例形成最终候选测试用例集。
优选的,对类簇随机选择测试用例时,选择的数量为该类簇中测试用例数量的5%。
本发明用于更加有效的从回归测试用例集里选取测试用例子集,以进一步提高回归测试的效率,并使选取的测试用例具备足够高的错误检测能力;通过在现有技术的基础上记录测试用例的执行覆盖信息,生成函数执行剖面,以量化形式表示测试用例;通过对历史测试结果的分析,获得测试用例之间的约束关系并应用半监督聚类算法分析测试用例,了解它们执行情况的异同,就可以理解程序行为及测试用例之间的联系,在回归测试阶段有效降低测试用例数量并保持足够高的错误检测能力。本发明基于数据挖掘技术,以一种全新的、更加动态的方式处理测试用例,通过测试用例所展现出的程序行为的内在联系来理解程序,使得测试用例的选择变得更加容易和自动化,从而可以更有效的使用这些测试用例进行回归测试,在现有技术的基础上进一步提高了测试用例选择的精确度,即能发现错误的测试用例在选择出来的测试用例集中所占比例增大,从而提高了回归测试的效率。
附图说明
图1为本发明的流程示意图。
具体实施方式
本发明是一种使用半监督信息进行聚类的回归测试用例选择方法。首先,回归测试存在一个原始版本程序和多个修改版本程序,原始版本程序是已通过测试过的,对应存在一个测试用例集,而多个修改版本是要做回归测试的。在原始版本的被测程序上,测试用例集里的所有测试用例应该在之前都被执行过了,那么就可以记录这些测试用例的执行覆盖信息作为测试历史信息。随后,从测试用例集中以一定的比例随机抽取样本,利用抽取样本对修改版本的测试结果,推演出抽取样本中的测试用例之间的约束关系,计算出投影矩阵,将基于原始版本程序测试获得的函数执行剖面矩阵投射到新的度量空间,对新的度量进行聚类分析,使测试用例被分配到不同类簇中,执行情况相似的在同一类簇中,存在差异的在不同类簇中。最后,按照一定的比例从每个类簇中选择部分测试用例用作检查,根据检查结果选择某个类簇或者丢弃某个类簇,从而形成最终候选测试用例集。该过程在每次回归测试可以累积历史信息,半监督信息可以累积给下次的回归测试,并且每个修改版本的最终候选测试用例集的执行结果用于提取更精确的半监督信息。
近年来,研究人员将聚类分析技术应用到软件测试中,产生了比较好的效果。他们认为,程序行为,即程序在执行中产生的相关信息,如执行路径、数据流等,可以通过建立模型进行适当的度量。因此,对于测试用例集里的每一个测试用例,被测试程序关于该测试用例的一次执行就可以按照既定模型进行度量。这样,所有关于被测试程序的测试用例被度量后都可以转化成量化的对象,并且我们可以指定这些对象之间相似或相异的标准,那么聚类分析就可以处理此测试用例对象集合,将测试用例分类。而本发明使用本监督聚类,通过从多次回归测试的历史执行结果推演出监督信息,指导聚类过程,从而获得更精确的聚类结果。
通过半监督聚类,测试用例对象被分配到不同类簇中,处于同一类簇中的测试用例对象反映了相似的程序行为,所有的类簇则反映了各种不同的程序行为。对每个类簇中的测试用例进行分析,我们就可以理解被测试程序的行为逻辑和执行情况。对程序行为和测试用例之间约束关系的认知可以更好的指导我们有效挑选测试用例,保证错误的程序行为能够被测试用例检测出来,从而确保程序功能的正确性。同时,对程序行为的理解可以使我们更恰当的组织测试细节来提高测试的效率。因此,通过半监督聚类分析理解程序行为,有效使用测试用例,可以在软件测试中给予很大帮助。
本发明记录原始版本程序的测试用例集的测试结果为历史信息,包括以下步骤:
1)获取约束信息:包括两种方式:①从原始版本程序的测试用例集中以5%随机抽取样本,所述抽取样本对各个修改版本程序进行回归测试,再将抽取样本包含的测试用例两两对比其回归测试结果,根据历史信息进行判断,若抽取样本中的两个测试用例检测到相同的错误,则定义这两个测试用例为正约束Must-Link,若检测的错误不存在交集,则定义这两个测试用例为负约束Cannot-Link;得到成对约束值(t1,t2),表明测试用例t1和t2符合约束定义;②从原始版本程序的测试用例集中以5%随机抽取样本,由测试者区分测试用例之间的功能是否相同,相同则为正约束,不同则为负约束,得到约束值;
2)根据得出的约束信息计算投影矩阵,根据目标函数J(w)计算出投影矩阵w;
J ( w ) = 1 2 n 2 &Sigma; i , j ( w T x i - w T x j ) 2
+ &alpha; 2 n C &Sigma; ( x i , x j ) &Element; C ( w T x i - w T x j ) 2
- &beta; 2 n M &Sigma; ( x i , x j ) &Element; M ( w T x i - w T x j ) 2
其中α,β分别为正约束和负约束的权重,默认1∶1,n指总的测试用例个数;nC是符合负约束的测试用例对数,nM是符合正约束的测试用例对数,约束是两两关系,因此以几对这样的对数形式计算,(xi,xj)∈C表示属于负约束的约束值,(xi,xj)∈M表示属于正约束的约束值;w指投影矩阵,xi和xj是符合约束定义的成对测试用例的函数执行剖面;由公式可以看到,在约束信息没有或极少的情况下,投影矩阵依然有效,因为公式的第一部分是涉及所有的测试用例;
然后将原始版本程序的函数执行剖面矩阵与投影矩阵进行乘积,得到新的度量矩阵;
3)在新的度量矩阵构成的距离度量空间进行聚类分析,符合正约束的测试用例之间距离缩小,而符合负约束的测试用例之间距离放大,利于在聚类分析时根据距离将样本进行划分;
4)从聚类分析得到的每个类簇中抽样测试用例,根据对抽样的测试用例的检查结果判定选择类簇或者丢弃类簇,形成最终的回归测试用例集,用于正式的回归测试。
半监督信息可以累积给下次的回归测试,并且每次回归测试记录挑选出的测试用例子集的执行情况作为历史信息用于提取更精确的半监督信息。
下面以一个实施例说明本发明方法,如图1,具体步骤如下:
1)程序执行剖面收集:
1.1)在对修改版本程序进行回归测试前,所有的测试用例在原始版本的被测程序上都执行过,通过注入技术来记录测试用例执行时的覆盖信息,获得所有测试用例的测试历史,作为历史信息;
1.2)从1.1)获得的历史信息中提取出其中的测试用例的覆盖信息,形成原始版本程序的函数执行剖面,在函数执行剖面中,程序中的每个函数都对应一个度量,指示该函数关于测试用例的覆盖情况,如果某个函数在某个测试用例的执行过程中被调用了,那么该度量为1,否则该度量就为0。全部的度量构成一条剖面记录,而每个测试用例都对应一条这样的记录;
2)约束信息推演:
包括两种方式:①从原始版本程序的测试用例集中以5%随机抽取样本,所述抽取样本对各个修改版本程序进行回归测试,再将抽取样本包含的测试用例两两对比其回归测试结果,根据历史信息进行判断,若抽取样本中的两个测试用例检测到相同的错误,则定义这两个测试用例为正约束Must-Link,若检测的错误不存在交集,则定义这两个测试用例为负约束Cannot-Link;得到成对约束值(t1,t2),表明测试用例t1和t2符合约束定义;②从原始版本程序的测试用例集中以5%随机抽取样本,由测试者区分测试用例之间的功能是否相同,相同则为正约束,不同则为负约束,得到约束值:若两个测试用例分别在不同的修改版本检测出错误,那么就表明这两个测试用例的功能不同,应该被划分到不同等价类;若两个测试用例检测出错误所在的修改版本存在交集,并且交集达到一定比重,那么就表明这两个测试用例的功能相似,应该属于同一等价类;因此本发明的约束值也可以由测试者给出,因为测试者能区分部分测试用例之间的功能。
这里Must-Link定义为正约束,Cannot-Link定义为负约束。成对约束往往分为两种:正约束(must-link)和负约束(cannot-link),正约束指的是两个样本属于同一个类别;相反地,负约束指的是两个样本属于不同的类别。举例说明,假设一个原始版本程序共有五个单bug修改版本,分别为v1,v2...v5,测试用例T1能够在(v1,v2,v3)中检测到错误,测试用例T2能够在(v4,v5)中检测到错误,那么可以认定T1和T2的关系是Cannot-Link;若T3能够在(v1,v2,v3,v4)中检测到错误,那么可以认定T1和T3的关系是Must-Link;
3)度量空间转换
3.1)在获得步骤2)中的约束信息后,根据目标函数J(w)计算出投影矩阵w;
3.2)经过步骤1)获得函数执行剖面后,每个测试用例实际上都成为一个对象,以向量形式度量表示X:<x1,x2,...,xn>,向量中每个xi,i=1,2…n对应程序中相应函数的覆盖情况,值为1或0;
3.3)将步骤1)获得的执行剖面度量与步骤3.1)获得的投影矩阵进行乘积,获得新的度量空间,在此空间度量属性获得筛选并将差异度放大,使得聚类的结果更加精确;
4)聚类分析:
4.1)聚类分析需要计算对象之间的距离或相异度,对于步骤3)得到的向量形式的对象,采用欧几里得距离公式计算对象之间的距离。设两个对象分别表示为:X:<x1,x2,...,xn>和Y:<y1,y2,...,yn>,则它们的距离为:
D ( X , Y ) = &Sigma; i = 1 n ( x i - y i ) 2
此时,每个对象不是只含有0,1的向量,而是每个属性经过权重;n的值小于函数的个数,因为在转换的过程中属性获得筛选;
4.2)计算出所有对象的距离后,就可以使用聚类算法进行聚类,本发明中使用Simple K-means算法聚类,该聚类方法先按照指定的类簇个数k任意选择k个对象作为初始簇中心,根据这些簇中心将每个对象指派到与其最相似,即与其距离最小的簇中心对应的类簇中,所有对象都指派好后,重新计算每个类簇的均值,接着重新指派每个对象到最相似类簇中,这个过程一直循环直到类簇不再发生变化为止;
5)抽样选择测试用例阶段:
5.1)经过聚类分析后,具有相似程序行为或执行情况的测试用例会被分配到同一类簇中,执行情况不相似的测试用例被分配到不同类簇中;
5.2)对于每个类簇,先随机选择出一小部分测试用例进行检查,选择的数量至少要有1个,优选该类簇中测试用例数量的5%,检查的方式是比较测试用例在新旧两个版本程序下的输出,如果检查所有这些测试用例之后发现输出都一样,即没有测试用例发现了程序错误,那么根据聚类分析的特征,同一类簇中其他相似的测试用例很有可能也不会发现程序错误,那么就丢弃该类簇;如果发现至少有一个测试用例在两个版本程序下的输出不一样,即发现了程序错误,则同一类簇中其他相似的测试用例也很有可能会发现程序错误,那么就保留该类簇;
5.3)按照上面的逻辑步骤依次检查所有类簇后,形成最终的回归测试用例集,用于正式的回归测试;
5.4)结束。
上述过程在每次回归测试,都可以累积约束值,得到半监督信息累积给下次的回归测试,使得约束信息在数量和质量上不断提升,从而使得聚类效果越来越好,有效的缩小测试用例集,同时保证错误检测能力,取得测试用例的数量和错误检测能力这两者的平衡。

Claims (5)

1.一种使用半监督信息进行聚类的回归测试用例选择方法,包括一个已通过测试的原始版本程序和基于原始版本的多个修改版本程序,在每个修改版本程序上都要进行回归测试,其特征是记录原始版本程序的测试用例集的测试结果为历史信息,每次正式回归测试之前,首先从原始版本程序测试用例集中以5%的比例随机抽取样本,然后根据样本中的测试用例的历史信息提取约束信息作为半监督信息,将原始版本程序的测试用例的函数执行剖面矩阵投影到新的向量空间,以优化聚类结果,具体为:
1)获取约束信息:包括两种方式:①从原始版本程序的测试用例集中以5%随机抽取样本,所述抽取样本对各个修改版本程序进行回归测试,再将抽取样本包含的测试用例两两对比其回归测试结果,根据历史信息进行判断,若抽取样本中的两个测试用例检测到相同的错误,则定义这两个测试用例为正约束Must-Link,若检测的错误不存在交集,则定义这两个测试用例为负约束Cannot-Link;得到成对约束值(t1,t2),表明测试用例t1和t2符合约束定义;②从原始版本程序的测试用例集中以5%随机抽取样本,由测试者区分测试用例之间的功能是否相同,相同则为正约束,不同则为负约束,得到约束值;
2)根据得出的约束信息计算投影矩阵,根据目标函数J(w)计算出投影矩阵w;
J ( w ) = 1 2 n 2 &Sigma; i , j ( w T x i - w T x j ) 2
+ &alpha; 2 n C &Sigma; ( x i , x j ) &Element; C ( w T x i - w T x j ) 2
+ &beta; 2 n M &Sigma; ( x i , x j ) &Element; M ( w T x i - w T x j ) 2
其中α,β分别为正约束和负约束的权重,默认1∶1,n指总的测试用例个数;nC是符合负约束的测试用例对数,nM是符合正约束的测试用例对数,(xi,xj)∈C表示属于负约束的约束值,(xi,xj)∈M表示属于正约束的约束值;w指投影矩阵,xi和xj是符合约束定义的成对测试用例的函数执行剖面;
然后将原始版本程序的函数执行剖面矩阵与投影矩阵进行乘积,得到新的度量矩阵;
3)在新的度量矩阵构成的距离度量空间进行聚类分析,符合正约束的测试用例之间距离缩小,而符合负约束的测试用例之间距离放大,利于在聚类分析时根据距离将样本进行划分;
4)从聚类分析得到的每个类簇中抽样测试用例,根据对抽样的测试用例的检查结果判定选择类簇或者丢弃类簇,形成最终的回归测试用例集,用于正式回归测试。
2.根据权利要求1所述的一种使用半监督信息进行聚类的回归测试用例选择方法,其特征是半监督信息累积给下一次进行的回归测试,并且每次回归测试记录抽样测试用例子集的执行情况,作为历史信息用于之后回归测试的半监督信息的提取。
3.根据权利要求1或2所述的一种使用半监督信息进行聚类的回归测试用例选择方法,其特征是聚类分析包括以下步骤:
1)根据原始版本程序的测试用例集的覆盖信息,形成函数执行剖面,其中原始版本程序中的每个函数都对应一个度量,指示该函数关于测试用例的覆盖情况,如果某个函数在某个测试用例的执行过程中被调用了,那么该度量为1,否则该度量为0;全部的度量构成一条剖面记录,每个测试用例都对应一条这样的记录;获得原始版本程序的函数执行剖面后,每个初始候选测试用例集的测试用例都成为一个对象,以向量形式度量表示:X:<x1,x2,...,xn>,向量中每个xi,i=1,2…n对应程序中相应函数的覆盖情况,值为1或0;
2)聚类分析计算对象之间的距离或相异度,对于以向量形式表示的测试用例,采用欧几里得距离公式计算对象之间的距离,设两个对象分别表示为:X:<x1,x2,...,xn>和Y:<y1,y2,...,yn>,则它们的距离为:
D ( X , Y ) = &Sigma; i = 1 n ( x i - y i ) 2 ;
3)从原始测试用例集中随机抽取一定比例的测试用例作为样本,比较每两对测试用例之间的关系:若两个测试用例分别在不同的修改版本检测出错误,那么就表明这两个测试用例的功能不同,应该被划分到不同等价类,为负约束;若两个测试用例检测出错误所在的修改版本存在交集,并且交集达到一定比重,那么就表明这两个测试用例的功能相似,应该属于同一等价类,为正约束,所述交集的比重由测试人员配置;
4)根据获得的约束信息,计算投影矩阵w,将原始程序的函数执行剖面矩阵投影到一个新的距离空间,在此空间度量属性获得筛选并将差异度放大,使得聚类的结果更加精确;
5)计算出所有初始候选测试用例集中测试用例之间的距离后,使用Simple K-means聚类算法进行聚类。
4.根据权利要求1或2所述的一种使用半监督信息进行聚类的回归测试用例选择方法,其特征是对于聚类分析得到的每个类簇,先在类簇中随机选择出部分测试用例进行抽样检查,选择的数量保证每个类簇至少有一个,检查方式为比较测试用例在原始版本程序和修改版本程序下的输出,如果检查结果是所有被抽样的测试用例在两个版本被测程序下的输出都一样,即没有测试用例发现程序错误,根据聚类分析的特征,同一类簇中其他测试用例很有可能也不会发现程序错误,则丢弃该类簇;如果发现抽样的测试用例中至少有一个测试用例在原始版本程序和修改版本程序下的输出不一样,即发现了程序错误,则同一类簇中其他相似的测试用例也很有可能会发现程序错误,则保留该类簇;依次检查所有类簇后,保留的所有类簇中的测试用例形成最终候选测试用例集。
5.根据权利要求4所述的一种使用半监督信息进行聚类的回归测试用例选择方法,其特征是对类簇随机选择测试用例时,选择的数量为该类簇中测试用例数量的5%。
CN2011100031627A 2011-01-07 2011-01-07 一种使用半监督信息进行聚类的回归测试用例选择方法 Pending CN102063374A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011100031627A CN102063374A (zh) 2011-01-07 2011-01-07 一种使用半监督信息进行聚类的回归测试用例选择方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011100031627A CN102063374A (zh) 2011-01-07 2011-01-07 一种使用半监督信息进行聚类的回归测试用例选择方法

Publications (1)

Publication Number Publication Date
CN102063374A true CN102063374A (zh) 2011-05-18

Family

ID=43998659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100031627A Pending CN102063374A (zh) 2011-01-07 2011-01-07 一种使用半监督信息进行聚类的回归测试用例选择方法

Country Status (1)

Country Link
CN (1) CN102063374A (zh)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722436A (zh) * 2012-05-29 2012-10-10 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN102831055A (zh) * 2012-07-05 2012-12-19 陈振宇 基于加权属性的测试用例选择方法
CN102902619A (zh) * 2011-07-29 2013-01-30 阿里巴巴集团控股有限公司 Web应用程序的回归测试方法和装置
CN103136098A (zh) * 2011-11-30 2013-06-05 西门子公司 模糊测试的方法、装置和系统
CN103246600A (zh) * 2012-02-10 2013-08-14 广州博纳信息技术有限公司 软件测评快速校验方法
WO2013143392A1 (zh) * 2012-03-28 2013-10-03 腾讯科技(深圳)有限公司 测试用例筛选方法和系统
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN103473175A (zh) * 2013-09-11 2013-12-25 江苏中科梦兰电子科技有限公司 一种软件测试用例集的提取方法
CN104572449A (zh) * 2014-12-23 2015-04-29 中国移动通信集团广东有限公司 一种基于用例库的自动化测试方法
CN104572458A (zh) * 2014-12-30 2015-04-29 北京工业大学 基于Wp测试用例约简集的无线传感器网络系统测试方法
CN104765683A (zh) * 2015-03-30 2015-07-08 西北工业大学 基于moea/d算法的回归测试用例多目标优化方法
CN104915352A (zh) * 2014-03-12 2015-09-16 阿里巴巴集团控股有限公司 一种验证MapReduce环境下处理数据正确性的方法和装置
CN104932975A (zh) * 2015-05-28 2015-09-23 浪潮(北京)电子信息产业有限公司 一种测试用例选择方法和装置
CN105528293A (zh) * 2015-12-14 2016-04-27 苏州洞察云信息技术有限公司 一种用于回归测试选取测试用例的系统及方法
CN105550705A (zh) * 2015-12-11 2016-05-04 杭州电子科技大学 一种基于改进自训练学习的脑电信号识别方法
CN106874199A (zh) * 2017-02-10 2017-06-20 腾讯科技(深圳)有限公司 测试用例处理方法和装置
CN108345979A (zh) * 2017-01-23 2018-07-31 阿里巴巴集团控股有限公司 一种业务测试方法及装置
CN109062782A (zh) * 2018-06-27 2018-12-21 阿里巴巴集团控股有限公司 一种回归测试用例的选择方法、装置及设备
CN109062802A (zh) * 2018-08-13 2018-12-21 深圳壹账通智能科技有限公司 一种软件测试方法、计算机可读存储介质及终端设备
CN109101426A (zh) * 2018-08-16 2018-12-28 郑州云海信息技术有限公司 一种业务比对测试系统
CN109684213A (zh) * 2018-12-21 2019-04-26 惠州Tcl移动通信有限公司 一种测试方法、装置及存储介质
CN109900494A (zh) * 2019-02-25 2019-06-18 上海机动车检测认证技术研究中心有限公司 一种测试用例的生成方法
CN111008675A (zh) * 2019-12-26 2020-04-14 口碑(上海)信息技术有限公司 召回区域的抽样处理方法及装置
CN111026671A (zh) * 2019-12-16 2020-04-17 腾讯科技(深圳)有限公司 测试用例集构建方法和基于测试用例集的测试方法
CN111309608A (zh) * 2020-02-13 2020-06-19 咪咕音乐有限公司 测试用例的选择方法、装置、电子设备和可读存储介质
CN111382078A (zh) * 2020-03-13 2020-07-07 龙婷 故障诊断模拟方法、装置、电子设备及存储介质
CN112052153A (zh) * 2019-06-06 2020-12-08 腾讯科技(深圳)有限公司 产品版本测试方法及装置
CN112527573A (zh) * 2019-09-19 2021-03-19 中移(苏州)软件技术有限公司 一种接口测试方法、装置及存储介质
CN114780439A (zh) * 2022-06-13 2022-07-22 江西财经大学 一种面向参数路径流图的相似程序间测试用例的重用方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751666A (zh) * 2009-10-16 2010-06-23 西安电子科技大学 基于谱聚类的半监督多光谱遥感图像分割方法
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751666A (zh) * 2009-10-16 2010-06-23 西安电子科技大学 基于谱聚类的半监督多光谱遥感图像分割方法
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《软件学报》 20081115 肖宇等 "基于近邻传播算法的半监督聚类" , 第11期 *
肖宇等: ""基于近邻传播算法的半监督聚类"", 《软件学报》, no. 11, 15 November 2008 (2008-11-15) *

Cited By (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902619B (zh) * 2011-07-29 2015-09-09 阿里巴巴集团控股有限公司 Web应用程序的回归测试方法和装置
CN102902619A (zh) * 2011-07-29 2013-01-30 阿里巴巴集团控股有限公司 Web应用程序的回归测试方法和装置
CN103136098A (zh) * 2011-11-30 2013-06-05 西门子公司 模糊测试的方法、装置和系统
CN103136098B (zh) * 2011-11-30 2016-03-23 西门子公司 模糊测试的方法、装置和系统
CN103246600B (zh) * 2012-02-10 2016-04-06 广州博纳信息技术有限公司 软件测评快速校验方法
CN103246600A (zh) * 2012-02-10 2013-08-14 广州博纳信息技术有限公司 软件测评快速校验方法
WO2013143392A1 (zh) * 2012-03-28 2013-10-03 腾讯科技(深圳)有限公司 测试用例筛选方法和系统
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN103425573B (zh) * 2012-05-24 2017-02-08 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN102722436A (zh) * 2012-05-29 2012-10-10 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN102722436B (zh) * 2012-05-29 2016-03-02 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN102831055A (zh) * 2012-07-05 2012-12-19 陈振宇 基于加权属性的测试用例选择方法
CN102831055B (zh) * 2012-07-05 2015-04-29 陈振宇 基于加权属性的测试用例选择方法
CN103473175A (zh) * 2013-09-11 2013-12-25 江苏中科梦兰电子科技有限公司 一种软件测试用例集的提取方法
CN104915352A (zh) * 2014-03-12 2015-09-16 阿里巴巴集团控股有限公司 一种验证MapReduce环境下处理数据正确性的方法和装置
CN104915352B (zh) * 2014-03-12 2018-10-02 阿里巴巴集团控股有限公司 一种验证MapReduce环境下处理数据正确性的方法和装置
CN104572449A (zh) * 2014-12-23 2015-04-29 中国移动通信集团广东有限公司 一种基于用例库的自动化测试方法
CN104572458B (zh) * 2014-12-30 2017-05-24 北京工业大学 基于Wp测试用例约简集的无线传感器网络系统测试方法
CN104572458A (zh) * 2014-12-30 2015-04-29 北京工业大学 基于Wp测试用例约简集的无线传感器网络系统测试方法
CN104765683A (zh) * 2015-03-30 2015-07-08 西北工业大学 基于moea/d算法的回归测试用例多目标优化方法
CN104765683B (zh) * 2015-03-30 2017-06-06 西北工业大学 基于moea/d算法的回归测试用例多目标优化方法
CN104932975A (zh) * 2015-05-28 2015-09-23 浪潮(北京)电子信息产业有限公司 一种测试用例选择方法和装置
CN104932975B (zh) * 2015-05-28 2018-01-09 浪潮(北京)电子信息产业有限公司 一种测试用例选择方法和装置
CN105550705B (zh) * 2015-12-11 2018-11-23 杭州电子科技大学 一种基于改进自训练学习的脑电信号识别方法
CN105550705A (zh) * 2015-12-11 2016-05-04 杭州电子科技大学 一种基于改进自训练学习的脑电信号识别方法
CN105528293B (zh) * 2015-12-14 2018-01-16 苏州洞察云信息技术有限公司 一种用于回归测试选取测试用例的系统及方法
CN105528293A (zh) * 2015-12-14 2016-04-27 苏州洞察云信息技术有限公司 一种用于回归测试选取测试用例的系统及方法
CN108345979B (zh) * 2017-01-23 2021-07-09 阿里巴巴集团控股有限公司 一种业务测试方法及装置
CN108345979A (zh) * 2017-01-23 2018-07-31 阿里巴巴集团控股有限公司 一种业务测试方法及装置
CN106874199B (zh) * 2017-02-10 2022-10-18 腾讯科技(深圳)有限公司 测试用例处理方法和装置
CN106874199A (zh) * 2017-02-10 2017-06-20 腾讯科技(深圳)有限公司 测试用例处理方法和装置
CN109062782A (zh) * 2018-06-27 2018-12-21 阿里巴巴集团控股有限公司 一种回归测试用例的选择方法、装置及设备
CN109062802B (zh) * 2018-08-13 2023-06-09 深圳壹账通智能科技有限公司 一种软件测试方法、计算机可读存储介质及终端设备
CN109062802A (zh) * 2018-08-13 2018-12-21 深圳壹账通智能科技有限公司 一种软件测试方法、计算机可读存储介质及终端设备
CN109101426A (zh) * 2018-08-16 2018-12-28 郑州云海信息技术有限公司 一种业务比对测试系统
CN109101426B (zh) * 2018-08-16 2021-08-03 郑州云海信息技术有限公司 一种业务比对测试系统
CN109684213A (zh) * 2018-12-21 2019-04-26 惠州Tcl移动通信有限公司 一种测试方法、装置及存储介质
CN109684213B (zh) * 2018-12-21 2022-04-22 惠州Tcl移动通信有限公司 一种测试方法、装置及存储介质
CN109900494A (zh) * 2019-02-25 2019-06-18 上海机动车检测认证技术研究中心有限公司 一种测试用例的生成方法
CN109900494B (zh) * 2019-02-25 2021-04-13 上海机动车检测认证技术研究中心有限公司 一种测试用例的生成方法
CN112052153A (zh) * 2019-06-06 2020-12-08 腾讯科技(深圳)有限公司 产品版本测试方法及装置
CN112052153B (zh) * 2019-06-06 2023-05-16 腾讯科技(深圳)有限公司 产品版本测试方法及装置
CN112527573A (zh) * 2019-09-19 2021-03-19 中移(苏州)软件技术有限公司 一种接口测试方法、装置及存储介质
CN111026671A (zh) * 2019-12-16 2020-04-17 腾讯科技(深圳)有限公司 测试用例集构建方法和基于测试用例集的测试方法
CN111026671B (zh) * 2019-12-16 2023-11-03 腾讯科技(深圳)有限公司 测试用例集构建方法和基于测试用例集的测试方法
CN111008675A (zh) * 2019-12-26 2020-04-14 口碑(上海)信息技术有限公司 召回区域的抽样处理方法及装置
CN111309608A (zh) * 2020-02-13 2020-06-19 咪咕音乐有限公司 测试用例的选择方法、装置、电子设备和可读存储介质
CN111309608B (zh) * 2020-02-13 2023-09-05 咪咕音乐有限公司 测试用例的选择方法、装置、电子设备和可读存储介质
CN111382078A (zh) * 2020-03-13 2020-07-07 龙婷 故障诊断模拟方法、装置、电子设备及存储介质
CN111382078B (zh) * 2020-03-13 2023-04-28 龙婷 故障诊断模拟方法、装置、电子设备及存储介质
CN114780439A (zh) * 2022-06-13 2022-07-22 江西财经大学 一种面向参数路径流图的相似程序间测试用例的重用方法
CN114780439B (zh) * 2022-06-13 2022-09-27 江西财经大学 一种面向参数路径流图的相似程序间测试用例的重用方法

Similar Documents

Publication Publication Date Title
CN102063374A (zh) 一种使用半监督信息进行聚类的回归测试用例选择方法
CN101866317B (zh) 一种基于聚类分析的回归测试用例选择方法
CN106201871B (zh) 基于代价敏感半监督的软件缺陷预测方法
CN105069470A (zh) 分类模型训练方法及装置
WO2017157203A1 (zh) 一种分布式环境下监督学习算法的基准测试方法和装置
CN105955889A (zh) 一种图形界面自动化测试方法
CN108664269A (zh) 一种基于深度学习的特征依恋代码异味检测方法
CN112756759B (zh) 点焊机器人工作站故障判定方法
CN107577605A (zh) 一种面向软件缺陷预测的特征聚类选择方法
CN110825615A (zh) 基于网络嵌入的软件缺陷预测方法及系统
CN108664237B (zh) 一种基于启发式和神经网络的非api成员推荐方法
CN116932384A (zh) 一种基于特征融合和特征选择的软件缺陷预测方法
CN113672506B (zh) 基于机器学习的动态比例测试用例排序选择方法及系统
CN111916143B (zh) 基于多样子结构特征融合的分子活性预测方法
CN106991050A (zh) 一种静态测试空指针引用缺陷假阳性识别方法
CN110554952B (zh) 一种基于搜索的分层回归测试数据生成方法
CN113261975B (zh) 一种基于深度学习的心电分类方法
CN111538669B (zh) 一种基于历史问题回溯分析的测试案例抽取方法及装置
CN113127342B (zh) 基于电网信息系统特征选择的缺陷预测方法及装置
CN112835797B (zh) 一种基于程序中间结构特征的蜕变关系预测方法
CN103984756B (zh) 基于半监督概率潜在语义分析的软件变更日志分类方法
CN112817863A (zh) 一种基于ai深度学习的ai辅助自动化测试方法及系统
CN112435230A (zh) 一种基于深度学习的数据集生成方法及系统
CN111061626A (zh) 基于神经元激活频率分析的测试用例优先级排序方法
CN111367789A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110518