ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:588.15KB ,
资源ID:28408532      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28408532.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Kmeans聚类算法在回归测试用例选择中的应用.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Kmeans聚类算法在回归测试用例选择中的应用.docx

1、Kmeans聚类算法在回归测试用例选择中的应用基于判别型半监督K-means聚类方法的回归测试用例选择技术程雪梅【摘要】回归测试的目的是保证修改过后的软件没有引入新的错误。但是随着软件的演化,回归测试用例集不断增大,为了控制成本,回归测试用例选择技术应运而生。近年来,聚类分析技术被运用到回归测试用例选择问题中。其基本思想为:根据测试用例的历史执行剖面进行聚类,将具有相似的函数覆盖、能够发现相同故障的测试用例聚为一个簇。然后通过取样策略从每一簇中选出一定比例的测试用例组成新的测试用例集。将半监督学习引入到聚类技术中,提出了判别型半监督K-means聚类方法(Discriminative Semi

2、-supervised K-means,简称DSKM),该方法通过从回归测试的历史执行记录中挖掘出隐藏的成对约束信息,同时利用大量的无标签样本和少量的有标签样本进行学习,从而优化聚类的结果,进一步优化测试用例选择的结果。通过实验,发现相对于普通的K-means算法,DSKM方法在保持较高的召回率和代码覆盖率的前提下,准确率和约简率都有明显的提高。【关键词】回归测试 测试用例选择 K-means算法 成对约束 线性判别分析 1 引言2 在软件开发的过程中,软件系统及其环境在不断地进行变化。增强功能、纠正错误、新增或者删除功能,都需要修改代码并触发软件的演化。为了确保演化后的软件能够正确运行并且新

3、的改变没有引入新的错误,必须对软件进行回归测试1。统计数据表明,回归测试开销一般占整个软件测试预算的80%以上,占整个软件维护预算的50%以上,因此有效的回归测试是非常重要的2。然而,随着软件的不断演化,测试用例集不断增大,由于资源有限,几乎不可能运行所有的测试用例。为了提高回归测试的运行效率,许多策略被提出,其中最主要的一种技术是回归测试用例选择技术3(Regression Test Case Selection,简称RTS)。近年来,数据挖掘中的聚类技术被用于解决回归测试用例选择问题。其基本思想是:根据测试用例的历史执行剖面进行聚类,将具有相似的函数覆盖、能够发现相同故障的测试用例聚为一个

4、簇。同一簇中的测试用例具有相似的行为,而不同簇中的测试用例的行为差异较大。若一个测试用例能检测某一故障,则属于同一簇的其他测试用例通常也能检测到这一故障1。在回归测试时,只需从每一簇中选取一定比例的测试用例组成新的测试用例集,新测试用例集的精度和覆盖率在很大程度上依赖于聚类结果,而聚类结果依赖于聚类算法的选取。传统的K-means聚类算法是无监督的,对选取的K值和初始的簇中心都非常敏感,可能会产生局部最优的聚类结果,从而导致选择出的测试用例无法满足较高的准确率和覆盖率。为了优化聚类结果,论文提出一种判别型半监督K-means聚类方法(Discriminative Semi-supervised

5、 K-means,简称DSKM),将半监督聚类运用到回归测试用例选择中。在保证测试用例覆盖率的同时,减少测试用例,从而缩减回归测试的成本,提高回归测试的效率。论文第1部分介绍了研究背景,提出研究的问题。第2部分对目前该领域的相关研究进行总结。第3部分对论文提出的方法进行了介绍。第4部分通过设计和执行实验,验证提出的方法。第5部分对论文进行总结,提出未来工作。3 相关工作4 针对RTS问题的研究,众多研究人员提出了很多的解决方案4。Rothermel和Harrolad首次对RTS问题进行了总结并提出一种统一评估框架3, 5,随后提出一种基于控制流图的RTS技术并开发出DejaVu工具。Beyde

6、da和Gruhn基于Rothermel等人的研究工作,通过将黑盒测试中的数据流信息添加到类控制流图来对面向对象程序进行测试6。Harrold和Sofia提出了一种适用于单元测试阶段的增量数据流分析法7。Gupta等人基于数据流分析法,应用程序切片技术识别出与代码修改存在依赖关系的定义使用对(Definition-Use Pair)8, 9,该方法在执行时间和存储空间上均具有一定优势。H. K. N. Leung 等人则在软件集成的回归测试中引入“防火墙”技术11。近年来,随着计算机软硬件性能的不断提高,有不少学者将聚类技术用于RTS问题。Dickinson 等人提出基于执行剖面聚类的测试用例选

