CN102253889A - 一种回归测试中基于分布的测试用例优先级划分方法 - Google Patents

一种回归测试中基于分布的测试用例优先级划分方法 Download PDF

Info

Publication number
CN102253889A
CN102253889A CN2011102253167A CN201110225316A CN102253889A CN 102253889 A CN102253889 A CN 102253889A CN 2011102253167 A CN2011102253167 A CN 2011102253167A CN 201110225316 A CN201110225316 A CN 201110225316A CN 102253889 A CN102253889 A CN 102253889A
Authority
CN
China
Prior art keywords
test case
test
execution sequence
distance
sequence
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.)
Granted
Application number
CN2011102253167A
Other languages
English (en)
Other versions
CN102253889B (zh
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.)
Jiangsu Suce Software Detection Technology Co ltd
NANJING INSTITUTE OF PRODUCT QUALITY INSPECTION
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 CN201110225316.7A priority Critical patent/CN102253889B/zh
Publication of CN102253889A publication Critical patent/CN102253889A/zh
Application granted granted Critical
Publication of CN102253889B publication Critical patent/CN102253889B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种回归测试中基于分布的测试用例优化方法,对于回归测试中的测试用例集,依据执行剖面在剖面空间中的分布对测试用例的执行顺序进行优先级排序,优先级高的测试用例将被优先执行,使得执行顺序临近的测试用例尽可能分散在剖面空间中,以尽早最大化错误检测能力,提高错误检测速率。本发明在不进行任何测试用例约简的前提下,对测试用例的执行顺序进行排序,即测试用例的创建顺序并不作为其执行顺序,而是使用基于分布的测试用例优先级技术对执行顺序进行排序。这样一方面使得测试用例集合的错误检测能力不受影响,另一方面提高了错误检测的速率,使得程序员可以尽早地找到更多的错误,节省了程序员寻找错误的时间成本。

Description

