针对具有网络依赖测试的基于动态假设推断的易错测试净化方法
软件工程
2022-08-03 v1
摘要
易错测试(flaky tests)会引发严重问题,因为它们会中断依赖所有测试均通过的自动化构建流程,并削弱测试的可信度。已识别出众多导致测试易错的原因,且存在用于检测此类测试的程序分析技术。通常,这些方法向开发者提供关于如何重构测试以使测试结果具有确定性的建议。我们认为,易错的一个根源在于缺乏能够精确描述测试在何种条件下才有意义的假设。我们设计了一种净化技术,可通过动态推断此类假设来快速隔离易错测试,从而在忽略易错测试的情况下使自动化构建得以继续。我们以 Java 和 Groovy 程序为例,通过将该方法实现为三个流行测试框架(JUnit4、JUnit5 和 Spock)的扩展来展示其实用性,这些扩展可透明地注入推断出的假设。若使用 JUnit5,这些扩展无需重构项目源代码即可部署。我们利用六个流行的真实世界程序演示并评估了该方法的有效性,解决了这些程序中由测试对网络可用性的依赖所引起的已知测试易错问题。我们发现,我们的方法能够以高精度和召回率有效净化由网络连接问题引发的失败。
引用
@article{arxiv.2208.01106,
title = {Flaky Test Sanitisation via On-the-Fly Assumption Inference for Tests with Network Dependencies},
author = {Jens Dietrich and Shawn Rasheed and Amjed Tahir},
journal= {arXiv preprint arXiv:2208.01106},
year = {2022}
}
备注
to appear at IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM)