论文标题

一项关于具有实际错误的Java程序中错误传播失败错误传播的实证研究

An Empirical Study on Failed Error Propagation in Java Programs with Real Faults

论文作者

Jahangirova, Gunel, Clark, David, Harman, Mark, Tonella, Paolo

论文摘要

在测试过程中,开发人员可以在方法上将甲壳外部或内部放置。鉴于执行状态有故障,即与预期的执行状态有所不同,如果将故障放置在程序点上而无法访问不正确的程序状态或程序状态不再损坏的情况下,Oracle可能无法公开该故障。在这种情况下,Oracle可能会发生失败的错误传播。 我们进行了一项经验研究,以衡量缺陷4J的错误传播失败,这是具有实际错误的Java程序的参考基准,考虑到所有可用的所有6个项目(386个真正的错误和459个固定方法)。我们的结果表明,在单位级别执行测试时,误差传播失败的流行率可忽略不计。但是,当提供系统级输入时,误差传播失败的流行率大大增加。这表明方法后条件仅在可观察到的状态/数据上鉴定,并且在系统级别进行测试时应检查中间步骤。

During testing, developers can place oracles externally or internally with respect to a method. Given a faulty execution state, i.e., one that differs from the expected one, an oracle might be unable to expose the fault if it is placed at a program point with no access to the incorrect program state or where the program state is no longer corrupted. In such a case, the oracle is subject to failed error propagation. We conducted an empirical study to measure failed error propagation on Defects4J, the reference benchmark for Java programs with real faults, considering all 6 projects available (386 real bugs and 459 fixed methods). Our results indicate that the prevalence of failed error propagation is negligible when testing is performed at the unit level. However, when system-level inputs are provided, the prevalence of failed error propagation increases substantially. This indicates that it is enough for method postconditions to predicate only on the externally observable state/data and that intermediate steps should be checked when testing at system level.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源