基于加权属性的测试用例选择方法

文档序号:6372834阅读:299来源:国知局
专利名称:基于加权属性的测试用例选择方法
技术领域
本发明属于软件测试技术领域,尤其是软件测试中测试用例选择领域,用于测试用例审查,是一种测试用例取样技术。
背景技术
在软件的测试过程中为了找出软件中的错误,有时候开发者要人工审查大量的测试用例,判断其是否执行失败。然后通过审查执行失败的测试用例帮助找到软件中出错的地方,继而纠正错误。所以有时候软件测试的开销是非常巨大的,但这个开销又是必须花费的。 交互式测试结果审查推荐技术的目标就是减少软件测试过程中的人工开销。该技术会自动的推荐最可能执行失败的测试用例给开发者审查,避免了开发者需要人工的逐个执行每一个测试用例并检查它是成功的还是失败的。传统的测试结果审查推荐技术的主要流程如下1执行所有的测试用例,得到每一个测试用例的执行剖面。执行剖面就是软件执行过程中的使用的各种元素的序列,如语句,函数,变量等的被使用情况。2对执行剖面进行聚类。3用不同的策略从每个类簇中挑选测试用例审查。这些策略统称为簇取样技术(cluster sampling).不同的测试用例推荐技术的主要区别在于从类簇中筛选测试用例的方法不同。最近已经有对cluster sampling技术的研究把软件错误定位的思想引入到了最后挑选测试用例审查的过程,这种技术被称为基于执行频谱的测试用例取样技术ESBS(Execution Spectra Based Strategy),这种 cluster sampling 技术其基本的思想如下:被越多的失败的测试用例调用的软件元素越可能存在错误。我们称这种软件元素为可疑元素。反过来使用可疑元素越多的测试用例越可能是失败的测试用例。最理想的情况是聚类后失败的测试用例和成功的测试用例被完全区分开,能引发相同错误的测试用例被放在同一个类簇中。引发不同错误的测试用例被放在不同的类簇中。在这种情况下,开发者只需要在每一个类簇中取极少数的测试用例审查就可以定位所有的错误。因为现有的聚类算法只能在一定程度上把失败的测试用例放在相同的类中。所以这些技术虽然可以比检查所有测试用例节省开销,但是由于聚类精度不够,即聚类不可能把所有的失败测试用例和成功测试用例区分开来,在实际过程中开发者依然要审查大量的成功的测试用例。

