大规模持续集成的测试用例优先级排序方法、设备及介质技术

技术编号:35945182 阅读:17 留言:0更新日期:2022-12-14 10:35
本发明专利技术公开了大规模持续集成的测试用例优先级排序方法、设备及介质,涉及计算机软件测试技术领域,解决了现有的测试用例排序方法不能快速高效并准确对测试用例进行排序的问题,其技术方案要点是:第一排序,所述第一排序操作包含解析目标代码,所述目标代码包含测试代码,对所述目标代码进行词元化处理,得到至少包含测试用例表示;通过检索算法对测试用例进行第一排序,得到初排测试集;以及第二排序,所述第二排序包含筛选排序后的初排测试集用于作为模型的训练集;将经过训练集训练后的模型对所述初排测试集进行第二排序,得到测试用例优先级排序结果,达到快速高效地对测试用例排序,并提高排序准确性的目的。并提高排序准确性的目的。并提高排序准确性的目的。

【技术实现步骤摘要】
大规模持续集成的测试用例优先级排序方法、设备及介质


[0001]本专利技术涉及计算机软件测试
,更具体地说,它涉及大规模持续集成的测试用例优先级排序方法、设备及介质。

技术介绍

[0002]持续集成鼓励开发人员频繁地将更改的代码集成到主线代码库,并通过自动化构建和测试来验证提交代码的质量。与传统的开发模式相比,持续集成有利于更早、更快速地检测出代码的错误,从而支持产品的快速迭代。随着持续集成的广泛应用,大量变更代码以极其频繁的速度提交,由于代码更改提交非常频繁,测试数量以惊人的速度增加,如何优化持续集成以降低测试成本和缩短测试反馈周期,以提高测试成本效益,是持续集成在实际应用过程中面临的主要挑战。
[0003]目前,人们提出的持续集成测试优化方法:(1)基于覆盖信息、风险分析等的传统TCP技术在典型的持续集成环境中变得不适用,因为更改程序代码极其频繁地提交,大量的信息分析和收集需要大量的时间成本。(2)基于启发式规则或信息检索技术的轻量级测试用例排序模型,因忽略了代码语义、上下文等信息,导致测试排序的性能仍然有较大提升空间。(3)基于深度学习的测试用例排序技术(例如,强化学习,预训练语言模型BERT),能取得较好的排序性能,但是复杂的模型训练需要大量的训练时间和复杂的参数设置。
[0004]综上可知,现有的测试用例排序方法中基于覆盖等测试用例排序技术、基于信息检索技术、机器学习或者深度学习方法,难以满足大规模持续集成中对测试的要求。

技术实现思路

[0005]本专利技术的目的是提供大规模持续集成的测试用例优先级排序方法、设备及介质,通过第一排序对测试用例依次进行初排和筛选,得到筛选后的测试集,并利用第二排序对筛选后的初排测试集进行精准排序,达到快速高效地对测试用例排序,并提高排序准确性的目的。
[0006]本专利技术的上述技术目的是通过以下技术方案得以实现的:
[0007]一种大规模持续集成的测试用例优先级排序方法,包括:
[0008]第一排序,所述第一排序操作包含解析目标代码,所述目标代码包含测试代码,对所述目标代码进行词元化处理,得到至少包含测试用例表示;通过检索算法对测试用例进行第一排序,得到初排测试集;以及
[0009]第二排序,所述第二排序包含筛选排序后的初排测试集用于作为模型的训练集;将经过训练集训练后的模型对所述初排测试集进行第二排序,得到测试用例优先级排序结果。
[0010]进一步的,所述目标代码还包含更改程序代码;
[0011]在第一排序中,更改程序代码经过词元化处理得到更改程序代码表示;
[0012]在第二排序中,在训练模型时,训练内容包含学习更改程序代码和测试用例的语
义表示;
[0013]其中,所述更改程序代码与测试用例的对应关系为:1个更改程序代码表示Q对应于m个测试用例表示,m为整数,且m大于等于1。
[0014]进一步的,得到至少包含测试用例表示,获取步骤包括以下步骤:
[0015]使用python语言的Javalang对测试用例代码进行语法和词法分析,并建立抽象语法树对代码进行结构化表示;
[0016]遍历抽象语法树提取标识符;
[0017]根据长标识符分割规则将长标识符分成单个词素;
[0018]过滤无意义的词汇和停止词,得到由词元组成的测试用例表示。
[0019]进一步的,当更改程序代码表示或测试用例表示出现重复词元时;
[0020]对词元的唯一性进行评估,包括可选择的进行以下操作:
[0021]1)保持词元唯一性;对更改程序代码表示或测试用例表示中的词元进行去重,以保持集合中每种标记的唯一性;
[0022]2)保持原词的出现频率;允许词元的重复出现,并记录更改程序代码表示和测试用例表示中词元出现的词频。
[0023]进一步的,在第一排序,通过检索算法对测试用例进行第一排序,得到初排测试集中,包含以下操作:
[0024]给定一个更改程序代码,检索算法采用BM25算法来计算更改程序代码与每个测试用例之间的相似度得分,然后根据BM25算法得分对测试用例进行排序;
[0025]在第一排序得到的初排测试集中选择一定数量的排序靠前测试用例和排序靠后测试用例,作为所述模型的训练集,以此过滤系数完成后续的操作。
[0026]进一步的,在第二排序中,包括以下步骤:
[0027]训练数据的组织;从训练集中构建更改程序代码和测试用例表示对,同时每个测试用例表示设置标签;通过给定的更改程序代码表示为Q,对应于Q的第i个测试用例表示t
i
和标签l
i
,构建三元组T
i
(Q,t
i
,l
i
);
[0028]所述模型采用Siamese