一种回归测试中基于分布的测试用例优先级划分方法
技术领域
本发明属于软件测试技术领域,尤其是软件测试中回归测试技术领域,用于基于分布的测试用例优先级技术,一种回归测试中基于分布的测试用例优先级划分方法。
背景技术
对于工业程序,测试用例集通常包含数以千计甚至更多的测试用例。执行全部的测试用例代价昂贵,这种情况对于回归测试尤为明显:随着程序的不断演化,测试用例数目不断增多;在有限的资源限制下,很难重新执行每个测试用例。
测试用例优先级技术旨在解决上述问题。测试用例优先级技术根据一些准则重新排列测试用例被执行的顺序,优先级高的测试用例将被优先执行。本发明主要针对回归测试场景,关注于通用的回归测试情况,即测试用例优先级技术将应用于基础版本而不考虑其上发生的任何代码改变。
测试用例优先级技术的目的是,如果一组测试用例按照特定的顺序执行,那么该组测试用例更容易满足某个目标。理想情况下,测试用例应该按照尽可能早地最大化错误检测能力来排序。但在错误信息未知之前,照此排序是不切实际的。因此,测试用例优先级技术使用代理,尽可能早的最大化代理的某种属性,希望能够尽早最大化错误检测能力。
传统的测试用例优先级技术使用覆盖信息作为代理。它们关注于尽可能早地最大化某种程序元素的覆盖率,如语句、分支、数据流/控制流等的覆盖率,希望以此最大化错误检测能力;这种技术被称为基于覆盖的测试用例优先级技术。常见的基于覆盖的优先级技术包括贪心算法、遗传算法等等。
近几年的学术研究指出,基于覆盖的测试用例优先级技术并不一定能够保证获得高的错误检测能力,更多的研究开始转向基于分布的测试用例优先级技术。基于分布的测试用例优先级技术,根据执行剖面的特征以及执行剖面在剖面空间中的分布,对测试用例进行重新排序。现有的研究集中在使用元素覆盖率作为执行剖面的特征,使用Euclidean Distance、Jaccard Distance等基于集合的距离度量公式作为相异性方程来计算执行剖面的距离。但是,使用元素覆盖率作为执行剖面的特征会忽略对顺序敏感错误的检测。一些错误仅当程序按照一定顺序执行时才能被检测出来,这种错误被称为顺序敏感的错误。比如,一些错误可能会存在于循环中,并且仅当循环执行多遍时才能检测出来。这样,一个仅执行一次循环的测试用例和执行多次循环的测试用例在错误检测能力上是不同的,尽管对于这个循环片段,它们具有相同的代码覆盖率。因此,顺序敏感错误仅仅依靠元素覆盖率是很难被检测到的。这说明,现有研究使用元素覆盖率作为执行剖面的特征并不一定能够保证获得高的错误检测能力和快速的错误检测速率。
发明内容
本发明要解决的问题是:现有的基于分布的测试用例优先级技术使用元素覆盖率作为执行剖面的特征,并不一定能够保证获得高的错误检测速率,需要提高测试用例优先级技术的错误检测速率。
本发明的技术方案为:一种回归测试中基于分布的测试用例优先级划分方法,对于回归测试中的测试用例集,依据执行剖面在剖面空间中的分布对测试用例的执行顺序进行优先级排序,优先级高的测试用例将被优先执行。使得执行顺序临近的测试用例尽可能分散在剖面空间中,以尽早最大化错误检测能力,提高错误检测速率,该方法包括以下步骤:
1)获得测试用例集合T中每个测试用例的执行序列信息和覆盖率信息,使用执行序列信息作为测试用例执行剖面的特征,所述执行序列是一序列的字符串,记录了程序元素的执行顺序;
2)利用测试用例的执行序列的编辑距离,来计算测试用例之间的相异性程度,两个执行序列的编辑距离为:通过插入、删除和替换操作,将其中一个执行序列转换为另一个执行序列所需要的操作数;
3)使用最远距离优先farthest-first算法对测试用例的执行顺序进行排序,使得排序后,执行顺序临近的测试用例能够分散在剖面空间中:
最远距离优先算法对测试用例的排序为:后一个测试用例尽可能远离之前的测试用例,以保证执行顺序临近的测试用例尽可能的分散,其过程是:首先选择第一个测试用例,该测试用例拥有最大的元素覆盖率,然后它迭代选择下一个测试用例,直到所有的测试用例都被选择,选择时,将所有未被排序的测试用例构造成一个候选集合,对其中的每个候选测试用例,分别计算其与已经挑选的测试用例集合中每一个测试用例之间的距离,也就是相异性程度,将其中最小的距离作为该候选测试用例与已被选择的测试用例集合之间的距离;最后,选择候选集合中距离已经被选择的测试用例集合最远的一个测试用例,由测试用例的选择顺序得到测试优先级排序,选择顺序越前,优先级越高;
4)由步骤3)得到测试用例的测试优先级排序,按照排序后的顺序执行测试用例。
或,步骤3)使用聚类cluster算法对测试用例的执行顺序进行排序,使得排序后,执行顺序临近的测试用例能够分散在剖面空间中:
聚类cluster算法根据相异性程度将测试用例划分为不同的簇,然后在不同的簇间轮流挑选测试用例,挑选的先后顺序即为测试用例执行的顺序,其过程是:首先使用聚类分析技术将测试用例划分为不同的簇,每个簇的排列顺序根据它们创建的顺序决定;然后,依次从每个簇中挑选测试用例:从第一个簇中挑选一个测试用例,然后转向第二个簇,挑选一个测试用例,依次类推,直到所有的测试用例都被挑选,一个簇中测试用例的挑选顺序根据它们的元素覆盖率来决定,覆盖率高的测试用例将优先被挑选,由测试用例的选择顺序得到测试优先级排序,选择顺序越前,优先级越高;所述聚类分析技术使用凝聚的层次化聚类算法:一开始,每个簇中只包含一个测试用例,然后逐步合并距离最近的两个簇,合并的过程反复进行,直到簇的个数达到预先设置的临界值,所述临界值为测试用例总数的百分比,簇之间的两两距离采用平均距离,即首先计算两个簇之间每对测试用例之间的距离,然后累加求平均。
预先设置的临界值为测试用例总数的5%、10%或15%。
使用白盒测试工具CodeCover获取测试用例集中各测试用例的执行序列信息和覆盖率信息,白盒测试工具CodeCover包括注入阶段、执行阶段和报告阶段:注入阶段在程序源代码上注入收集覆盖信息的辅助代码;注入完毕后,再在源代码上注入收集序列信息的辅助代码;两次注入完毕后,编译器产生可执行代码,随着测试用例的运行,注入后的可执行代码被执行,测试用例的执行序列信息和覆盖信息随之被记录到日志中,日志保存了测试用例程序元素被执行的次数以及程序元素的执行顺序,最后产生可阅读的报告。
基于分布的测试用例优先级技术依赖于执行剖面的特征、所选用的相异性方程,以及将测试用例重新排序的算法。执行剖面刻画了测试用例的执行历史,对错误检测十分有用。相异性方程决定了执行剖面在剖面空间中的分布,该方程将两个测试用例的执行剖面作为输入,产生一个实数值代表这两个测试用例的相异性程度。将测试用例重新排序的算法依据测试用例的执行剖面在剖面空间中的分布进行,使得重新排序后,执行顺序临近的测试用例能够分散在剖面空间中。这主要依据以下思想:剖面空间中分布较近的测试用例通常具有相似的行为,以及相似的错误检测能力。例如,该组测试用例具备检测出同一错误引发的不同失效的能力;或者根本不具备检测出任何错误的能力。
本发明的特点在于:1、使用测试用例的执行序列信息作为执行剖面的特征;2、使用编辑距离作为相异性方程;3、依据执行序列信息,使用最远距离优先farthest-first算法或聚类cluster算法对测试用例的执行顺序进行排序。特点1和2较之现有的使用元素覆盖率的技术,考虑了程序元素的执行顺序,能够更有效的检测出顺序敏感的错误;同时,本发明第一次将farthest-first算法引入到测试用例优先级技术中,并改进了聚类算法使之较之前提出的方法更加自动化。将这3点结合,通过实验表明,本发明可以提高错误检测的速率,使得程序员可以尽早找到更多的错误,节省了程序员寻找错误的时间成本。
附图说明
图1为本发明的实施流程图。
图2为工具CodeCover收集覆盖率信息和执行序列信息的主要过程。
图3(a)为本发明实施例中,statement粒度farthest-first算法的APFD值的统计结果。
图3(b)为本发明实施例中,statement粒度cluster算法的APFD值的统计结果。
图4(a)为本发明实施例中,branch粒度farthest-first算法的APFD值的统计结果。
图4(b)为本发明实施例中,branch粒度cluster算法的APFD值的统计结果。
图5(a)为本发明实施例中,loop粒度farthest-first算法的APFD值的统计结果。
图5(b)为本发明实施例中,loop粒度cluster算法的APFD值的统计结果。
具体实施方式
如图1,本发明对于回归测试中的测试用例集,对测试用例的执行顺序进行优先级排序,优先级高的测试用例将被优先执行,使得执行顺序临近的测试用例尽可能分散在剖面空间中,以尽早最大化错误检测能力,提高错误检测速率,步骤如下:
1)获得测试用例集合T中每个测试用例的执行序列信息和覆盖率信息,使用执行序列信息作为测试用例执行剖面的特征,所述执行序列是一序列的字符串,记录了程序元素的执行顺序;使用白盒测试工具CodeCover获取测试用例集中各测试用例的执行序列信息和覆盖率信息,白盒测试工具CodeCover包括注入阶段、执行阶段和报告阶段:注入阶段在程序源代码上注入收集覆盖信息的辅助代码;注入完毕后,再在源代码上注入收集序列信息的辅助代码;两次注入完毕后,编译器产生可执行代码,随着测试用例的运行,注入后的可执行代码被执行,测试用例的执行序列信息和覆盖信息随之被记录到日志中,日志保存了测试用例程序元素被执行的次数以及程序元素的执行顺序,最后产生可阅读的报告;
2)利用测试用例的执行序列的编辑距离,来计算测试用例之间的相异性程度。两个执行序列的编辑距离为:通过插入、删除和替换操作,将其中一个执行序列转换为另一个执行序列所需要的操作数;
3)使用最远距离优先farthest-first算法或聚类cluster算法对测试用例的执行顺序进行排序,使得排序后,执行顺序临近的测试用例能够分散在剖面空间中;
4)由步骤3)得到测试用例的测试优先级排序,按照排序后的顺序执行测试用例。
本发明中涉及的两个主要算法分别是最远距离优先farthest-first算法和聚类cluster算法,下面具体说明其实施方式。
1、最远距离优先farthest-first算法
这个算法的主要流程如下所示:
Prioritization过程
输入:T{t1,t2,...}原始测试用例集合
输出:P{p1,p2,...}排序后测试用例集合
过程:1、设置P为空集
2、挑选第一个测试用例tfirst
3、将tfirst加入集合P中
4、调用selectNextTestCase过程直到所有测试用例均被选择
5、返回集合P
selectNextTestCase过程:
过程:1、构造候选测试用例集C{c1,c2,...}
2、构造距离集合D{d1,d2,...}
3、对于C中的每个测试用例ci设置di=(ci和P之间的距离)
4、选择D中最大的距离di
5、将di对应的候选测试用例ci加入集合P中
Prioritization过程首先选择第一个测试用例,该测试用例拥有最大的元素覆盖率。然后,它重复调用selectNextTestCase过程来选择下一个未被排序的测试用例,直到所有的测试用例都被选中。selectNextTestCase过程将所有未排序的测试用例构造成一个候选集合,每一次挑选一个距离已经选择的测试用例集合最远的测试用例。为了决定哪个候选测试用例被挑选,该过程考虑两种类型的距离:第一种是测试用例两两之间的距离,第二种是候选测试用例和已经挑选的测试用例集合之间的距离。对于第一种距离,本发明使用编辑距离,根据两个测试用例的执行序列来计算;对于第二种距离,首先计算候选测试用例与已经挑选的测试用例集合中每一个测试用例之间的距离,然后挑选最小的距离代表该候选测试用例与已挑选的测试用例集合之间的距离。最后selectNextTestCase过程选择与已挑选的测试用例集合之间距离最远的测试用例作为下一个测试用例,由测试用例的选择顺序得到测试优先级排序,选择顺序越前,优先级越高。本发明实施例中使用语句(statement)、分支(branch)、循环(loop)三种粒度信息作为执行剖面的粒度。
2、聚类cluster算法
Cluster算法的基本思想是用聚类分析技术将测试用例划分为不同的簇,这样执行顺序临近的测试用例分属于不同的簇,可以尽可能分散在剖面空间中。相异性方程被用来计算对象之间的距离,以指导聚类过程。测试用例优先级技术排序测试用例的执行顺序,但不会从原始测试用例集中丢弃任何测试用例。基于此,cluster算法需要两种类型的优先级排序:簇间优先级排序和簇内优先级排序。簇间优先级针对不同的簇进行排序,而簇内优先级针对一个簇中的各个测试用例进行排序。
Cluster算法的主要过程如下:最初,使用聚类分析技术将测试用例划分为不同的簇。每个簇的排列顺序将根据它们创建的顺序决定。然后,依次从每个簇中挑选测试用例。为公平起见,从第一个簇中挑选第一个测试用例,然后转向第二个簇,挑选第一个测试用例,依次类推,直到所有的测试用例都被挑选。一个簇中测试用例的挑选顺序将根据它们的元素覆盖率来决定,覆盖率高的测试用例将优先被挑选,由测试用例的选择顺序得到测试优先级排序,选择顺序越前,优先级越高。本发明实施例中使用语句(statement)、分支(branch)、循环(loop)三种粒度信息作为执行剖面的粒度,并相应选择语句覆盖率、分支覆盖率、循环覆盖率作为簇内测试用例挑选的依据。
Cluster算法中聚类分析技术选用凝聚的层次化聚类算法:一开始,每个簇中只包含一个测试用例,然后逐步合并距离最近的两个簇,合并的过程反复进行,直到簇的个数达到临界值。本发明实施例依次选择测试用例总数的5%、10%、15%作为临界值。簇之间的两两距离采用平均距离,即计算两个簇之间每对测试用例之间的距离,然后累加求平均。每对测试用例之间的距离根据执行序列,使用编辑距离计算。
下面通过具体的实施例来说明本发明的实施。
本发明选择了Checkstyle程序作为实验程序。这个程序为开源程序,并且提供了测试用例集。表1列出了这个程序的详细信息。
表1实验程序详细信息
Figure BDA0000081590570000071
以Checkstyle程序为例,本发明的具体实施方式如下:
1、获得测试用例的覆盖率信息和执行序列信息
本发明使用工具CodeCover帮助收集运行程序的覆盖率信息。图2描述了CodeCover工具收集覆盖率信息的主要过程。图中,椭圆形代表处理过程,矩形代表中间结果或最终结果。整个过程包含三个主要的阶段:注入、执行和报告。注入阶段在源代码的基础上注入一些辅助代码,以便收集覆盖信息。注入完毕后,编译器将产生可执行代码。随着测试用例的运行,注入后的代码将被执行,覆盖信息随之被记录到日志中。日志保存了程序元素被执行的次数。最终,覆盖率信息被计算,并产生可阅读的报告。CodeCover提供了六种粒度的度量,本发明选择其中三种粒度:语句、分支、循环作为实验粒度。
本发明同时改进了CodeCover的主要过程,以获得测试用例的执行序列信息。改进如下:在原有注入和编译两个过程之间加入“注入序列信息”这一过程。该过程对已经注入的源代码二次注入,添加用来获取执行序列的额外代码。注入后,随着测试用例的运行,代码将被执行。最终,执行序列信息将以字符串的形式产生。
本发明依次运行程序提供的每个测试用例,分别获得粒度为语句、分支、循环的测试用例覆盖率信息和执行序列信息。总的覆盖率信息如表1所示。
2、选择评估方法
本发明选择APFD作为评估测试用例优先级技术的方法。APFD的值越高,表明该测试用例集的错误检测速率越快。APFD的计算公式如下:
APFD = 1 - TF 1 + TF 2 + . . . + TF n nm + 1 2 n
其中,T代表包含n个测试用例的测试用例集,F代表包含m个错误的错误集合。TFi代表在经过优先级排序的测试用例集T’中,检测出错误i的第一个测试用例。
3、产生错误矩阵
本发明使用工具Jumble产生变异,用变异来代替真正的错误。测试用例杀死某个变异,即说明该测试用例可以检测出该变异所对应的错误。这样可以通过测试用例杀死变异的数据,计算APFD的值。Jumble共产生七类变异,经过统计,对于Checkstyle程序,产生了6874个变异。
实验中需要考虑等价变异的问题。等价变异是指该变异与原始程序在语义上是一致的。一个等价变异是不会被任何测试用例杀死的。通常,解决等价变异的方法有两种:第一种是将无法被测试用例杀死的变异均看作等价变异,这会导致APFD的值偏高。第二种是将无法被测试用例杀死的变异看作不等价变异,这会导致APFD的值偏低。本发明采用第二种方法。这样,对于Checkstyle程序,变异数目不变,如表1中所示。
4、实现测试用例优先级技术
本发明用Java语言实现了最远距离优先farthest-first算法和聚类cluster算法。同时,为了比较本发明所述方法与之前研究方法的优劣,本发明同时用Java语言实现了另外两种对比算法,称为cov-farthest-first算法和cov-cluster算法。
cov-farthest-first算法与farthest-first算法对应,选择下一个测试用例距离之前已经选择的测试用例集合距离最远。所不同的是,cov-farthest-first算法根据覆盖率信息作为执行剖面的粒度,即使用覆盖率信息计算测试用例之间的距离;cov-farthest-first算法使用Jaccard距离作为相异性方程。Jaccard距离的计算公式如下:D(A,B)=1-|A∩B|/|A∪B|。
cov-cluster算法与cluster算法对应,首先根据相异性程度将测试用例划分为不同的簇,然后在不同的簇间轮流挑选测试用例。所不同的是,cov-cluster算法中,相异性程度根据覆盖率信息计算,采用Jaccard距离作为相异性方程,计算方法同前所述。
程序运行中,需要考虑以下特殊情况:两个候选测试用例与已挑选的测试用例集的距离相同;或者两个簇与第三个簇距离相同。这种情况需要随机挑选一个测试用例或簇。对实验中的每个程序,上述四种算法均重复运行1000次,以避免随机性带来的影响。特别的,对于cluster算法和cov-cluster算法,在实施中采取了三种不同的临界值,每种临界值的情形均重复运行1000次。
5、实验结果分析
表2列出了程序每种技术每种粒度的平均APFD值。
表2实验程序的平均APFD值
Figure BDA0000081590570000091
表中farthest-first和cluster分别代表两种算法。“edit”代表使用执行序列作为执行剖面特征,用编辑距离计算相异性程度的基于分布的测试用例优先级技术;“jaccard”代表使用覆盖率信息作为执行剖面特征,用Jaccard距离计算相异性程度的基于分布的测试用例优先级技术。Statement、branch、loop分别代表了三种实验粒度。APFD的值越高表明对应的方法有更快的错误检测速率。
下面从两个方面对本发明所提出技术进行比较分析:
●使用执行序列信息的基于分布的测试用例优先级技术和使用覆盖信息的基于分布的测试用例优先级技术的优劣
从表2中可以看出,对于三个粒度statement、branch和loop,farthest-first的值均高于cov-farthest-first的值;同样,对于三个粒度statement、branch和loop,在不同的临界值条件下(5%、10%、15%),cluster的值也全部高于cov-cluster的值。
图3到图5用箱线图描绘了对每个目标程序的APFD值的统计结果。箱图的上下两条线分别代表了第三四分位数和第一四分位数,中间的横线代表了中位数,箱子上方和下方的点分别代表了最大值和最小值。图3(a)、4(a)、5(a)分别代表了三种粒度(statement、branch、loop)下,farthest-first和cov-farthest-first算法的结果统计;图3(b)、4(b)、5(b)分别代表了三种粒度(statement、branch、loop)、三种临界值(5%、10%、15%)情形下,cluster和cov-cluster算法的结果统计。图中很明显可以看出,farthest-first要好于cov-farthest-first算法;而cluster要好于cov-cluster算法。
综上所述,表2和图3、4、5可以说明,使用执行序列的基于分布的测试用例优先级技术要优于使用覆盖信息的基于分布的测试用例优先级技术。这一结论也表明,执行序列信息可以为错误检测提供更为有用的信息,提高错误检测速率。
●farthest-first和cluster算法的优劣
从表2中可以看到,statement和loop粒度下,farthest-first算法的平均APFD值要优于cluster算法。而branch粒度下,cluster算法要优于farthest-first算法。图3到图5也验证了这一结论。
综上所述,从表2和图3、4、5可以得出,大多数情况下,farthest-first算法要优于cluster算法。

