一种基于聚类分析的回归测试用例选择方法

文档序号:6604960阅读:235来源:国知局
专利名称:一种基于聚类分析的回归测试用例选择方法
技术领域
本发明属于计算机软件测试技术领域,涉及回归测试中的测试用例选择技术和软 件测试中的程序行为聚类分析技术,用于提高回归测试的效率并使测试用例具备较高的错 误检测能力,具体为一种基于聚类分析的回归测试用例选择方法。
背景技术
随着软件版本的变迁,程序被不断的修改,在修改的过程中可能会在程序的原有 功能里引入新的Bug,回归测试技术重复使用之前已开发的测试用例集来测试程序的原有 功能,从而确认程序原有功能的正确性没有被修改所影响。但由于原 有的测试用例集规模 通常很大,执行其中所有的测试用例会耗费巨大的资源和人力,所以人们提出了很多种可 行的技术,试图有效的约简测试用例集以提高回归测试的效率。回归测试用例选择技术 (Regression test selection technique)就是其中的一种重要技术。回归测试用例选择技术基于某种标准来选取符合该标准的测试用例子集,以达到 约简测试用例集的目的,并通过标准的约束来保证足够高的错误检测能力。该技术包括多 种方法,这些方法都有大致相似的过程1.确定新旧两个版本的程序,并使用某种形式表示出程序的相关信息。(源代码、 控制流图、数据流图……)2.基于这些感兴趣的相关信息比较两个版本的程序。3.识别出两个版本的程序中存在的差别,即修改的地方。4.选取那些执行路径经过程序修改的测试用例作为候选测试用例集。回归测试用例选择技术的目的是减少测试用例的数量,但是在约简过程中可能会 将实际上能够检测出程序错误的测试用例剔除掉,从而降低了候选测试用例集的错误检测 能力。因此,对于回归测试用例选择技术来说,既要能够有效的缩小测试用例集,同时要保 证错误检测能力相对于原有的测试用例集不能下降过多,测试用例的数量和错误检测能力 这两者的权衡是至关重要的。目前,研究人员提出的各种方法也都对这一问题突出考虑,而 有些方法因为没有很好的处理这两者的权衡关系而导致效果不理想。聚类分析(Cluster analysis)技术是机器学习中数据挖掘技术的一种,是用来分 析统计数据的一种实用技术。它被应用于包括商业、地理、生物等诸多领域,处理分析大量 数据来刻画类别、组群特征,并从中获得有意义的信息。给定一个可度量的对象集合,聚类 分析过程会将这些对象指派到一系列的类簇中去,使得处于同一类簇中的对象在某种意义 上是相似的,而处于不同类簇中的对象是不相似的。这种将对象集合分成相似的对象类的 过程就称作聚类分析。现阶段,有研究人员将聚类分析技术用于软件开发后期的确认测试,来识别有代 表性的测试用例,减少测试用例数量,提高确认测试的效率并保证足够高的错误检测能力; 聚类分析技术也被用于变异测试,识别相似变异体以减少程序变异体的数量,提高变异测 试的效率。这些应用都取得了比较好的成果。但是,在回归测试中使用聚类分析技术目前尚未被正式提出,相关成果也非常少。