MiniLM模型,将构建的三元组输入到Siamese

MiniLM模型,通过模型练训后,得到更改程序代码和测试用例的语义嵌入向量u、v,并根据u和v之间的语义相似度对测试集进行排序。
[0029]进一步的,当测试用例在真实数据集的最后一个版本中检测到了程序错误,将其赋予第一标签,用于表明更改程序代码和测试用例表示在语义和功能上有一定相似性;
[0030]反之,将其他没有检测出程序错误的测试用例的赋予区别于第一标签的第二标签。
[0031]进一步的,通过比较更改程序代码u和测试用例v之间的余弦相似度与测试用例的真实标签来设计损失函数;
[0032]其中,模型每训练预设步数,将在验证集上进行1次评估,并根据损失函数对模型进行更新,保留性能较好的模型。
[0033]一种电子设备,包括:处理器;存储器,用于存储所述处理器可执行的指令的;其中,所述处理器被配置为执行指令,以实现所述的方法。
[0034]一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述
计算机程序被处理器执行时实现上述的方法。
[0035]与现有技术相比,本专利技术具有以下有益效果:
[0036]通过第一排序对测试用例依次进行初排和筛选,得到筛选后的测试集,并利用第二排序对筛选后的初排测试集进行精准排序,达到快速高效地对测试用例排序,并提高排序准确性的目的。
附图说明
[0037]此处所说明的附图用来提供对本专利技术实施例的进一步理解,构成本申请的一部分,并不构成对本专利技术实施例的限定。在附图中:
[0038]图1为本实施例中大规模持续集成的测试用例优先级排序方法的流程示意图;
[0039]图2为本实施例中基于机器翻译的孪生网络Siamese

MiniLM的测试精准排序的结构示意图;
[0040]图3为本实施例提供的示例中大规模持续集成的测试用例优先级排序方法与3个基线方法和实际持续集成测试的比较结果示意图。
具体实施方式
[0041]为使本专利技术的目的、技本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种大规模持续集成的测试用例优先级排序方法,其特征在于,包括:第一排序,所述第一排序操作包含解析目标代码,所述目标代码包含测试代码,对所述目标代码进行词元化处理,得到至少包含测试用例表示;通过检索算法对测试用例进行第一排序,得到初排测试集;以及第二排序,所述第二排序包含筛选排序后的初排测试集用于作为模型的训练集;将经过训练集训练后的模型对所述初排测试集进行第二排序,得到测试用例优先级排序结果。2.如权利要求1所述的方法,其特征在于,所述目标代码还包含更改程序代码;在第一排序中,更改程序代码经过词元化处理得到更改程序代码表示;在第二排序中,在训练模型时,训练内容包含学习更改程序代码和测试用例的语义表示;其中,所述更改程序代码与测试用例的对应关系为:1个更改程序代码表示Q对应于m个测试用例表示,m为整数,且m大于等于1。3.如权利要求2所述的方法,其特征在于,得到至少包含测试用例表示,获取步骤包括以下步骤:使用python语言的Javalang对测试用例代码进行语法和词法分析,并建立抽象语法树对代码进行结构化表示;遍历抽象语法树提取标识符;根据长标识符分割规则将长标识符分成单个词素;过滤无意义的词汇和停止词,得到由词元组成的测试用例表示。4.如权利要求2所述的方法,其特征在于,当更改程序代码表示或测试用例表示出现重复词元时;对词元的唯一性进行评估,包括可选择的进行以下操作:1)保持词元唯一性;对更改程序代码表示或测试用例表示中的词元进行去重,以保持集合中每种标记的唯一性;2)保持原词的出现频率;允许词元的重复出现,并记录更改程序代码表示和测试用例表示中词元出现的词频。5.如权利要求2所述的方法,其特征在于,在第一排序,通过检索算法对测试用例进行第一排序,得到初排测试集中,包含以下操作:给定一个更改程序代码,检索算法采用BM25算法来计算更改程序代码与每个测试用例之间的相似度得分,然后根据BM25算法得分对测试用例进行排序;在第一排序得到...

【专利技术属性】
技术研发人员:李英玲王子翱王俊杰
申请(专利权)人:西南民族大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1