7、择,挖掘出测试用例之间隐藏的联系10。Masri等人进行了一项实证研究,用来验证聚类过滤技术的有效性11。Zhang等人在Rothermel的基础上,通过对遍历测试修改的执行剖面进行聚类,增强了安全选择技术1。Shin等人提出了基于聚类的测试用例优先级技术,用来减少成对比较的数量12。C. Songyu等人率先将半监督聚类运用到回归测试用例选择的问题上,利用测试用例的函数覆盖信息对测试用例进行聚类,从而减少测试用例13。使用聚类技术解决RTS问题,可以在保证测试用例的错误检测能力和覆盖率的前提下,提高测试用例的约简率1, 14。但目前已有的方法大部分都是非监督的,利用无标签数据进行训练和组织数

8、据,聚类的结果依赖于目标函数的设定和参数的输入,而这些参数往往是需要人工设置的。由于软件系统的复杂性和多样性,在参数设置方面比较困难,获得的聚类效果也难以得到保证。尹学松等人提出了基于成对约束的判别型半监督聚类分析方法15。论文将这种聚类方法用于解决回归测试用例选择问题,可以优化回归测试用例选择的结果。5 基于DSKM的测试用例选择方法6 随着数据挖掘技术在软件测试中的应用,基于聚类的测试用例选择技术被证明能够有效地减少测试用例1, 13, 14, 16, 17。聚类的目标是将能够发现相同故障、覆盖到相似函数的测试用例聚到同一簇中。然而,简单的聚类算法结果并不是满意的,论文使用了DSKM方法对

9、聚类结果进行优化。一方面保证测试用例的错误检测能力和覆盖率,另一方面,提高测试用例选择的准确率和约简率。6.1 整体流程6.2 基于DSKM的测试用例选择方法主要包括数据提取、约束推导、数据降维、数据聚类、用例取样五个部分,如图3-1所示。DSKM方法首先通过分析测试用例对函数的覆盖情况得到原始数据集,即测试用例与其覆盖函数的二进制向量组成的二维表。然后将从测试用例执行历史记录中挖掘出的成对约束作为输入,使用SSDR (Semi-Supervised Dimensionality Reduction)算法18得到投影矩阵,在投影空间内对原始数据聚类得到聚类标号。接着再将聚类标号作为输入,利用线

10、性判别分析(Linear Discriminant Analysis,简称LDA)选择子空间,在子空间上对数据集进行投影,得到新的数据集,即降维过后的二维表 。最后使用K-means算法对新的数据集进行聚类,将测试用例聚为K簇,使用自适应的取样策略从每一簇中选出一定比率的测试用例组成新的测试用例集。该方法结合SSDR方法和LDA方法对聚类结果进行优化。 图 31下面具体描述各步骤。6.3 数据提取6.4 本阶段进行原始数据集收集。在测试用例执行过程中,其执行结果会被记录。使用代码覆盖率分析工具对每个测试用例的代码覆盖情况进行分析。使用一个二进制向量表示测试用例的函数覆盖,每一位都记录对应函数在

11、测试用例执行过程中是否被覆盖,如果某个函数被覆盖,该位被置为1,否则,置为0。最终得到测试用例与其覆盖的函数组成的二维表,即原始数据集。得到的原始数据集表示为,其中表示测试用例i对应的函数覆盖的二进制向量,每个代表一个数据对象。6.5 约束推导6.6 得到原始数据集X以后,使用测试用例执行历史记录推导出成对约束信息。在半监督聚类中,通过数据标签或者数据间的约束的形式使用有限的监督。论文使用两种类型的成对约束(Pairwise Constraints)来表示测试用例之间的约束关系18。1) Must-link:两个测试用例必须在同一簇中。2) 3) Cannot-link:两个测试用例必须在不同