发明内容
本发明所要解决的技术问题是现有的回归测试用例选择技术在权衡测试用例数 量和错误检测能力这两者上表现不佳,提出一种在回归测试用例选择技术中使用聚类分析 的方法,通过对程序行为的深入理解来有效降低测试用例数量并保持足够高的错误检测能 力。本发明的技术方案为一种基于聚类分析的回归测试用例选择方法,对于新旧两 个版本的被测程序,旧版本已经过测试,采用的测试用例集称为原测试用例集,新版本等待 进行回归测试,记录原测试用例集的各测试用例在旧版本上的执行覆盖信息作为测试历史 信息;比较新旧版本被测程序的相关信息,从原测试用例集选择出覆盖修改位置的测试用 例构成初始候选测试用例集,根据选择的测试用例在测试历史信息中提取这些测试用例在 旧版本上的执行覆盖信息,形成旧版本被测程序函数的函数执行剖面,所述函数执行剖面 显示旧版本被测程序中各个函数关于初始候选测试用例集中每个测试用例的覆盖情况;然 后对函数执行剖面进行聚类分析,使初始候选测试用例集中的测试用例按照程序行为或执 行情况的相似度分配到不同的类簇中;最后,从每个类簇中选择部分测试用例进行抽样检 查,根据检查结果选择某个类簇或者丢弃某个类簇,形成最终候选测试用例集。函数执行剖面中,程序中的每个函数都对应一个度量,指示该函数关于测试用例 的 覆盖情况,如果某个函数在某个测试用例的执行过程中被调用了,那么该度量为1,否则 该度量为0,全部的度量构成一条剖面记录,每个测试用例都对应一条这样的记录。聚类分析包括以下步骤1)获得函数执行剖面后,每个初始候选测试用例集的测试用例都成为一个对象, 以向量形式度量表示=XXxnX2,...,xn>,向量中每个Xi, i = 1,2…η对应程序中相应函数 的覆盖情况,值为1或0;2)聚类分析计算对象之间的距离或相异度,对于以向量形式表示的测试用例,采 用欧几里得距离公式计算对象之间的距离,设两个对象分别表示为Χ :<χι; χ2, ... , χη>和 Y :<Υι, J2,..., yn>,则它们的距离为D(XJ) = ^di其中,当Xi = yi时,Cli为0,其它情况Cli为1 ;3)计算出所有初始候选测试用例集中测试用例之间的距离后,使用Simple K-means聚类算法进行聚类。对于聚类分析得到的每个类簇,先在类簇中随机选择出部分测试用例进行抽样检 查,选择的数量至少有一个,检查方式为比较测试用例在新旧两个版本被测程序下的输出, 如果检查结果是所有被抽样的测试用例在新旧版本被测程序下的输出都一样,即没有测试 用例发现程序错误,根据聚类分析的特征,同一类簇中其他测试用例很有可能也不会发现 程序错误,则丢弃该类簇;如果发现抽样的测试用例中至少有一个测试用例在新旧版本被 测程序下的输出不一样,即发现了程序错误,则同一类簇中其他相似的测试用例也很有可 能会发现程序错误,则保留该类簇;依次检查所有类簇后,保留的所有类簇中的测试用例形成最终候选测试用例集。作为优选,对类簇随机选择测试用例时,选择的数量为该类簇中测试用例数量的 2. 5%或 5%或 10%。本发明用于更加有效的从旧版本被测程序的测试用例集里选取测试用例子集,以 进一步提高回归测试的效率,并使选取的测试用例具备足够高的错误检测能力;通过在现 有技术的基础上记录测试用例的执行覆盖信息,生成函数执行剖面,以量化形式表示测试 用例并应用聚类算法分析测试用例,了解它们执行情况的异同,就可以理解程序行为及其 之间的联系,在回归测试阶段有效降低测试用例数量并保持足够高的错误检测能力。本发 明通过聚类分析对回归测试中的测试用例的数量和错误检测能力这两者进行了充分权衡, 基于数据挖掘技术,以一种全新的、更加动态的方式处理测试用例,通过测试用例所展现出 的程序行为的内在联系来理解程序,使得测试用例的选择变得更加容易和自动化,从而可 以更有效的使用这些测试用例进行回归测试,在现有技术的基础上进一步提高了测试用例 选择的精确度,使发现错误的测试用例在选择出来的测试用例集中所占比例增大,与现有 的回归测试技术中,直接选取那些执行路径经过程序修改的测试用例作为候选测试用例集 相比,本发明从原测试用例集选择出覆盖修改位置的测试用例构成初始候选测试用例集, 对其中测试用例进行进一步筛选,选择出的测试用例数量减小,同时保持测试用例集本身 对待测程序较高的错误检测能力,从而提高了回归测试的效率。


