【技术实现步骤摘要】
一种促进测试代码与产品代码协同演化的方法及终端设备
本专利技术涉及软件测试
,尤其涉及一种促进测试代码与产品代码协同演化的方法及终端设备。
技术介绍
软件测试技术被广泛应用于软件质量保证中,在工程实践中,软件开发人员经常编写测试代码,用以验证产品代码是否符合预期的软件需求。由于软件产品经常需要演化、更新,所以当产品代码经历诸如添加功能、删除功能等重大更改时,测试代码应该与相应的产品代码协同演化。这种协同演化使得测试代码持续具备软件质量保证的能力。若测试代码没有及时更新,可能导致产品代码中的缺陷难以被发现,也可能导致错误的告警,造成测试资源的浪费。然而,对于开发人员来说,保持测试代码的实时更新并不容易。有研究表明,在实际软件项目中,测试代码通常无法与产品代码协同演化,主要原因有以下几点:1、缺乏维护测试用例或保障软件质量的资源;2、缺少工具定位特定功能与其对应的测试用例;3、运行所有测试用例较为耗时。因此,现有技术还有待于改进和发展。
技术实现思路
鉴于上述现有技术的不 ...
【技术保护点】
1.一种促进测试代码与产品代码协同演化的方法,其特征在于,包括步骤:/n从项目代码仓库中获取历史实例代码数据,并构建第一训练数据集;/n基于所述第一训练数据集对分类器进行训练,得到训练后分类器;/n基于所述训练后分类器自动识别过时的单元测试用例;/n对所述代码数据进行预处理,得到序列数据,根据所述序列数据构建第二训练数据集;/n基于所述第二训练数据集对seq2seq模型进行训练,得到训练后seq2seq模型;/n将导致单元测试用例过时的产品代码更改和原始测试代码输入所述训练后seq2seq模型中,输出完整的补丁,通过所述补丁对所述过时的单元测试用例进行修复,促进单元测试代码 ...
【技术特征摘要】
1.一种促进测试代码与产品代码协同演化的方法,其特征在于,包括步骤:
从项目代码仓库中获取历史实例代码数据,并构建第一训练数据集;
基于所述第一训练数据集对分类器进行训练,得到训练后分类器;
基于所述训练后分类器自动识别过时的单元测试用例;
对所述代码数据进行预处理,得到序列数据,根据所述序列数据构建第二训练数据集;
基于所述第二训练数据集对seq2seq模型进行训练,得到训练后seq2seq模型;
将导致单元测试用例过时的产品代码更改和原始测试代码输入所述训练后seq2seq模型中,输出完整的补丁,通过所述补丁对所述过时的单元测试用例进行修复,促进单元测试代码与产品代码协同演化。
2.根据权利要求1所述促进测试代码与产品代码协同演化的方法,其特征在于,所述从项目代码仓库中获取历史实例代码数据,并构建第一训练数据集的步骤包括:
将从项目代码仓库中获取的历史实例代码数据划分为正样本和负样本,其中,正样本中测试代码与产品代码协同演化,负样本中测试代码不与产品代码协同演化;
根据测试文件级别对所述正样本进行标记,构建第一训练数据集。
3.根据权利要求2所述促进测试代码与产品代码协同演化的方法,其特征在于,根据测试文件级别对所述正样本进行标记的步骤包括:
若测试文件级别为二分类预测时,则将正样本标记为应该更改和不更改两类;
若测试文件级别为多分类预测是,则将正样本标记为应该创建、应该编辑和应该删除三类。
4.根据权利要求3所述促进测试代码与产品代码协同演化的方法,其特征在于,基于所述第一训练数据集对分类器进行训练,得到训练后分类器的步骤包括:
将所述第一训练数据集转换为结构化的向量表示,对于每个样本,从产品代码的补丁和原始产品代码中提取特征;
将提取的特征输入到分类器中进行训练,得到训练后分类器。
5.根据权利要求4所述促进测试代码与产品代码协同演化的方法,其特征在于,所述分类器为逻辑回归分类器、朴素贝叶斯分类器、随机森林分类器或梯度提升分类器中的一种。
6.根据权利要求1所述促进测试代码与产品代码协同演化的方法,其特征在于,对所述代码数据进行预处理,得到序列数据,根据所述序列数据构建第二训练数据集的步骤包括:
将产品代码更改划分为一个原始产品代码段和一个更改后产品代码段,对所述原始产品...
【专利技术属性】
技术研发人员:王斯南,刘蕾,刘烨庞,
申请(专利权)人:南方科技大学,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。