12、的簇中。4) 经过约束推导,得到约束集M和C。M代表Must-link约束集,C代表Cannot-link约束集。6.7 数据降维6.8 在对测试用例进行聚类以前,结合SSDR方法和LDA方法对提取的数据集进行降维处理。首先,利用SSDR方法求出投影矩阵W,在投影空间内对数据集聚类得到聚类标号。然后利用LDA方法选择子空间。在子空间上对数据集进行投影,得到新的数据集,即降维过后的二维表 。 SSDR(Semi-Supervised Dimensionality Reduction) 将原始数据集X、约束集M和C作为输入,利用SSDR算法18生成变换矩阵,然后使用W矩阵将原始数据集X转换为低维度

13、数据集,其中,Y可以在保持原始数据集X的数据结构不变的同时具有更适合的距离空间。新的距离空间的数据对象更适合用于聚类。SSDR算法通过公式1求解W矩阵,所求W矩阵为使目标函数最大化的W的值,其中:公式 1公式1中,表示数据集X中所有数据对象的数量,表示属于Cannot-link约束集中的数据对象的数量,表示属于Must-link约束集中的数据对象的数量。第一项表示所有数据对象的平均平方距离,第二项和第三项表示包含在成对约束集中的所有数据对象的平均平方距离。为了得到的最大值,尽可能使包含在Cannot-link约束集中的数据实例的平均平方距离最大,同时包含在Must-link约束集中的数据实例的

14、平均平方距离最小。通过公式1,将Cannot-link约束集中数据实例间的距离增大,同时将Must-link约束集中的数据实例间的距离减小,从而保证属于Must-link约束集中的测试用例被聚到同一簇中,而属于Cannot-link约束集中的测试用例被聚到不同簇中。在上式中,使用了两个参数和,用来平衡约束的权重,与的比值会影响到聚类的结果。经过SSDR方法求出投影矩阵W以后,利用W矩阵将原始数据集X投影到低维空间,得到数据集Y,并使用传统的K-means聚类算法对数据集Y进行聚类,得到每个测试用例的聚类标号组成的向量Labels,便于下一步使用LDA选择子空间。 LDA(Linear Disc

15、riminant Analysis) LDA的目的是最大化类间距离,最小化类內距离。使用SSDR方法后得到的聚类标号向量Labels和数据集Y作为LDA方法的输入,进行有监督的维数约简处理,得到降维过后的新数据集X,用于下一步K-means聚类算法的输入。LDA是监督维数约减方法,它寻找一个最优的投影方向,使得在投影空间中的不同类数据对象之间距离远,而相同类数据对象之间距离近。LDA的目标函数如下:公式 2公式2中类间散布矩阵和类內散布矩阵可以分别表示如下:公式 3公式 4 公式3和公式4中,是类数,是全部样本的均值,是第类样本均值,是第类样本数。6.9 聚类6.10 原始数据集X进行降维处理

16、得到新数据集X后,使用K-means算法对X聚类。得到测试用例的K个聚类。K-means聚类算法的典型步骤如下19:1) 初始化:在多维空间中放置K个初始点,代表每个簇的中心点。初始化中心点的不同直接影响到测试用例选择的结果,所以最好的选择就是两两中心点的距离尽量远。2) 3) 聚类:根据数据对象的均值,将每个数据对象放置到其最相似的簇中。 4) 5) 更新:当有新的数据对象加入分组中后,对分组的中心点进行更新。6) 7) 循环:重复聚类和更新的步骤直到每个簇的中心点不再明显改变。8) 6.11 用例取样6.12 经过k-means算法聚类以后,原测试用例集被聚到K个簇中。最后从每一簇中选出测

17、试用例建立新的回归测试用例集。取样策略有很多种,常见的有自适应取样策略10, 20、动态取样策略21、随机取样策略16等。本文选择自适应取样策略,首先按照一定比例,如10%,从每一簇中随机选取少量测试用例,每一簇中至少选出一个测试用例,如果某个测试用例覆盖了修改的函数,则直接将其放到新的测试用例集中。如果选出的测试用例为可以发现故障的测试用例,则与其在同一簇中的全部测试用例将被选出来组成新的测试用例集。7 实验8 为了验证所提出的方法,进行了大量的实验探究。并对DSKM 方法和k-means算法进行了对比,以验证DSKM方法的有效性。8.1 实验对象8.2 论文选用Xml-security项目