图1为本发明的流程示意图。
具体实施例方式本发明是一种基于程序执行剖面聚类分析的回归测试用例选择方法。首先,对于 新旧两个版本的被测程序,旧版本是已测试过的,而新版本是要做回归测试的。在旧版本的 被测程序上,测试用例集里的所有测试用例应该在之前都被执行过了,那么就可以记录这 些测试用例的执行覆盖信息作为测试历史信息。随后,利用现有成熟的回归测试用例选择 技术作为基础,比较新旧版本程序的相关信息,在选择出覆盖修改位置的测试用例作为初 始候选测试用例集之后,从测试历史信息中提取出这些测试用例在旧版本程序上的执行覆 盖信息,形成函数执行剖面,指示被测程序中各个函数关于初始候选测试用例集中每个测 试用例的覆盖情况。接着,函数执行剖面进行聚类分析,使初始候选测试用例集中的测试用 例被分配到不同类簇中,执行情况相似的在同一类簇中,不相似的在不同类簇中。最后,根 据设定的抽样策略,从每个类簇中抽样选择一小部分测试用例用作检查,例如,从每个类簇 抽5%数量的测试用例,根据检查结果选择某个类簇或者丢弃某个类簇,从而形成最终候选 测试用例集。抽样策略通常根据聚类结果的类簇个数和所需的最终测试用例数目来确定。近年来,研究人员将聚类分析技术应用到软件测试中,产生了比较好的效果。他们 认为,程序行为,即程序在执行中产生的相关信息,如执行路径、数据流等,可以通过建立模 型进行适当的度量。因此,对于测试用例集里的每一个测试用例,被测试程序关于该测试用 例的一次执行就可以按照既定模型进行度量。这样,所有关于被测试程序的测试用例被度 量后都可以转化成量化的对象,并且我们可以指定这些对象之间相似或相异的标准,那么聚类分析就可以处理此测试用例对象集合,将测试用例分类。通过聚类,测试用例对象被分配到不同类簇中,处于同一类簇中的测试用例对象 反映了相似的程序行为,所有的类簇则反映了各种不同的程序行为。对每个类簇中的测试 用例进行分析,我们就可以理解被测试程序的行为逻辑和执行情况。对程序行为的认知可 以更好的指导我们有效使用测试用例测试程序的不同行为,保证没有错误的程序行为出现 或者错误的程序行为能够被测试用例覆盖,从而确保程序功能的正确性。同时,对程序行为 的理解可以使我们更恰当的组织测试细节来提高测试的效率,而对程序行为的覆盖则实现 了充分测试。因此,通过聚类分析理解程序行为,有效使用测试用例,可以在软件测试中给 予很大帮助。本发明首先通过现有技术得到初始候选测试用例集,得到函数执行剖面,再根据 函数执行剖面,将初始候选测试用例集的测试用例通过向量进行度量,进行聚类分析,最后 对不同的类簇检查后选取合适的测试用例形成最终候选测试用例集,如图1,本发明具体步 骤如下1)测试用例初步选择
1. 1)确定新旧两个版本的被测程序,旧版本是已测试过的,而新版本是要做回归 测试的 ;1. 2)使用现有的回归测试用例选择技术,如Rothermel的DejaVu作为基础,该技 术根据它的理论能够选择出一个初始候选测试用例集;1.3)结束;2)程序执行剖面收集2. 1)在对修改后的新版本进行回归测试前,所有的测试用例在旧版本的被测程序 上都执行过,可以通过注入技术来记录测试用例执行时的覆盖信息,获得所有测试用例的 测试历史;2. 2)在获得步骤1)中初始候选测试用例集后,从测试历史中提取出初始候选测 试用例集中的测试用例的覆盖信息,形成函数执行剖面,在函数执行剖面中,程序中的每个 函数都对应一个度量,指示该函数关于测试用例的覆盖情况,如果某个函数在某个测试用 例的执行过程中被调用了,那么该度量为1,否则该度量就为0。全部的度量构成一条剖面 记录,而每个测试用例都对应一条这样的记录;2. 3)结束;3)聚类分析3. 1)经过步骤2)获得函数执行剖面后,初始候选测试用例集中的每个测试用例 实际上都成为一个对象,以向量形式度量表示X Xx1, x2,...,xn>,向量中每个Xi, i = 1,2-η对应程序中相应函数的覆盖情况,值为1或0 ;3.2)聚类分析需要计算对象之间的距离或相异度,对于3.1)得到的向量形式 的对象,采用欧几里得距离公式计算对象之间的距离。设两个对象分别表示为x:<Xl, X2,... , Χη> 和 Y :<yi; I2,..., yn>,则它们的距离为 其中,当Xi = yi时,Cli为0,其它情况Cli为1 ;
3. 3)计算出所有对象的距离后,就可以使用聚类算法进行聚类,本发明中使用简 单的Simple K-means算法聚类,该聚类方法先按照指定的类簇个数k任意选择k个对象作 为初始簇中心,根据这些簇中心将每个对象指派到与其最相似,即与其距离最小的簇中心 对应的类簇中,所有对象都指派好后,重新计算每个类簇的均值,接着重新指派每个对象到 最相似类簇中,这个过程一直循环直到类簇不再发生变化为止。3. 4)结束;4)抽样选择测试用例阶段4. 1)经过聚类分析后,具有相似程序行为或执行情况的测试用例会被分配到同一 类簇中,执行情况不相似的测试用例被分配到不同类簇中;4. 2)对于每个类簇,先随机选择出一小部分测试用例进行检查,选择的数量至少 要有1个,优选该类簇中测试用例数量的2. 5%或5%或10%,检查的方式是比较测试用例 在新旧两个版本程序下的输出,如果检查所有这些测试用例之后发现输出都一样,即没有 测试用例发现了程序错误,那么根据聚类分析的特征,同一类簇中其他相似的测试用例很 有可能也不会发现程序错误,那么就丢弃该类簇;如果发现至少有一个测试用例在两个版 本程序下的输出不一样,即发现了程序错误,则同一类簇中其他相似的测试用例也很有可 能会发现程序错误,那么就保留该类簇;4. 3)按照上面的逻辑步骤依次检查所有类簇后,形成最终候选测试用例集;4.4)结束。本发明在回归测试中的测试用例的数量和错误检测能力两者间经过权衡,通过聚 类分析,既能够有效的缩小测试用例集,剔除不必要的测试用例,同时尽可能保留能够检测 程序错误的测试用例,保证了回归测试的错误检测能力。
权利要求
一种基于聚类分析的回归测试用例选择方法,对于新旧两个版本的被测程序,旧版本已经过测试,采用的测试用例集称为原测试用例集,新版本等待进行回归测试,其特征是记录原测试用例集的各测试用例在旧版本上的执行覆盖信息作为测试历史信息;比较新旧版本被测程序的相关信息,从原测试用例集选择出覆盖修改位置的测试用例构成初始候选测试用例集,根据选择的测试用例在测试历史信息中提取这些测试用例在旧版本上的执行覆盖信息,形成旧版本被测程序函数的函数执行剖面,所述函数执行剖面显示旧版本被测程序中各个函数关于初始候选测试用例集中每个测试用例的覆盖情况;然后对函数执行剖面进行聚类分析,使初始候选测试用例集中的测试用例按照程序行为或执行情况的相似度分配到不同的类簇中;最后,从每个类簇中选择部分测试用例进行抽样检查,根据检查结果选择某个类簇或者丢弃某个类簇,形成最终候选测试用例集。
2.根据权利要求1所述的一种基于聚类分析的回归测试用例选择方法,其特征是函数 执行剖面中,程序中的每个函数都对应一个度量,指示该函数关于测试用例的覆盖情况,如 果某个函数在某个测试用例的执行过程中被调用了,那么该度量为1,否则该度量为0,全 部的度量构成一条剖面记录,每个测试用例都对应一条这样的记录。
3.根据权利要求2所述的一种基于聚类分析的回归测试用例选择方法,其特征是聚类 分析包括以下步骤1)获得函数执行剖面后,每个初始候选测试用例集的测试用例都成为一个对象,以向 量形式度量表示X:<X1,X2,...,xn>,向量中每个Xi,i = l,2 "n对应程序中相应函数的覆 盖情况,值为1或0;2)聚类分析计算对象之间的距离或相异度,对于以向量形式表示的测试用例,采用欧 几里得距离公式计算对象之间的距离,设两个对象分别表示为X:<Xl,x2,...,xn>和Y: <yi,y2,...,yn>,则它们的距离为D(XJ) = ^其中,当Xi = yi时,di为0,其它情况di为1 ;3)计算出所有初始候选测试用例集中测试用例之间的距离后,使用SimpleK-means 聚类算法进行聚类。
4.根据权利要求1或2或3所述的一种基于聚类分析的回归测试用例选择方法,其特 征是对于聚类分析得到的每个类簇,先在类簇中随机选择出部分测试用例进行抽样检查, 选择的数量至少有一个,检查方式为比较测试用例在新旧两个版本被测程序下的输出,如 果检查结果是所有被抽样的测试用例在新旧版本被测程序下的输出都一样,即没有测试用 例发现程序错误,根据聚类分析的特征,同一类簇中其他测试用例很有可能也不会发现程 序错误,则丢弃该类簇;如果发现抽样的测试用例中至少有一个测试用例在新旧版本被测 程序下的输出不一样,即发现了程序错误,则同一类簇中其他相似的测试用例也很有可能 会发现程序错误,则保留该类簇;依次检查所有类簇后,保留的所有类簇中的测试用例形成 最终候选测试用例集。
5.根据权利要求4所述的一种基于聚类分析的回归测试用例选择方法,其特征是对类 簇随机选择测试用例时,选择的数量为该类簇中测试用例数量的2. 5%或5%或10%。
全文摘要
一种基于聚类分析的回归测试用例选择方法,通过在已有技术的基础上记录测试用例的执行覆盖信息,生成函数执行剖面,以量化形式表示测试用例并应用聚类算法分析测试用例,了解它们执行情况的异同,就可以理解程序行为及其之间的联系,在回归测试阶段有效降低测试用例数量并保持足够高的错误检测能力。本发明基于数据挖掘技术,以一种全新的、更加动态的方式处理测试用例,通过测试用例所展现出的程序行为的内在联系来理解程序,使得测试用例的选择变得更加容易和自动化,从而可以更有效的使用这些测试用例进行回归测试,在现有技术的基础上能够进一步提高回归测试的效率。
文档编号G06F11/36GK101866317SQ20101021247
公开日2010年10月20日 申请日期2010年6月29日 优先权日2010年6月29日
发明者严莎莉, 章宸, 赵志宏, 陈振宇 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1