Small-Amp:动态类型语言中的测试扩增
软件工程
2022-07-27 v3
摘要
一些测试扩增工具通过附加测试用例来扩展手动创建的测试套件,以提高代码覆盖率。该技术在某种意义上有效:它建议强大且可理解的测试用例,并被软件工程师普遍采用。遗憾的是,当前测试扩增的最优方案严重依赖程序分析技术,而这类技术从静态类型语言中显式的类型声明获益良多。在动态类型语言中,此类类型声明不可用,因此测试扩增尚未进入 Smalltalk、Python、Ruby 和 Javascript 等编程语言。我们提议利用剖析信息——通过执行相关测试套件易于获取——来推断必要的类型信息,从而创建带有相应断言的特殊测试输入。我们在来自 Pharo 生态系统中 13 个成熟项目的 52 个选定测试类(约含 400 个测试方法)上评估了该方法。我们展示在 52 个测试类中的至少 28 个(53%)中,杀死新变异体和变异覆盖率有所提升。此外,这些生成的测试可被人类理解:提交的 11 个拉取请求中有 8 个被合并入主代码库(72%)。这些结果可与最优方案相媲美,因此我们得出结论:测试扩增在动态类型语言中是可行的。
引用
@article{arxiv.2108.05663,
title = {Small-Amp: Test Amplification in a Dynamically Typed Language},
author = {Mehrdad Abdi and Henrique Rocha and Serge Demeyer and Alexandre Bergel},
journal= {arXiv preprint arXiv:2108.05663},
year = {2022}
}