变异覆盖
软件工程
2025-08-25 v1
摘要
变异测试是一种广泛使用的测试方法,通过检验成对执行之间的预期关系来自动发现缺陷,例如正确性缺陷。我们发现代码覆盖无法准确衡量代码被验证的程度,而变异测试在评估变异测试方法时计算成本高昂。在本工作中,我们提出变异覆盖(MC),一种考察变异测试中测试输入对所执行的不同代码的覆盖度量。我们的直觉是,通常当执行任一测试输入时对应代码被执行而另一测试输入未执行时即可观察到缺陷,因此覆盖更多由测试输入对所执行的差异代码可能更有可能暴露缺陷。尽管大多数变异测试方法均基于这一通用直觉,但我们的工作定义并系统评估了MC在五种广泛使用的变异测试方法上的表现,这些方法用于测试数据库引擎、编译器和约束求解器。MC所衡量的代码与变异测试方法发现的64个缺陷中50个的缺陷修复位置重叠,且MC与缺陷数量之间的正相关性比行覆盖更强。MC在区分测试方法有效性方面比行覆盖灵敏4倍,而MC的平均值比行覆盖小6倍,同时仍能捕获被测试的程序部分。MC所需时间比变异测试少359倍。基于一个自动化数据库系统测试方法的案例研究,我们证明当用于反馈引导时,MC显著优于代码覆盖,多发现41%的缺陷。因此,本工作可能对评估变异测试方法和改进测试用例生成具有广泛的应用。
引用
@article{arxiv.2508.16307,
title = {Metamorphic Coverage},
author = {Jinsheng Ba and Yuancheng Jiang and Manuel Rigger},
journal= {arXiv preprint arXiv:2508.16307},
year = {2025}
}