状态域覆盖率:一种用于衡量 oracle 质量的指标
软件工程
2025-10-06 v1
摘要
软件缺陷检测的效果不仅取决于测试输入的特征以及它们对软件的测试深度,还取决于用于确定软件是否按预期行为的 oracle 的质量。因此,评估 oracle 的质量对于提高整个测试过程的有效性至关重要。现有的指标要么未能提供全面指导 oracle 改进的依据,要么仅针对特定类型的 oracle 进行设计,从而限制了其通用性。在本文中,我们引入了状态域覆盖率(state field coverage)这一新型指标,用于衡量 oracle 的质量。该指标衡量的是在测试执行期间,oracle 可能访问对象状态(由其类字段静态定义)的比例。我们的方法直觉是:状态域覆盖率更高的 oracle 更可能检测软件 under analysis 中的故障,因为它们检查了更大比例的对象状态以确定测试通过与否。我们实现了一个静态计算状态域覆盖率的机制。由于是静态计算,此指标高效且可直接指导通过识别未被检验的状态字段来改进测试 oracle。我们通过包含273个表示不变式和249,027个测试断言的实验评估了状态域覆盖率。结果表明,状态域覆盖率是衡量 oracle 质量的理想指标,因为其与 oracle 的故障检测能力(以突变得分衡量)呈强相关性。
引用
@article{arxiv.2510.03071,
title = {State Field Coverage: A Metric for Oracle Quality},
author = {Facundo Molina and Nazareno Aguirre and Alessandra Gorla},
journal= {arXiv preprint arXiv:2510.03071},
year = {2025}
}