![16035aec89666ce58ca2c41c9c0e434e.png](https://i-blog.csdnimg.cn/blog_migrate/13225afe567f535772259067b88867cb.jpeg)
摘要
持续集成(CI)中的测试,包括每个周期测试用例选择和执行的优先级。如果对提交的代码更改的影响存在不确定性或者代码和测试之间的可跟踪性链接不可用,则想要选择最可用的测试用例来检测错误是很困难的。本文介绍了Retecs,这是一种自动学习有关持续集成中测试用例选择和优先级的新方法,旨在最大限度地缩短代码提交和开发人员对失败测试用例的反馈之间的时间。Retecs使用强化学习的方法,根据在不断变化的环境中的测试用例的持续时间,上次执行时间和失败历史记录来选择测试用例并确定其优先级。而且在此环境中创建新的测试用例并删除过时的测试用例,此方法学会在奖励函数的指导下通过观察先前的持续集成周期来优先考虑容易出错的测试用例。通过将Retecs方法应用于三个工业案例研究中,我们率先证明了强化学习能够有成效的在持续集成和回归测试中实现自适应测试用例选择和优先级排序。
关键词
回归测试,测试用例优先级排序,测试用例选择,强化学习,机器学习,持续集成
引言
持续集成是一种经济高效的软件开发的方法,常常使用于开发人员需要整合他们的工作的行业中。 它涉及多个任务,包括版本控制,软件配置管理,新软件发布候选的自动构建和回归测试。 自动回归测试是其中的一个关键步骤,旨在通过选择和执行测试用例中可用的和相关的用例来尽早的检测缺陷。持续集成被视为提高软件质量同时将验证成本保持在较低水平的重要方法。
我们认为持续集成测试的这两个方面——测试用例选择和基于历史的优先级——很难通过仅使用非自适应方法来解决。非自适应方法可能无法发现某些测试用例相对于其他测试用例的重要性的变化,因为它们应用了系统优先级排序算法。为了解决这些问题,我们提出了一种基于强化学习和神经网络的持续集成中的一种新的轻量级测试用例选择和优先级方法。 强化学习经过精心设计,可以设计出一种能够从其执行环境经验中学习的自适应方法。 通过自适应,意味着我们的方法可以通过观察其动作所产生的效果来逐步提高其效率。 通过使用对所选测试用例及其执行顺序起作用的神经网络,该方法倾向于选择并优先考虑已成功的用于检测先前持续集成周期中的错误的测试用例,并对其进行排序,最有希望的最先执行。
本文的贡献有三个:
1. 本文表明基于历史的测试用例的优先级和选择,可以作为强化学习问题来处理