Claims (4)

1.一种回归测试中基于分布的测试用例优先级划分方法,其特征是对于回归测试中的测试用例集,依据执行剖面在剖面空间中的分布对测试用例的执行顺序进行优先级排序,优先级高的测试用例将被优先执行,使得执行顺序临近的测试用例尽可能分散在剖面空间中,以尽早最大化错误检测能力,提高错误检测速率,该方法包括以下步骤:
1)获得测试用例集合T中每个测试用例的执行序列信息和覆盖率信息,使用执行序列信息作为测试用例执行剖面的特征,所述执行序列是一序列的字符串,记录了程序元素的执行顺序;
2)利用测试用例的执行序列的编辑距离,来计算测试用例之间的相异性程度,两个执行序列的编辑距离为:通过插入、删除和替换操作,将其中一个执行序列转换为另一个执行序列所需要的操作数;
3)使用最远距离优先farthest-first算法对测试用例的执行顺序进行排序,使得排序后,执行顺序临近的测试用例能够分散在剖面空间中:
最远距离优先算法对测试用例的排序为:后一个测试用例尽可能远离之前的测试用例,以保证执行顺序临近的测试用例尽可能的分散,其过程是:首先选择第一个测试用例,该测试用例拥有最大的元素覆盖率,然后它迭代选择下一个测试用例,直到所有的测试用例都被选择,选择时,将所有未被排序的测试用例构造成一个候选集合,对其中的每个候选测试用例,分别计算其与已经挑选的测试用例集合中每一个测试用例之间的距离,也就是相异性程度,将其中最小的距离作为该候选测试用例与已被选择的测试用例集合之间的距离;最后,选择候选集合中距离已经被选择的测试用例集合最远的一个测试用例,由测试用例的选择顺序得到测试优先级排序,选择顺序越前,优先级越高;
4)由步骤3)得到测试用例的测试优先级排序,按照排序后的顺序执行测试用例。
2.根据权利要求1所述的一种回归测试中基于分布的测试用例优先级划分方法,其特征是步骤3)使用聚类cluster算法对测试用例的执行顺序进行排序,使得排序后,执行顺序临近的测试用例能够分散在剖面空间中:
聚类cluster算法根据相异性程度将测试用例划分为不同的簇,然后在不同的簇间轮流挑选测试用例,挑选的先后顺序即为测试用例执行的顺序,其过程是:首先使用聚类分析技术将测试用例划分为不同的簇,每个簇的排列顺序根据它们创建的顺序决定;然后,依次从每个簇中挑选测试用例:从第一个簇中挑选一个测试用例,然后转向第二个簇,挑选一个测试用例,依次类推,直到所有的测试用例都被挑选,一个簇中测试用例的挑选顺序根据它们的元素覆盖率来决定,覆盖率高的测试用例将优先被挑选,由测试用例的选择顺序得到测试优先级排序,选择顺序越前,优先级越高;所述聚类分析技术使用凝聚的层次化聚类算法:一开始,每个簇中只包含一个测试用例,然后逐步合并距离最近的两个簇,合并的过程反复进行,直到簇的个数达到预先设置的临界值,所述临界值为测试用例总数的百分比,簇之间的两两距离采用平均距离,即首先计算两个簇之间每对测试用例之间的距离,然后累加求平均。
3.根据权利要求2所述的一种回归测试中基于分布的测试用例优先级划分方法,其特征是预先设置的临界值为测试用例总数的5%、10%或15%。
4.根据权利要求1或2所述的一种回归测试中基于分布的测试用例优先级划分方法,其特征是使用白盒测试工具CodeCover获取测试用例集中各测试用例的执行序列信息和覆盖率信息,白盒测试工具CodeCover包括注入阶段、执行阶段和报告阶段:注入阶段在程序源代码上注入收集覆盖信息的辅助代码;注入完毕后,再在源代码上注入收集序列信息的辅助代码;两次注入完毕后,编译器产生可执行代码,随着测试用例的运行,注入后的可执行代码被执行,测试用例的执行序列信息和覆盖信息随之被记录到日志中,日志保存了测试用例程序元素被执行的次数以及程序元素的执行顺序,最后产生可阅读的报告。
CN201110225316.7A 2011-08-07 2011-08-07 一种回归测试中基于分布的测试用例优先级划分方法 Expired - Fee Related CN102253889B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110225316.7A CN102253889B (zh) 2011-08-07 2011-08-07 一种回归测试中基于分布的测试用例优先级划分方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110225316.7A CN102253889B (zh) 2011-08-07 2011-08-07 一种回归测试中基于分布的测试用例优先级划分方法

