软件测试在软件安全保障和质量保证流程中扮演着关键角色,为了降低软件的维护成本,提高软件的安全性,需要尽早地发现和修复漏洞和问题。因此在软件版本迭代的过程中,测试代码需要在生产代码修改后及时更新。然而,测试代码往往难以和生...软件测试在软件安全保障和质量保证流程中扮演着关键角色,为了降低软件的维护成本,提高软件的安全性,需要尽早地发现和修复漏洞和问题。因此在软件版本迭代的过程中,测试代码需要在生产代码修改后及时更新。然而,测试代码往往难以和生产代码同步更新,导致测试效果不佳。协同演化方法被用于解决这一问题,但维持这一模式的成本较高。本文分析了现有研究,利用关联规则挖掘技术,研究了生产代码和测试代码之间的协同演化关系,提出了一种基于神经机器翻译(Neural Machine Translation,NMT)的测试用例协同演化方法(NMT-based Test Case Co-evolution,NTCC)。通过分析生产代码和测试代码的历史提交来提取测试用例的特征,在历史提交的生产代码和测试上进行训练,然后在一个较小的生产代码数据集上进行调整,最后通过集束搜索的方法产生测试代码。实验结果表明,NTCC方法可以有效地识别生产-测试代码协同演化,准确率达到了78.33%,在正类和负类上的F1-分数分别为80.10%和76.22%,优于基线方法。展开更多
文摘软件测试在软件安全保障和质量保证流程中扮演着关键角色,为了降低软件的维护成本,提高软件的安全性,需要尽早地发现和修复漏洞和问题。因此在软件版本迭代的过程中,测试代码需要在生产代码修改后及时更新。然而,测试代码往往难以和生产代码同步更新,导致测试效果不佳。协同演化方法被用于解决这一问题,但维持这一模式的成本较高。本文分析了现有研究,利用关联规则挖掘技术,研究了生产代码和测试代码之间的协同演化关系,提出了一种基于神经机器翻译(Neural Machine Translation,NMT)的测试用例协同演化方法(NMT-based Test Case Co-evolution,NTCC)。通过分析生产代码和测试代码的历史提交来提取测试用例的特征,在历史提交的生产代码和测试上进行训练,然后在一个较小的生产代码数据集上进行调整,最后通过集束搜索的方法产生测试代码。实验结果表明,NTCC方法可以有效地识别生产-测试代码协同演化,准确率达到了78.33%,在正类和负类上的F1-分数分别为80.10%和76.22%,优于基线方法。