18、和Junit项目作为实验对象。Xml-security项目和Junit项目都是Java开源项目。表格4-1中列出了每个项目对应的版本数量、类文件数量、函数数量、指令数量和测试用例的数量。对于每个实验对象,下载的最新版本为正确的基础版本。依次将实验对象的历史版本中的Bug添加到基础版本中,每次添加一个Bug,形成多个修改版。将测试用例在各个修改版本上运行并记录运行结果。执行此操作是因为不能直接从下载的实验对象中得到测试用例执行结果记录,实际应用中,可以直接使用测试用例的执行结果记录。表格 4 1Program VersionsClassesMethodsInstructionsTest case

19、sXml-security16333243055058117Junit202351450184571598.3 实验步骤8.4 实验主要分为五个基本步骤。 原始数据提取 利用eclipse工具在实验对象的各修改版本上执行测试用例集,使用eclemma工具收集各测试用例的覆盖信息。需要记录三类信息:1) 测试用例集在实验对象的各修改版本上的总的函数覆盖率。2) 3) 测试用例集中每个测试用例的函数覆盖信息,形成函数覆盖的二进制向量。4) 5) 测试用例集中每个测试用例在实验对象的每个修改版本上的执行结果,如果与基础版本的执行结果相同,则代表通过,如果不同,则为失败。记录失败测试用例的序号和对应的

20、版本号,用于下一步中提取成对约束。6) 约束推导 一个失败的测试用例至少可以检测到一个bug,某些失败的测试用例在多个修改版本都能检测到bug。建立测试用例和版本之间的映射关系。代表测试用例能够检测到bug的版本集合,用重合度CD表示两个测试用例x1和x2发现相同bug的比率,CD定义如下13:公式 6不能同时为0,即两个通过的测试用例不计算重合度。根据CD的值,建立Must-link和Cannot-link约束集。1) Must-link:如果𝐶𝐷(𝑥1,𝑥2)TM,则和属于must-link约束集。TM为must-link约束

21、的阈值,定义为两个值,TM=100%和TM=50%。2) 3) Cannot-link:如果,则和属于cannot-link约束集。即和没有检测到相同的bug。4) 不难看出不同的约束定义会推导出不同的成对约束,也会影响到聚类的结果,进而影响到测试用例选择的结果。 数据降维 推导出成对约束以后,使用SSDR方法得到权值矩阵W,然后利用权值矩阵W将原始数据集X映射为Y,。在X中每个元素的值为1或者0,代表函数是否被覆盖。经过数据转换以后,每个元素的值都是一个浮点数,向量的大小比以前更小。使用MATLAB工具编程实现SSDR方法,得到经过SSDR方法处理过后的数据集Y。 然后,使用K-means算

22、法对经过SSDR算法处理以后得到的数据集Y进行聚类,得到每个测试用例对应的类标号,用Labels向量表示。将类标号向量Labels和数据集Y作为LDA方法的输入,完成对数据的有监督的维数约简。使用MATLAB工具编程实现LDA方法,得到最终用于聚类的新数据集X。 聚类 使用SSDR方法和LDA方法对数据集进行降维以后,使用K-means算法对上面形成的新的数据集X进行聚类,得到聚类的结果。在这一步中,论文使用Rapidminer工具的K-means算法。根据实验对象的大小设置初始K值,执行聚类过程。 取样 对测试用例聚类结束以后,使用自适应的取样策略选取测试用例。从每个簇中选取p%的测试用例,

23、p值通过项目的规模大小调整。对选出的新的测试用例集计算覆盖率,如果覆盖率接近或者等于原始测试用例集在历史版本上的覆盖率,则停止,返回新的测试用例集;否则,返回聚类步骤,调整K值。8.5 评估度量8.6 为了评估论文提出的方法的有效性,采用的评测指标包括召回率、准确率、约简率以及覆盖率比。设为原测试用例集的测试用例数量,为原测试用例集中能够发现故障的用例数量, 为原测试用例集对应的代码覆盖率。为选出的测试用例集的测试用例数量, 为选出的测试用例集中能够发现故障的用例数量,为选出的测试用例集对应的代码覆盖率。 召回率 Recall被认为是测试用例选择的完整性度量,定义为。Recall值越大,代表更