Publications (2)

Publication Number Publication Date
CN102253889A true CN102253889A (zh) 2011-11-23
CN102253889B CN102253889B (zh) 2014-02-26

Family

ID=44981165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110225316.7A Expired - Fee Related CN102253889B (zh) 2011-08-07 2011-08-07 一种回归测试中基于分布的测试用例优先级划分方法

Country Status (1)

Country Link
CN (1) CN102253889B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662833A (zh) * 2012-03-21 2012-09-12 天津书生软件技术有限公司 一种管理测试用例的方法
CN103885876A (zh) * 2012-12-21 2014-06-25 百度在线网络技术(北京)有限公司 测试方法及设备
CN104375932A (zh) * 2014-08-27 2015-02-25 北京中电华大电子设计有限责任公司 一种Java卡代码覆盖率分析方法和装置
CN104536879A (zh) * 2014-11-28 2015-04-22 南京慕测信息科技有限公司 一种基于模糊聚类的多错误定位方法
CN104765683A (zh) * 2015-03-30 2015-07-08 西北工业大学 基于moea/d算法的回归测试用例多目标优化方法
CN105528289A (zh) * 2015-12-04 2016-04-27 中国矿业大学 一种基于分支覆盖与相似性的回归测试用例优先排序方法
CN105808438A (zh) * 2016-03-11 2016-07-27 北京信息科技大学 一种基于函数调用路径的测试用例复用方法
CN106033386A (zh) * 2015-03-10 2016-10-19 联想(北京)有限公司 软件测试方法以及电子设备
CN106528433A (zh) * 2016-12-12 2017-03-22 西安邮电大学 一种用于白盒测试的测试用例优先级排序方法
CN108021509A (zh) * 2017-12-27 2018-05-11 西安交通大学 基于程序行为网络聚合的测试用例动态排序方法
CN108073505A (zh) * 2016-11-17 2018-05-25 富士通株式会社 数据处理装置和数据处理方法
CN108287785A (zh) * 2017-01-09 2018-07-17 富士通株式会社 测试例排序方法和设备
CN108694123A (zh) * 2018-05-14 2018-10-23 中国平安人寿保险股份有限公司 一种回归测试方法、计算机可读存储介质及终端设备
CN109062782A (zh) * 2018-06-27 2018-12-21 阿里巴巴集团控股有限公司 一种回归测试用例的选择方法、装置及设备
CN109710514A (zh) * 2018-12-10 2019-05-03 江苏大学 测试用例优先级排序中的tie-breaking的解决方法及系统
CN109933515A (zh) * 2017-12-18 2019-06-25 大唐移动通信设备有限公司 一种回归测试用例集的优化方法和自动优化装置
CN110134588A (zh) * 2019-04-16 2019-08-16 江苏大学 一种基于代码和组合覆盖的测试用例优先级排序方法及测试系统
CN110399285A (zh) * 2018-04-24 2019-11-01 西安邮电大学 一种基于弱变异分析的测试用例约减方法
CN110502447A (zh) * 2019-08-30 2019-11-26 西安邮电大学 一种基于图的回归测试用例优先排序方法
CN110515837A (zh) * 2019-07-31 2019-11-29 杭州电子科技大学 一种基于efsm模型和聚类分析的测试用例排序方法
US10592808B2 (en) 2015-07-07 2020-03-17 International Business Machines Corporation Predictive model scoring to optimize test case order in real time
CN115809202A (zh) * 2023-01-04 2023-03-17 南京邮电大学 一种面向参数值切换的测试用例优先级排序方法
CN117370151A (zh) * 2023-09-08 2024-01-09 中国软件评测中心(工业和信息化部软件与集成电路促进中心) 一种测试用例执行的约简与优化方法、装置、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090276663A1 (en) * 2007-05-02 2009-11-05 Rauli Ensio Kaksonen Method and arrangement for optimizing test case execution
CN101814055A (zh) * 2010-04-06 2010-08-25 南京大学 一种测试用例聚类取样方法
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090276663A1 (en) * 2007-05-02 2009-11-05 Rauli Ensio Kaksonen Method and arrangement for optimizing test case execution
CN101814055A (zh) * 2010-04-06 2010-08-25 南京大学 一种测试用例聚类取样方法
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
仲晓芳等: "基于回归测试的软件测试方法的研究与应用", 《计算机技术与发展》, vol. 20, no. 1, 31 January 2010 (2010-01-31), pages 155 - 158 *

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662833A (zh) * 2012-03-21 2012-09-12 天津书生软件技术有限公司 一种管理测试用例的方法
CN102662833B (zh) * 2012-03-21 2014-12-03 天津书生软件技术有限公司 一种管理测试用例的方法
CN103885876A (zh) * 2012-12-21 2014-06-25 百度在线网络技术(北京)有限公司 测试方法及设备
CN103885876B (zh) * 2012-12-21 2018-01-05 百度在线网络技术(北京)有限公司 测试方法及设备
CN104375932A (zh) * 2014-08-27 2015-02-25 北京中电华大电子设计有限责任公司 一种Java卡代码覆盖率分析方法和装置
CN104375932B (zh) * 2014-08-27 2017-04-19 北京中电华大电子设计有限责任公司 一种Java卡代码覆盖率分析方法和装置
CN104536879A (zh) * 2014-11-28 2015-04-22 南京慕测信息科技有限公司 一种基于模糊聚类的多错误定位方法
CN106033386A (zh) * 2015-03-10 2016-10-19 联想(北京)有限公司 软件测试方法以及电子设备
CN104765683B (zh) * 2015-03-30 2017-06-06 西北工业大学 基于moea/d算法的回归测试用例多目标优化方法
CN104765683A (zh) * 2015-03-30 2015-07-08 西北工业大学 基于moea/d算法的回归测试用例多目标优化方法
US10592808B2 (en) 2015-07-07 2020-03-17 International Business Machines Corporation Predictive model scoring to optimize test case order in real time
US10748068B2 (en) 2015-07-07 2020-08-18 International Business Machines Corporation Predictive model scoring to optimize test case order in real time
CN105528289A (zh) * 2015-12-04 2016-04-27 中国矿业大学 一种基于分支覆盖与相似性的回归测试用例优先排序方法
CN105528289B (zh) * 2015-12-04 2017-12-08 中国矿业大学 一种基于分支覆盖与相似性的回归测试用例优先排序方法
CN105808438A (zh) * 2016-03-11 2016-07-27 北京信息科技大学 一种基于函数调用路径的测试用例复用方法
CN105808438B (zh) * 2016-03-11 2018-07-10 北京信息科技大学 一种基于函数调用路径的测试用例复用方法
CN108073505A (zh) * 2016-11-17 2018-05-25 富士通株式会社 数据处理装置和数据处理方法
CN106528433A (zh) * 2016-12-12 2017-03-22 西安邮电大学 一种用于白盒测试的测试用例优先级排序方法
CN106528433B (zh) * 2016-12-12 2018-10-02 西安邮电大学 一种用于白盒测试的测试用例优先级排序方法
CN108287785A (zh) * 2017-01-09 2018-07-17 富士通株式会社 测试例排序方法和设备
CN108287785B (zh) * 2017-01-09 2021-06-22 富士通株式会社 测试例排序方法和设备
CN109933515B (zh) * 2017-12-18 2021-03-12 大唐移动通信设备有限公司 一种回归测试用例集的优化方法和自动优化装置
CN109933515A (zh) * 2017-12-18 2019-06-25 大唐移动通信设备有限公司 一种回归测试用例集的优化方法和自动优化装置
CN108021509B (zh) * 2017-12-27 2020-08-18 西安交通大学 基于程序行为网络聚合的测试用例动态排序方法
CN108021509A (zh) * 2017-12-27 2018-05-11 西安交通大学 基于程序行为网络聚合的测试用例动态排序方法
CN110399285B (zh) * 2018-04-24 2022-11-15 西安邮电大学 一种基于弱变异分析的测试用例约减方法
CN110399285A (zh) * 2018-04-24 2019-11-01 西安邮电大学 一种基于弱变异分析的测试用例约减方法
CN108694123B (zh) * 2018-05-14 2023-07-21 中国平安人寿保险股份有限公司 一种回归测试方法、计算机可读存储介质及终端设备
CN108694123A (zh) * 2018-05-14 2018-10-23 中国平安人寿保险股份有限公司 一种回归测试方法、计算机可读存储介质及终端设备
CN109062782A (zh) * 2018-06-27 2018-12-21 阿里巴巴集团控股有限公司 一种回归测试用例的选择方法、装置及设备
CN109710514A (zh) * 2018-12-10 2019-05-03 江苏大学 测试用例优先级排序中的tie-breaking的解决方法及系统
CN110134588A (zh) * 2019-04-16 2019-08-16 江苏大学 一种基于代码和组合覆盖的测试用例优先级排序方法及测试系统
CN110134588B (zh) * 2019-04-16 2023-10-10 江苏大学 一种基于代码和组合覆盖的测试用例优先级排序方法及测试系统
CN110515837A (zh) * 2019-07-31 2019-11-29 杭州电子科技大学 一种基于efsm模型和聚类分析的测试用例排序方法
CN110502447B (zh) * 2019-08-30 2022-10-25 西安邮电大学 一种基于图的回归测试用例优先排序方法
CN110502447A (zh) * 2019-08-30 2019-11-26 西安邮电大学 一种基于图的回归测试用例优先排序方法
CN115809202A (zh) * 2023-01-04 2023-03-17 南京邮电大学 一种面向参数值切换的测试用例优先级排序方法
CN117370151A (zh) * 2023-09-08 2024-01-09 中国软件评测中心(工业和信息化部软件与集成电路促进中心) 一种测试用例执行的约简与优化方法、装置、介质及设备
CN117370151B (zh) * 2023-09-08 2024-03-29 中国软件评测中心(工业和信息化部软件与集成电路促进中心) 一种测试用例执行的约简与优化方法、装置、介质及设备