发明内容
本发明要解决的问题是传统的测试结果审查推荐技术所采用的从类簇中筛选测试用例的方法精度不够,在实际过程中开发者依然要审查大量的成功的测试用例来完成测试用例的选择。本发明的技术方案为基于加权属性的测试用例选择方法,在实验程序上运行所有的测试用例,获得每个测试用例的执行剖面,执行剖面为测试用例在执行过程中所调用的函数序列,函数序列的每一个函数作为测试用例的一个属性,如果函数被调用则在序列中的值为I反之则为O,然后分析选出最可能失效的测试用例使用k-means聚类算法对执行剖面进行聚类,类簇个数为总测试用例个数的5%,聚类结束后在每一个类簇中应用基于属性权重的策略WAS技术不断挑选出测试用例审查,挑选方法如下应用错误定位技术根据每个函数被失败或成功的测试用例执行的次数和审查结果,不断改变每个函数的分值,所打的分值即函数的权值,在所有的类簇都执行过上述过程后,用每个函数的权值代替初始的执行剖面中每个函数的值,用改变后的执行剖面重新聚类,在新的聚类结果上进一步挑选测试用例,分析选出最可能失效的测试用例。基于属性权重的策略WAS技术具体步骤如下 初始时每个函数的致信值都置为0,设定阈值CT为I,所有致信值小于I的函数都是可疑函数,测试用例执行的可疑函数的个数为测试用例的可疑值,I)测试用例选择,即从k-means聚类算法聚类后得到的类簇中选出一个可疑值最大的测试用例,可疑值用来度量测试用例失效的可能性大小;2)函数致信值计算,先审查选中的测试用例是通过还是失效,然后分析函数序列的执行信息,以函数作为程序执行元素,计算每个程序执行元素的致信值,以致信值度量每个元素失效的可能性,如果这个测试用例通过,则它调用的每一个函数的致信值加1,反之减I ;3)执行错误定位技术,实验程序的每一个函数被赋予4个属性〈anp, anf, aep, aef>,它们表示了某一函数与测试用例失效或通过的关系anp :没有执行这个函数并且通过的测试用例个数;anf :没有执行这个函数并且失效的测试用例个数;aep :执行这个函数并且通过的测试用例个数;aef :执行这个函数并且失效的测试用例个数;如果选择的测试用例通过,则每一个调用的函数aep+1,每一个没有调用的函数anp+1 ;如果选择的测试用例失效,每一个调用的函数aef+1,每一个没有调用的函数anf+1 ;然后检查选择的测试用例个数是否达到事先设定的阈值TL,如果选择的测试用例个数达到TL,执行步骤4),否则执行步骤5),其中设置TL为总测试用例个数的5% ;4)使用杰卡德排序标准(Jaccard ranking metric)计算函数权重Functionweight,如下
权利要求
1.基于加权属性的测试用例选择方法,其特征是在实验程序上运行所有的测试用例,获得每个测试用例的执行剖面,执行剖面为测试用例在执行过程中所调用的函数序列,函数序列的每一个函数作为测试用例的一个属性,如果函数被调用则在序列中的值为I反之则为O,然后分析选出最可能失效的测试用例使用k-means聚类算法对执行剖面进行聚类,类簇个数为总测试用例个数的5%,聚类结束后在每一个类簇中应用基于属性权重的策略WAS技术不断挑选出测试用例审查,挑选方法如下应用错误定位技术根据每个函数被失败或成功的测试用例执行的次数和审查结果,不断改变每个函数的分值,所打的分值即函数的权值,在所有的类簇都执行过上述过程后,用每个函数的权值代替初始的执行剖面中每个函数的值,用改变后的执行剖面重新聚类,在新的聚类结果上进一步挑选测试用例,分析选出最可能失效的测试用例。
2.根据权利要求I所述的基于加权属性的测试用例选择方法,其特征是基于属性权重的策略WAS技术具体步骤如下 初始时每个函数的致信值都置为0,设定阈值CT为I,所有致信值小于I的函数都是可疑函数,测试用例执行的可疑函数的个数为测试用例的可疑值, 1)测试用例选择,即从k-means聚类算法聚类后得到的类簇中选出一个可疑值最大的测试用例,可疑值用来度量测试用例失效的可能性大小; 2)函数致信值计算,先审查选中的测试用例是通过还是失效,然后分析函数序列的执行信息,以函数作为程序执行元素,计算每个程序执行元素的致信值,以致信值度量每个元素失效的可能性,如果这个测试用例通过,则它调用的每一个函数的致信值加1,反之减I ; 3)执行错误定位技术,实验程序的每一个函数被赋予4个属性〈anp,anf,aep, aef >,它们表示了某一函数与测试用例失效或通过的关系 anp :没有执行这个函数并且通过的测试用例个数; anf :没有执行这个函数并且失效的测试用例个数; aep :执行这个函数并且通过的测试用例个数; aef :执行这个函数并且失效的测试用例个数; 如果选择的测试用例通过,则每一个调用的函数aep+1,每一个没有调用的函数anp+1 ;如果选择的测试用例失效,每一个调用的函数aef+1,每一个没有调用的函数anf+1 ;然后检查选择的测试用例个数是否达到事先设定的阈值TL,如果选择的测试用例个数达到TL,执行步骤4),否则执行步骤5),其中设置TL为总测试用例个数的5% ; 4)使用杰卡德排序标准计算函数权重Functionweight,如下
3.根据权利要求I或2所述的基于加权属性的测试用例选择方法,其特征是每一次聚类结束后每个函数的致信值都重置为0,即在进行函数致信值计算之前,每一个函数都是可疑函数。
全文摘要
基于加权属性的测试用例选择方法,在实验程序上运行所有的测试用例,获得每个测试用例的执行剖面,执行剖面为测试用例在执行过程中所调用的函数序列,使用k-means聚类算法对剖面进行聚类,聚类结束后在每一个类簇中应用基于属性权重的策略挑选出测试用例审查,选出最可能失效的测试用例。本发明作为一种改进交互式测试结果审查推荐技术,引入了软件错误定位技术,通过改变执行剖面中属性的权重,使得和错误相关的属性的权重更大,使得聚类过程能更好的把失败的测试用例聚在一起,从而使得测试人员只要检测较少的测试用例就可以发现更多的失败的测试用例。
文档编号G06F17/30GK102831055SQ20121023186
公开日2012年12月19日 申请日期2012年7月5日 优先权日2012年7月5日
发明者陈振宇, 汪亚斌, 冯洋, 骆斌, 杨宜杰 申请人:陈振宇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1