24、强的错误检测能力。 准确率 Precision被认为是测试用例选择的准确性程度,定义为。Precision值越大,代表更少的测试资源浪费。 约简率 Reduction用来衡量测试用例集约简的程度,定义为。Reduction值越大,代表约简程度越大。 覆盖率比 Coverage用来衡量测试用例选择出的新的测试用例集的函数覆盖情况,定义为。Coverage值越大,代表代码覆盖越完整。8.7 结果分析8.8 通过对Junit项目和Xml-security项目进行实验,实验结果如图4-1、图4-2和图4-3。图中TM为Must-link约束的阈值,定义为两个值,TM=100%和TM=50%。SSDR-

25、K为使用SSDR处理以后对数据进行聚类的K值。P为最后取样策略中的比率值,如果某簇中仅含一个测试用例,则直接选出该测试用例。Recall、precision、reduction、coverage分别为最终测试用例选择结果的召回率、准确率、约简率和覆盖率比。 junit Xml-security 图 41 P值对选择结果的影响图4-1表示了P值对precision、reduction、coverage结果的影响。Coverage的值随着P值增大而增大,precision和reduction的值随着P的增大而减小。从结果中可以看出,相对于K-means方法,DSKM方法在在保持甚至提高覆盖率的前提

26、下,准确率和约简率都有明显的提高。 图 42 K值对选择结果的影响图4-2表示了K-means聚类步骤中设置的K值对precision、reduction、coverage结果的影响。在保持甚至提高覆盖率的前提下,当K值较小或者较大时,DSKM方法对应的准确率和约简率明显优于K-means方法。 图 43 和的比值、SSDR-K和TM的值对选择结果的影响图4-3表示了针对DSKM方法,和的比值、SSDR-K和TM的值对Recall、precision、reduction、coverage的值的影响。在一定阈值内,当和的比值越大,SSDR-K值越大时,准确率、约简率和覆盖率的结果更优。TM的值越

27、大,即对于Mus-link约束集定义越严格,在保证覆盖率的前提下,准确率、约简率的结果更优。从实验的结果可以得出以下结论:1)对于普通的K-means算法,DSKM方法在保持较高的召回率和代码覆盖率的前提下,准确率和约简率都有明显的提高。2)约束的定义会对聚类的结果产生影响,从而影响测试用例选择的结果。通常TM定义越严格则聚类的效果越好。9 总结与展望10 论文将判别型半监督K-means聚类方法(DSKM)应用到回归测试用例选择中。该方法首先利用回归测试历史执行信息找出隐藏的成对约束信息。然后利用SSDR方法和LDA方法对原始数据进行降维,优化后的数据在距离度量上更加适合聚类分析,从而提高了

28、k-means算法的精度。通过实验,说明了DSKM方法在大多数情况下可以优化回归测试用例选择的结果。实验结果还表明约束定义越严格,回归测试用例选择的结果越优。由于基于半监督聚类技术的回归测试用例选择问题较为新颖,还有过很多后续的工作可以进行扩展。例如如何构造高质量的约束,降低“噪音”对聚类结果的影响。本实验采取欧氏距离对样本之间的距离进行度量,在后续工作中可以采用不同的距离度量方法进行实验对比。这些都是论文的下一步工作。参考文献1 Z. Chen, C. Zhenyu, Z. Zhihong, Y. Shali, Z. Jinyu, and X. Baowen, An Improved Reg

29、ression Test Selection Technique by Clustering Execution Profiles, Proceedings of the Tenth International Conference on Quality Software (QSIC 2010), pp. 171-9, 2010 2010.2 H. K. N. Leung and L. White, Insights into regression testing software testing, in Software Maintenance, 1989., Proceedings., C

30、onference on, 1989, pp. 60-69.3 G. Rothermel and M. J. Harrold, Analyzing regression test selection techniques, Software Engineering, IEEE Transactions on, vol. 22, pp. 529-551, 1996.4 章晓芳, 陈林, 徐宝文, and 聂长海, 测试用例集约简问题研究及其进展, 计算机科学与探索, pp. 235-247, 2008.5 G. Rothermel and M. J. Harrold, A framework f

31、or evaluating regression test selection techniques, in Software Engineering, 1994. Proceedings. ICSE-16., 16th International Conference on, 1994, pp. 201-210.6 S. Beydeda and V. Gruhn, Integrating white- and black-box techniques for class-level regression testing, in Computer Software and Applications Conference, 2001.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1