Also Published As

Publication number Publication date
CN102253889B (zh) 2014-02-26

Similar Documents

Publication Publication Date Title
CN102253889B (zh) 一种回归测试中基于分布的测试用例优先级划分方法
Ni et al. A cluster based feature selection method for cross-project software defect prediction
CN102708045A (zh) 一种缓解路径爆炸的动态符号执行方法
CN103116540A (zh) 基于全局超级块支配图的动态符号执行方法及其装置
CN103713933B (zh) 计算机程序中热点函数、变量的汇聚方法、装置及系统
Tulsian et al. Mux: algorithm selection for software model checkers
Chen et al. A two-stage data preprocessing approach for software fault prediction
CN102298681B (zh) 一种基于数据流切片的软件识别方法
CN105718368A (zh) 一种软件测试数据扩增方法
CN105045715A (zh) 基于编程模式和模式匹配的漏洞聚类方法
CN115828260A (zh) 基于脆弱点聚类与距离空间划分的多机协同漏洞检测系统
CN112527300B (zh) 面向多目标的细粒度编译自调优方法
CN103678121B (zh) 一种嵌入式二进制软件测试用例优先排序方法
CN105654095A (zh) 一种特征的选择方法和装置
CN105447519A (zh) 基于特征选择的模型检测方法
Andreou et al. An automatic software test-data generation scheme based on data flow criteria and genetic algorithms
Zhu et al. Improved evolutionary generation of test data for multiple paths in search-based software testing
CN110046636A (zh) 分类预测方法及装置、预测模型训练方法及装置
Doungsa-Ard et al. GA-based automatic test data generation for UML state diagrams with parallel paths
Liu et al. SAPNSP: Select actionable positive and negative sequential patterns based on a contribution metric
Ying et al. FrauDetector+ An Incremental Graph-Mining Approach for Efficient Fraudulent Phone Call Detection
CN104778088A (zh) 一种基于减少进程间通信开销的并行i/o优化方法与系统
Yano et al. A multi-objective evolutionary algorithm to obtain test cases with variable lengths
Miao et al. Deep learning in fuzzing: A literature survey
CN111651507A (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
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Chen Zhenyu

Inventor after: Zhao Zhihong

Inventor after: Wu Kun

Inventor after: Fang Chunrong

Inventor after: Zhang Zhidie

Inventor before: Zhao Zhihong

Inventor before: Wu Kun

Inventor before: Chen Zhenyu

Inventor before: Fang Chunrong

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: ZHAO ZHIHONG WU KUN CHEN ZHENYU FANG CHUNRONG TO: CHEN ZHENYU ZHAO ZHIHONGWU KUN FANG CHUNRONG ZHANG ZHIYI

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NANJING QUALITY SUPERVISION AND EXAMINATION INSTIT

Free format text: FORMER OWNER: NANJING UNIVERSITY

Effective date: 20140806

Owner name: JIANGSU SUCE SOFTWARE TESTING TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: NANJING QUALITY SUPERVISION AND EXAMINATION INSTITUTE

Effective date: 20140806

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Zhou Jungui

Inventor after: Zhao Zhihong

Inventor after: Wu Kun

Inventor after: Fang Chunrong

Inventor after: Zhang Zhidie

Inventor after: Yang Huiwen

Inventor after: Pu Li

Inventor after: Zhang Chi

Inventor after: Cheng Xiucai

Inventor after: Lin Huaiqing

Inventor after: Xie Peizhang

Inventor after: Wang Jingyu

Inventor after: Chen Zhenyu

Inventor before: Chen Zhenyu

Inventor before: Zhao Zhihong

Inventor before: Wu Kun

Inventor before: Fang Chunrong

Inventor before: Zhang Zhidie

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: CHEN ZHENYU ZHAO ZHIHONG WU KUN FANG CHUNRONG ZHANG ZHIYI TO: ZHOU JUNGUI YANG HUIWEN PU LI ZHANG CHI CHENG XIUCAI LIN HUAIQING XIE PEIZHANG WANG JINGYU CHEN ZHENYU ZHAO ZHIHONG WU KUN FANG CHUNRONG ZHANG ZHIYI

Free format text: CORRECT: ADDRESS; FROM: 210093 NANJING, JIANGSU PROVINCE TO: 210000 NANJING, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20140806

Address after: Yuhuatai District of Nanjing city Ning dual 210000 Jiangsu province No. 28 Ebizal building 7 floor

Patentee after: JIANGSU SUCE SOFTWARE DETECTION TECHNOLOGY Co.,Ltd.

Address before: 210000 Hongshan Road, Xuanwu District, Jiangsu, Nanjing 168

Patentee before: NANJING INSTITUTE OF PRODUCT QUALITY INSPECTION

Effective date of registration: 20140806

Address after: 210000 Hongshan Road, Xuanwu District, Jiangsu, Nanjing 168

Patentee after: NANJING INSTITUTE OF PRODUCT QUALITY INSPECTION

Address before: 210093 Nanjing, Gulou District, Jiangsu, No. 22 Hankou Road

Patentee before: Nanjing University

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140226

Termination date: 20150807

EXPY Termination of patent right or utility model