回归测试用例排序的方法、装置、设备和存储介质与流程

文档序号:32470305发布日期:2022-12-07 07:13阅读:39来源:国知局
回归测试用例排序的方法、装置、设备和存储介质与流程

1.本发明涉及回归测试技术领域,特别涉及一种回归测试用例排序的方法、装置、设备和存储介质。


背景技术:

2.软件测试是保障软件开发质量的重要手段,通过测试可以发现软件缺陷。回归测试是软件测试的重要组成部分,其目的在于确定代码的修改或版本迭代是否引入新的缺陷。
3.目前回归测试的方法有两种。一种是通过执行全量测试用例进行回归测试,这种方法虽然能保障测试的全面性,但无疑需要花费大量的测试时间。另一种则是通过顺序执行多个非全量的回归测试用例来完成回归测试,这种方法存在的问题是,待执行的多个回归测试用例的执行顺序往往依赖测试人员根据经验确定,这样确定的执行顺序有时并不符合客观的测试条件和需求,导致测试效率较低。


技术实现要素:

4.针对上述现有技术的缺点,本发明提供一种回归测试用例排序的方法、装置、设备和存储介质,以提高回归测试的效率。
5.本技术第一方面提供一种回归测试用例排序的方法,包括:
6.获取多个回归测试用例;
7.计算所述多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法(iterative self-organizing data analysis techniques algorithm,isodata)对所述多个回归测试用例进行聚类,获得聚类结果;
8.利用非支配排序遗传算法对所述多个回归测试用例进行排序,获得初步排序结果;
9.根据所述聚类结果调整所述初步排序结果,获得最终排序结果。
10.可选的,所述根据所述聚类结果调整所述初步排序结果,获得最终排序结果,包括:
11.按所述初步排序结果所指定的先后顺序逐一检测所述初步排序结果中每一个所述回归测试用例是否符合位置调整条件;
12.每检测到一个符合所述位置调整条件的所述回归测试用例,将符合所述位置调整条件的所述回归测试用例从当前位置调整到末位;
13.当检测到首个位置被调整的回归测试用例时,将当前的排序结果确定为最终排序结果。
14.可选的,所述计算所述多个回归测试用例之间的相似度,包括:
15.计算所述多个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求覆盖相似度;
16.根据所述文本主题相似度、所述代码覆盖率相似度和所述需求覆盖相似度计算得到所述多个回归测试用例之间的相似度。
17.可选的,所述按照isodata对所述多个回归测试用例进行聚类,获得聚类结果,包括:
18.根据预设的输入参数确定多个聚类中心;
19.按照所述聚类中心对所述多个回归测试用例执行一次聚类,获得迭代聚类结果;
20.若迭代次数未达到预设的迭代阈值,根据所述聚类结果符合分裂条件或者合并条件,执行聚类中心分裂或者聚类中心合并操作;其中,所述迭代次数为执行聚类的次数;
21.返回执行所述按照所述聚类中心对所述多个回归测试用例执行一次聚类步骤,直至所述迭代次数达到所述迭代阈值为止;
22.若迭代次数达到所述迭代阈值,将所述迭代聚类结果确定为聚类结果。
23.本技术第二方面提供一种回归测试用例排序的装置,包括:
24.获取单元,用于获取多个回归测试用例;
25.聚类单元,用于计算所述多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法(iterative self-organizing data analysis techniques algorithm,isodata)对所述多个回归测试用例进行聚类,获得聚类结果;
26.排序单元,用于利用非支配排序遗传算法对所述多个回归测试用例进行排序,获得初步排序结果;
27.调整单元,用于根据所述聚类结果调整所述初步排序结果,获得最终排序结果。
28.可选的,所述调整单元根据所述聚类结果调整所述初步排序结果,获得最终排序结果时,具体用于:
29.按所述初步排序结果所指定的先后顺序逐一检测所述初步排序结果中每一个所述回归测试用例是否符合位置调整条件;
30.每检测到一个符合所述位置调整条件的所述回归测试用例,将符合所述位置调整条件的所述回归测试用例从当前位置调整到末位;
31.当检测到首个位置被调整的回归测试用例时,将当前的排序结果确定为最终排序结果。
32.可选的,所述聚类单元计算所述多个回归测试用例之间的相似度时,具体用于:
33.计算所述多个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求覆盖相似度;
34.根据所述文本主题相似度、所述代码覆盖率相似度和所述需求覆盖相似度计算得到所述多个回归测试用例之间的相似度。
35.可选的,所述聚类单元按照isodata对所述多个回归测试用例进行聚类,获得聚类结果时,具体用于:
36.根据预设的输入参数确定多个聚类中心;
37.按照所述聚类中心对所述多个回归测试用例执行一次聚类,获得迭代聚类结果;
38.若迭代次数未达到预设的迭代阈值,根据所述聚类结果符合分裂条件或者合并条件,执行聚类中心分裂或者聚类中心合并操作;其中,所述迭代次数为执行聚类的次数;
39.返回执行所述按照所述聚类中心对所述多个回归测试用例执行一次聚类步骤,直
至所述迭代次数达到所述迭代阈值为止;
40.若迭代次数达到所述迭代阈值,将所述迭代聚类结果确定为聚类结果。
41.本技术第三方面提供一种电子设备,包括存储器和处理器;
42.其中,所述存储器用于存储计算机程序;
43.所述处理器用于执行所述计算机程序,具体用于实现本技术第一方面任意一项所提供的回归测试用例排序的方法。
44.本技术第四方面提供一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现本技术第一方面任意一项所提供的回归测试用例排序的方法。
45.本技术提供一种回归测试用例排序的方法、装置、设备和存储介质,方法包括,获取多个回归测试用例;计算多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法对多个回归测试用例进行聚类,获得聚类结果;利用非支配排序遗传算法对多个回归测试用例进行排序,获得初步排序结果;根据聚类结果调整初步排序结果,获得最终排序结果。本方案利用排序算法进行初步排序后,根据聚类结果进一步调整初步排序的结果,使得最终排序结果更符合测试需求,从而提高测试效率。
附图说明
46.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
47.图1为本技术实施例提供的一种回归测试用例排序的技术方案示意图;
48.图2为本技术实施例提供的一种回归测试用例排序的方法的流程图;
49.图3为本技术实施例提供的一种回归测试用例聚类的流程图;
50.图4为本技术实施例提供的一种根据非支配排序遗传算法确定回归测试用例排序的流程图;
51.图5为本技术实施例提供的一种回归测试用例排序的装置的结构示意图;
52.图6为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
53.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
54.首先对本技术可能涉及的部分术语进行说明。
55.回归测试。回归测试是指原始代码被修改或因部署环境的改变时对软件进行重新测试,以确保新的版本保留了旧版本的功能并且没有出现新的缺陷。
56.聚类。基于对象隐藏特征的相似性对一组对象进行分组的任务。因此,与其他组中的对象相比,同一组(即集群)中的对象(在某种意义上)彼此更相似。换句话说,一个组内对象的相似性越大,不同组之间对象的多样性越大,聚类技术的性能就越好。
57.k-means算法。一种常见的聚类算法,对于给定的样本集,按照样本之间的距离大小,将样本集划分为k个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
58.isodata算法。isodata算法为迭代自组织数据分析算法(iterative self-organizing data analysis techniques algorithm,isodata)。isodata算法是目前应用较为广泛地非监督学习聚类算法,该算法在k-means算法基础上引入了“合并和分裂”的操作机制。
59.nsga-ii算法。带精英策略的非支配排序遗传算法(non-dominated sorting genetic algorithm-ii,nsga-ii)是一种全局优化算法,可以对多目标问题进行快速搜索,主要侧重于三个方面的优化内容:一是提出了快速非支配排序算法,二是采用拥挤度和拥挤度比较算子,三是引入精英策略。
60.目前,回归测试用例排序方法主要有以下三种:一是基于静态信息的排序方法,也就是使用文本处理技术对测试用例源代码的方法调用情况、测试用例文本内容或需求文档等信息进行相似性分析后排序;二是基于动态信息的排序方法,也就是使用机器学习、数据挖掘或多目标优化算法对测试用例执行后的代码覆盖情况或测试用例历史执行结果等进行处理,再依据此对测试用例进行排序;三是综合使用基于静态信息和动态信息的排序方法。基于静态信息的排序方法可以较好地保持测试序列的多样性且信息获取容易但不利于精度提升,基于动态信息的排序方法信息获取方式较为复杂但是精确度相对较高,而综合使用静态信息和动态信息的排序方法的信息来源更加全面,因此更易获得更好的排序效果,但方法的复杂程度也相对较高。
61.请参见图1,为本技术提供的回归测试用例排序的方法的架构示意图。可以看出,本方案在获取到多个需要排序的回归测试用例后,一方面分别计算这些回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求覆盖相似度,然后根据这些相似度对多个回归测试用例进行聚类,获得聚类结果。另一方面利用nsga-ii算法确定多个回归测试用例的排序,获得初步排序结果。
62.最后,根据聚类结果对初步排序结果进行优化,获得最终排序结果。
63.根据图1的架构,本技术实施例提供一种回归测试用例排序的方法,请参见图2,为该方法的流程图,该方法可以包括如下步骤。
64.s201,获取多个回归测试用例。
65.以上多个回归测试用例,可以是相关的技术人员预先编写并存储在测试用例数据库中的多个回归测试用例。也就是说,在s201中可以直接从测试用例数据库中读取出预先针对需要测试的软件编写的每一个回归测试用例。
66.为便于说明,将步骤s201中获得的回归测试用例的总数用sum表示。
67.s202,计算多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法对多个回归测试用例进行聚类,获得聚类结果。
68.可选的,计算多个回归测试用例之间的相似度,包括:
69.计算多个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求覆盖相似度;
70.根据文本主题相似度、代码覆盖率相似度和需求覆盖相似度计算得到多个回归测试用例之间的相似度。
71.对于每两个回归测试用例,这两个回归测试用例之间的相似度的计算方法可以是:将这两个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求相似度相加,得到的总和就是这两个回归测试用例之间的相似度。
72.也可以是:分别利用对应的权重乘以这两个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求相似度,然后将乘积相加得到这两个回归测试用例之间的相似度。
73.还可以是:在这两个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求相似度中选取最大值作为这两个回归测试用例之间的相似度。
74.或者可以采用不同于上述算法的其他计算方法综合文本主题相似度、代码覆盖率相似度和需求覆盖相似度来计算最终的相似度,不做限定。
75.每两个回归测试用例之间的文本主题相似度的计算方法如下:
76.回归测试用例可以视为包含功能关注点或需求点的文本,因此可以利用文本预处理的方法进行预处理,然后将其转换成文本主题向量,再计算两个回归测试用例的文本主题向量之间的曼哈顿距离,计算结果即可作为这两个回归测试用例的文本主题相似度。
77.在具体应用中,可以先利用步骤s201中获得的多个回归测试用例包含的文本关键信息构建语料库,接着利用现有的主题建模技术处理该语料库,获得每个回归测试用例的文本主题向量。
78.最后,针对每两个回归测试用例,按下述公式(1)计算这两个回归测试用例的文本主题向量的曼哈顿距离(manhattan distance,md),计算结果(即md)就是这两个回归测试用例的文本主题相似度。
79.(1)
80.公式(1)中,xi和yi分别表示两个回归测试用例的文本主题向量中的第i个元素,该元素的数值具体可以表示对应的回归测试用例属于第i个主体的概率值,k为回归测试用例的文本主题向量包含的元素个数(即维数)。
81.每两个回归测试用例之间的代码覆盖率相似度的计算方法如下:
82.回归测试用例对代码的覆盖程度体现了回归测试用例的动态属性,对于任意两个回归测试用例,这两个回归测试用例对代码覆盖范围的重合程度越大,说明两者越相似。本实施例中,为便于计算,代码覆盖范围仅考虑语句级别。
83.因此,本实施例中可以按照下述公式(2)计算得到每两个回归测试用例之间的代码覆盖率相似度。
84.(2)
…………
d1(i,j)=1-|cci∩ccj|
÷
|cci∪ccj|
85.公式(2)中,d1(i,j)表示回归测试用例ti和回归测试用例tj的代码覆盖率相似度,cci表示回归测试用例ti覆盖的语句的集合,ccj表示回归测试用例tj覆盖的语句的集合。|cci∩ccj|表示两个集合的交集中元素的个数,|cci∪ccj|表示两个集合的并集中元素的个数。
86.一个回归测试用例覆盖的语句,是指,执行该回归测试用例后,软件中能够被测试到的语句。例如,某软件的代码由100行语句构成,通过执行回归测试用例x能够测试其中的
第1行至第30行语句这段代码是否有问题,这种情况下可以认为回归测试用例x覆盖第1行至第30行语句。
87.s201中获得的每个回归测试用例具体能覆盖哪些语句,可以由通过多次执行回归测试用例检测得到,也可以由编写回归测试用例的技术人员设定。
88.每两个回归测试用例之间的需求覆盖相似度的计算方法如下:
89.首先对需要测试的软件的需求说明书进行分词,获得构成需求说明书的多个词汇,以及对回归测试用例包含的文本进行分词获得构成回归测试用例的文本的多个词汇,接着利用现有的词向量(word2vec)方法将需求说明书的词汇和回归测试用例的文本中的词汇均转换为词向量,然后再根据公式(3),计算每一个回归测试用例ti相对于需求说明书的词转移距离ci。
90.(3)
…………
ci=||wi-s||291.公式(3)中,wi表示回归测试用例ti分词后的所有词汇的词向量相加得到的向量,s表示需求说明书分词后的所有词汇的词向量相加得到的向量,||wi-s||2表示wi和s这两个向量之间的欧式距离。
92.最后,针对任意两个回归测试用例ti和tj,根据这两个回归测试用例的词转移距离,按下述公式(4)计算得到两者的需求覆盖相似度d2(i,j)。
93.(4)
…………
d2(i,j)=|ci-cj|
94.公式(4)中,ci表示回归测试用例ti的词转移距离,cj表示回归测试用例tj的词转移距离。
95.根据前面得到的基于文本主题、代码覆盖率和需求覆盖率计算测试用例相似性,对所有测试用例进行聚类,再根据条件进行分裂或合并,自适应更新聚类中心,不断更新聚类结果直至收敛。
96.可选的,按照isodata对多个回归测试用例进行聚类,获得聚类结果,包括:
97.根据预设的输入参数确定多个聚类中心;
98.按照聚类中心对多个回归测试用例执行一次聚类,获得迭代聚类结果;
99.若迭代次数未达到预设的迭代阈值,根据聚类结果符合分裂条件或者合并条件,执行聚类中心分裂或者聚类中心合并操作;其中,迭代次数为执行聚类的次数;
100.返回执行按照聚类中心对多个回归测试用例执行一次聚类步骤,直至迭代次数达到迭代阈值为止;
101.若迭代次数达到迭代阈值,将迭代聚类结果确定为聚类结果。
102.请参见图3,按照isodata对多个回归测试用例进行聚类的过程可以包括如下步骤。
103.a1,设定输入参数。
104.可选的,输入参数具体可以包括迭代阈值,标准差上限θ,预期类数kc,相似度阈值θc。
105.a2,初始化聚类中心数n。
106.在步骤a2中,可以将n初始化为任意一个正整数,n的初始数值可以根据实际情况设定,本实施例不做限定。
107.a3,随机选取n个聚类中心。
108.在步骤a3中,可以随机选取n个回归测试用例作为聚类中心,每一个聚类中心对应一个聚类簇,即聚类中心1对应聚类簇1,聚类中心2对应聚类簇2。
109.步骤a1至a3,相当于根据预设的输入参数确定多个聚类中心。
110.a4,按聚类中心聚类。
111.步骤a4,实质上就是确定每一个非聚类中心的回归测试用例具体属于哪个聚类簇。
112.在步骤a4中,针对每一个非聚类中心的回归测试用例ti,可以按如下方法确定该回归测试用例ti属于哪个聚类簇:
113.在前文计算得到的ti和每一个聚类中心的相似度中选取出最大的相似度,确定ti属于最大的相似度对应的聚类中心的聚类簇。
114.示例性的,将ti和聚类中心1的相似度记为ti-1,ti和聚类中心2的相似度记为ti-2,以此类推,将ti和聚类中心n的相似度记为ti-n,假设经过比对确定ti-1至ti-n之中,ti和聚类中心7的相似度ti-7最大,于是确定ti属于聚类中心7的聚类簇,即属于聚类簇7。
115.a5,修正各个聚类中心。
116.在步骤a5中,针对步骤a4划分出的每一个聚类簇,可以按照下述聚类中心确定算法,重新确定该聚类簇的聚类中心:
117.针对该聚类簇中的每一个回归测试用例,计算该回归测试用例的中心分值,然后将该聚类簇中具有最大的中心分值的回归测试用例,确定为该聚类簇的聚类中心。
118.对于任意一个特定的聚类簇,其中的任意一个回归测试用例的中心分值,等于这个回归测试用例和特定聚类簇内其他每一个回归测试用例的相似度的总和。中心分值的定义可以参见下述公式(5)。
119.(5)
120.公式(5)中,scorei表示聚类簇中回归测试用例ti的中心分值,nk表示聚类簇中除回归测试用例ti以外的回归测试用例的数量,sim(i,k),表示回归测试用例ti,和聚类簇中除自身以外的第k个回归测试用例的相似度,k的取值范围为1至nk。
121.步骤a4和a5,相当于按照聚类中心对多个回归测试用例执行一次聚类,获得迭代聚类结果。
122.a6,判断是否最后一次迭代。
123.如果是最后一次迭代,则结束聚类过程,如果不是最后一次迭代,则执行步骤a7。
124.具体的判断方式可以是,判断迭代次数是否小于迭代阈值,如果迭代次数小于迭代阈值,就确定不是最后一次迭代,如果迭代次数不小于迭代阈值,就确定是最后一次迭代。
125.迭代次数,为执行聚类的次数。具体的,迭代次数可以等于执行步骤a4的次数。
126.a7,判断符合分裂条件或合并条件。
127.分裂条件为1,聚类中心的数量n小于或等于kc的二分之一;或者2,聚类中心的数量n小于kc的2倍并且迭代次数为奇数。
128.合并条件为3,聚类中心的数量n大于或等于kc的二倍;或者4,聚类中心的数量n大
于kc的二分之一并且迭代次数为偶数。
129.也就是说,如果符合条件1和2中的任意一条,就确定符合分裂条件。如果符合条件3和4中的任意一条,就确定符合合并条件。
130.若符合分裂条件,执行步骤a8,如果符合合并条件,执行步骤a9。
131.a8,分裂聚类中心。
132.步骤a8的具体实施方式如下:
133.首先计算每一个聚类簇i的标准差向量,记为veci。
134.veci可以表示为veci=(sig
i-1
,sig
i-2

……
sig
i-nci
),其中,sig
i-1
表示聚类簇i中的第1个回归测试用例的相似度标准差,类似的,sig
i-nci
表示聚类簇i中的第nci个回归测试用例的相似度标准差。nci为聚类簇i包含的回归测试用例的总数。
135.聚类簇i中的第1个回归测试用例的相似度标准差,是指,第1个回归测试用例和聚类簇i内其他nci-1个回归测试用例的相似度(也就是有nci-1个相似度)构成的数组的标准差。其他回归测试用例的相似度标准差的定义类似,不再赘述。
136.接着确定每一个聚类簇i的标准差向量的最大分量,记为max-veci。再筛选出每一个max-veci大于标准差上限的聚类簇i。
137.针对每一个max-veci大于标准差上限的聚类簇i,如果该聚类簇满足条件5,di-avg》davg并且nci》2(θ+1);或者条件6,n≤kc/2中的一条,就确定这个聚类簇为待分裂的聚类簇。
138.其中,di-avg为聚类簇i中每一个回归测试用例和聚类中心i的相似度的平均值,davg为每一个非聚类中心的回归测试用例和其所属聚类簇的聚类中心的相似度的平均值。
139.最后对每一个待分裂的聚类簇执行聚类中心分裂。
140.针对每一个待分裂的聚类簇,按如下过程执行聚类中心分裂:
141.在待分裂的聚类簇i中随机选取nci的二分之一(向下取整)个回归测试用例,将选取到的回归测试用例作为一个分裂后聚类簇,记为聚类簇i-,剩余未选取到的聚类簇作为另一个分裂后聚类簇,记为聚类簇i+,然后按照步骤a5所述的聚类中心确定算法,分别确定聚类簇i-的聚类中心i-和聚类簇i+的聚类中心i+,至此完成待分裂的聚类簇i的聚类中心分裂过程。聚类中心i-和聚类中心i+相当于聚类中心i分裂得到的两个聚类中心。
142.其中,每完成一个待分裂聚类簇的分裂过程,就将聚类中心的数量n递增1,也就是在分裂前聚类中心的数量基础上增加1,作为分裂后聚类中心的数量。
143.a9,合并聚类中心。
144.步骤a9的具体实施方式如下:
145.首先确定每两个聚类中心,即聚类中心i和聚类中心j之间的相似度,记为sim(i,j)-c。
146.然后筛选出每一个小于相似度阈值的聚类中心的相似度,并将这些小于相似度阈值的相似度递增排序。
147.最后,针对任意两个聚类中心,即聚类中心i和聚类中心j,如果这两个聚类中心符合聚合条件:sim(i,k)-c小于相似度阈值,并且sim(j,k)-c小于相似度阈值,就对这两个聚类中心执行合并操作。
148.也就是说,对于任意两个聚类中心,如果这两个聚类中心和另外的某一个聚类中
心k的相似度都小于相似度阈值,就对这个聚类中心执行合并操作。
149.对于任意两个聚类中心i和聚类中心j,合并操作的过程如下:
150.将聚类中心i的聚类簇i和聚类中心j的聚类簇j合并成一个新的聚类簇,然后,按照步骤a5所述的聚类中心确定算法确定合并后的新聚类簇的聚类中心,这个新聚类中心就相当于是聚类中心i和聚类中心j合并得到的聚类中心。
151.当每两个符合聚合条件的聚类中心都被执行了合并操作之后,步骤a9结束。
152.其中,每完成一次合并操作,就将聚类中心的数量n递减1,也就是在合并前聚类中心的数量基础上减去1,作为合并后聚类中心的数量。
153.a10,判断是否改变输入参数。
154.如果不改变输入参数,执行步骤a4,如果改变输入参数,执行步骤a1。
155.可选的,步骤a10中可以判断迭代次数为奇数或偶数,如果迭代次数为奇数,则确定改变输入参数,如果迭代次数为偶数,则确定不改变输入参数。
156.在一些可选的实施例中,也可以根据其他的依据来判断是否改变输入参数,本实施例对具体的判断依据不做限定。
157.对于每一个聚类簇,按聚类中心确定算法重新确定的聚类中心,可以和该聚类簇原本的聚类中心相同,也可以不同。
158.步骤a6至a10,相当于若迭代次数未达到预设的迭代阈值,根据聚类结果符合分裂条件或者合并条件,执行聚类中心分裂或者聚类中心合并操作。
159.结束聚类过程时的多个聚类簇,就是步骤s202输出的聚类结果。
160.s203,利用非支配排序遗传算法对多个回归测试用例进行排序,获得初步排序结果。
161.请参见图4,为本技术实施例提供的按照非支配排序遗传算法进行排序的流程图。步骤s203的具体实施方式可以包括如下步骤。
162.b1,初始化种群。
163.在步骤b1中,可以设置非支配排序遗传算法执行过程中涉及的参数的数值。例如可以设定种群大小阈值m的值,具体数值根据实际情况设定,不做限定。
164.另外在步骤b1中,还可以随机生成组成第一代种群的m个个体,m为预先设定的正整数。每一个个体,均可以视为一个由步骤s201中的多个回归测试用例按一定顺序排列形成的列表,不同个体之间回归测试用例的排序互不相同。
165.示例性的,假设步骤s201中获得了5个回归测试用例,依次记为t1至t5,则种群中的一个个体x1可以表示为(t1,t2,t4,t3,t5),另一个个体x2可以表示为(t2,t1,t3,t5,t4)。
166.也就是说,本实施例中,种群内的每一个个体,均相当于一种回归测试用例的排序方案。
167.b2,个体编码。
168.在步骤b2中,为了便于后续算法的执行,可以将每一个个体从回归测试用例的列表转换成一个数组,数组中的元素和转换前列表内的回归测试用例一一对应,并且每个元素的数值等于对应的回归测试用例的编号。
169.续接步骤b1的示例,个体x1:(t1,t2,t4,t3,t5),经过编码可以得到x1:(1,2,4,3,
5),个体x2:(t2,t1,t3,t5,t4),经过编码可以得到x2:(2,1,3,5,4)。
170.b3,种群大小是否大于2m。
171.若种群大小大于2m,则执行步骤b7,若种群大小不大于2m,则执行步骤b4。
172.m,即b1所述的种群大小阈值。
173.种群大小,可以理解为种群中当前包含的个体的数量,比如执行b3时种群中有20个个体,则种群大小为20。
174.b4,个体评价。
175.在步骤b4中,可以计算当前种群中每一个个体的评价值。
176.本实施例中,个体的评价值可以根据该个体对应的平均故障检测率(apfd)、语句覆盖率(apsc)和有效执行时间(eet)计算得到。
177.对于任意一个个体xj,该个体的平均故障检测率apfd(xj)可以按如下公式(6)计算得到。
178.(6)
179.sum表示步骤s201中获得的回归测试用例的总数。bug表示已发现的缺陷的总数,tfi表示个体xj所表征的回归测试用例的排序方案中,首次检测到第i个缺陷的回归测试用例所在的次序。示例性的,对于个体x2所表示的排序方案,首次检测到第5个缺陷的回归测试用例排在其中的第8位,则tf5等于8。
180.个体xj的语句覆盖率apsc(xj),可以按如下公式(7)计算得到。
181.(7)
182.公式(7)中,line表示被测试的软件所包含的代码行数,例如软件一共包含100行代码,则line等于100。tsi表示个体xj所表征的回归测试用例的排序方案中,首次覆盖第i行代码的回归测试用例所在的次序。示例性的,对于个体x2所表示的排序方案,首次覆盖其中第10行代码的回归测试用例排在其中的第7位,则ts
10
等于7。
183.个体xj的有效执行时间eet(xj)可以按如下公式(8)计算得到。
184.(8)
185.et
ij
表示执行个体xj中的第i个回归测试用例所消耗的时间。
186.对于每一个个体xj,在计算得到该个体的平均故障检测率apfd(xj),语句覆盖率apsc(xj)和有效执行时间eet(xj)之后,可以按照如下公式(9)计算得到该个体的评价分值score(xj)。
187.(9):score(xj)=α
×
apfd(xj)+β
×
apsc(xj)+(1-α-β)
×
eet(xj)
188.公式(9)中,α和β分别为预设的权重,α和β均小于1,且两者的总和也小于1。
189.b5,选择交叉变异。
190.步骤b5具体包括选择操作,交叉操作和变异操作。
191.其中,选择操作是指根据评价分值随机选取当前种群中的多个个体,其中,个体对
应的评价分值越大,则被选中的概率就越高,反之评价分值越小则被选中的概率越低。
192.交叉操作,是指针对每两个选择操作中被选中的个体,将这两个个体的一部分元素互换,获得两个新的个体。
193.续接步骤b2的示例,对于个体x1:(1,2,4,3,5)和个体x2:(2,1,3,5,4)执行交叉操作,将x1的(4,3,5)三个元素和x2的(3,5,4)三个元素互换,获得两个新个体,记为x1’(1,2,3,5,4)和x2’(2,1,4,3,5)。
194.在交叉操作中具体互换哪些元素可以随机确定。
195.变异操作,是指随机选择种群中的若干个个体,对选到的个体,随机将其中的两个及以上的元素的次序互换,获得新的个体。
196.续接步骤b2的示例,假设选中x1:(1,2,4,3,5)进行变异操作,则可以将其中的元素1和5的次序互换,获得一个变异后的新个体,记为x1”(5,2,4,3,1)。
197.b6,父代子代合并。
198.在步骤b6中,可以将执行步骤b4时被评价的个体视为父代个体,将通过步骤b5的交叉操作和变异操作生成的新个体视为子代个体,父代子代合并,就是指将父代个体和子代个体合并到同一个种群中。即通过执行步骤b6,可以获得一个包括步骤b4的所有父代个体和步骤b5的所有子代个体的种群。
199.步骤b6执行结束后,返回执行步骤b3。
200.b7,快速非支配排序。
201.在步骤b7中,可以按如下方法确定当前种群中的每一个个体xj的排序等级。
202.首先,定义个体间的支配关系如下:
203.对于任意两个个体xi和xj,如果个体xi对应的平均故障检测率apfd(xi),语句覆盖率apsc(xi)和有效执行时间eet(xi)都不小于个体xj的平均故障检测率apfd(xj),语句覆盖率apsc(xj)和有效执行时间eet(xj),并且这三项指标中至少有一项满足xi对应的值大于xj对应的值,就确定个体xi支配个体xj,或者说个体xj被个体xi支配。
204.基于上述支配关系的定义,执行b7时,首先在当前种群内的所有个体中,找出每一个不被其他个体支配的个体,将找到的个体的排序等级确定为f(1)。
205.然后,忽略当前种群内排序等级为f(1)的个体,在剩余的所有个体,也就是在除排序等级为f(1)的个体以外的个体中,再次找出每一个不被其他个体支配的个体,将本次找到的个体的排序等级确定为f(2)。
206.接着忽略当前种群内排序等级为f(1)和f(2)的个体,在剩余的所有个体中找出每一个不被其他个体支配的个体,将本次找到的个体的排序等级确定为f(3)。
207.后续以此类推,每确定一个排序等级的个体后,就将当前种群内已确定排序等级的个体忽略,在剩余未确定排序等级的个体中继续找出不被其他个体支配的个体并赋予这些个体下一个排序等级,直至种群内的每一个个体都确定了所属的排序等级为止,至此,步骤b7结束。
208.b8,计算拥挤度。
209.在步骤b8中,可以计算种群中当前存在的每一个个体的拥挤度。
210.本实施例中,个体xj的拥挤度可以定义为,xj到种群中其他每一个体的距离的最小值。也就是说,对于个体xj,可以计算xj和种群中其他每一个体的距离,例如除xj外种群
中还有9个个体,则可以计算得到9个距离,然后将这9个距离中的最小值确定为xj的拥挤度,记为des(xj)。
211.如步骤b2所述,每一个个体经过编码相当于一个数组,因此在步骤b8中,对于任意两个个体,可以将这两个个体视为由数组中的元素构成的向量,接着计算这两个向量之间的欧氏距离,将计算结果确定为种群内这两个个体的距离。
212.b9,判断是否达到迭代阈值。
213.步骤b9中的迭代阈值,可以和步骤a6中的迭代阈值相同,也可以和步骤a6中的迭代阈值不同,不做限定。
214.步骤b9中,具体可以判断迭代次数是否小于迭代阈值,如果迭代次数小于迭代阈值,就确定未达到迭代阈值,如果迭代次数不小于迭代阈值,就确定达到迭代阈值。
215.若未达到迭代阈值,执行步骤b10,若达到迭代阈值,执行步骤b13。
216.上述迭代次数,可以是执行步骤b7的次数。
217.b10,生成新父种群。
218.在步骤b10中,可以按照步骤b7中非支配排序后确定的排序等级和步骤b8中计算得到的每个个体的拥挤度,对当前种群中的所有个体进行过滤。
219.具体过滤方法如下:
220.首先按照排序等级从低到高将当前种群中的所有个体排序,即排序等级为f(1)的个体在前,接着是f(2)的个体,f(3)的个体,以此类推。接着,针对具有相同排序等级的个体,按照拥挤度从高到低排序,即具有相同排序等级的多个个体中,拥挤度越大则排序越靠前。
221.完成排序后,保留前m个个体,第m+1以及之后的个体则从种群中移除。
222.经过过滤,未被移除的所有个体组成的种群,就是步骤b10所述的新父种群。
223.b11,选择交叉变异。
224.b12,父代子代合并。
225.步骤b11和步骤b12的具体实施方式可以参见步骤b5和b6,不再赘述。
226.步骤b12结束后,返回执行步骤b7。
227.b13,输出最优个体。
228.最优个体,就是当前种群中评价值最大的个体。个体的评价值的计算方法参见步骤b4,不再赘述。
229.s204,根据聚类结果调整初步排序结果,获得最终排序结果。
230.可选的,根据聚类结果调整初步排序结果,获得最终排序结果,包括:
231.c1,按初步排序结果所指定的先后顺序逐一检测初步排序结果中每一个回归测试用例是否符合位置调整条件;
232.c2,每检测到一个符合位置调整条件的回归测试用例,将符合位置调整条件的回归测试用例从当前位置调整到末位;
233.c3,当检测到首个位置被调整的回归测试用例时,将当前的排序结果确定为最终排序结果。
234.上述位置调整条件,是指,在这个回归测试用例之前存在和该回归测试用例属于同一聚类簇的另一个回归测试用例。
235.示例性的,检测到初步排序结果中排在第5位的回归测试用例t10,发现t10和第5位之前的,例如和第3位的回归测试用例t2属于聚类结果中的同一聚类簇,于是确定回归测试用例t10符合位置调整条件,将t10从当前所在的第5位移动最后一位,对应的原本在初步排序结果中位于第6位至末位的回归测试用例逐一向前移动一位。
236.可以看出,通过执行步骤s204的调整,可以保证最终排序结果中前n个回归测试用例分别属于不同的聚类簇,提高了最终排序结果前部首先被执行的回归测试用例的多样性,从而通过执行分别分属不同聚类簇的回归测试用例提高不同软件中不同缺陷被发现的概率。
237.本技术提供一种回归测试用例排序的方法、装置、设备和存储介质,方法包括,获取多个回归测试用例;计算多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法对多个回归测试用例进行聚类,获得聚类结果;利用非支配排序遗传算法对多个回归测试用例进行排序,获得初步排序结果;根据聚类结果调整初步排序结果,获得最终排序结果。本方案利用排序算法进行初步排序后,根据聚类结果进一步调整初步排序的结果,使得最终排序结果更符合测试需求,从而提高测试效率。
238.本发明的有益效果在于:
239.基于文本主题、代码覆盖率和需求覆盖率的相似性计算方法综合考虑了回归测试用例的动态和静态特性,并将影响回归测试用例设计质量和缺陷发现能力的文档和相关要素纳入考虑,可有效提高回归测试用例聚类结果。
240.采用平均故障检测率(apfd)、语句覆盖率(apsc)和有效执行时间(eet)作为优化目标可更加客观地进行排序,且用加权的方式可以以更低的时间成本找到更多的缺陷。
241.根据聚类结果对排序结果进行进一步的优化调整,可以使得排序序列靠前的部分均为不同聚类中的回归测试用例,同时这些回归测试用例在各自的聚类中的排序结果均在前列,从而降低了排序结果前部回归测试用例的相似性,提高了前部回归测试用例的多样性以及不同缺陷被发现的概率。
242.根据本实施例提供的回归测试用例排序的方法,本技术实施例还提供一种回归测试用例排序的装置,请参见图5,该装置可以包括如下单元。
243.获取单元501,用于获取多个回归测试用例。
244.聚类单元502,用于计算多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法(iterative self-organizing data analysis techniques algorithm,isodata)对多个回归测试用例进行聚类,获得聚类结果。
245.排序单元503,用于利用非支配排序遗传算法对多个回归测试用例进行排序,获得初步排序结果。
246.调整单元504,用于根据聚类结果调整初步排序结果,获得最终排序结果。
247.可选的,调整单元504根据聚类结果调整初步排序结果,获得最终排序结果时,具体用于:
248.按初步排序结果所指定的先后顺序逐一检测初步排序结果中每一个回归测试用例是否符合位置调整条件;
249.每检测到一个符合位置调整条件的回归测试用例,将符合位置调整条件的回归测试用例从当前位置调整到末位;
250.当检测到首个位置被调整的回归测试用例时,将当前的排序结果确定为最终排序结果。
251.可选的,聚类单元502计算多个回归测试用例之间的相似度时,具体用于:
252.计算多个回归测试用例之间的文本主题相似度,代码覆盖率相似度和需求覆盖相似度;
253.根据文本主题相似度、代码覆盖率相似度和需求覆盖相似度计算得到多个回归测试用例之间的相似度。
254.可选的,聚类单元502按照isodata对多个回归测试用例进行聚类,获得聚类结果时,具体用于:
255.根据预设的输入参数确定多个聚类中心;
256.按照聚类中心对多个回归测试用例执行一次聚类,获得迭代聚类结果;
257.若迭代次数未达到预设的迭代阈值,根据聚类结果符合分裂条件或者合并条件,执行聚类中心分裂或者聚类中心合并操作;其中,迭代次数为执行聚类的次数;
258.返回执行按照聚类中心对多个回归测试用例执行一次聚类步骤,直至迭代次数达到迭代阈值为止;
259.若迭代次数达到迭代阈值,将迭代聚类结果确定为聚类结果。
260.本实施例所提供的回归测试用例排序的装置,其具体工作原理可以参见本技术任一实施例所提供的回归测试用例排序的方法中的相关步骤,此处不再赘述。
261.本技术提供一种回归测试用例排序的装置,装置包括,获取单元501获取多个回归测试用例;聚类单元502计算多个回归测试用例之间的相似度,并按照迭代自组织数据分析算法对多个回归测试用例进行聚类,获得聚类结果;排序单元503利用非支配排序遗传算法对多个回归测试用例进行排序,获得初步排序结果;调整单元504根据聚类结果调整初步排序结果,获得最终排序结果。本方案利用排序算法进行初步排序后,根据聚类结果进一步调整初步排序的结果,使得最终排序结果更符合测试需求,从而提高测试效率。
262.本技术实施例还提供一种电子设备,请参见图6,包括存储器601和处理器602。
263.其中,存储器601用于存储计算机程序;
264.处理器602用于执行计算机程序,具体用于实现本技术任一实施例所提供的回归测试用例排序的方法。
265.本技术实施例还一种计算机存储介质,用于存储计算机程序,计算机程序被执行时,具体用于实现本技术任一实施例所提供的回归测试用例排序的方法。
266.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
267.需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
268.专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1