论文

FlyCatcher:通过测试对运行时检查器进行神经推理

FlyCatcher: Neural Inference of Runtime Checkers from Tests

摘要

复杂的软件系统经常遭受无声故障,即违反预期语义但不会导致显式错误。检测此类错误的一种有前途的方法是使用特定于系统的运行时检查器来监视系统的执行并检查是否违反了预期语义。然而,为给定的软件系统编写这样的检查器具有挑战性且耗时,因此在实践中很少这样做。这项工作提出了 FlyCatcher,这是一种从现有测试(即从大多数软件系统可用的资源)中派生运行时检查器的自动化方法。这种方法的关键挑战是将测试用例中编码的行为属性推广到系统的任意执行。 FlyCatcher 通过结合基于 LLM 的综合、静态分析和动态验证来解决这一挑战,动态验证推断出一个检查器,该检查器监视特定方法调用并断言调用时应保留的属性。推断的检查器是有状态的,即它们通过维护一个影子状态来推理系统的行为,该影子状态根据检查器的需要抽象出实际的系统状态。我们的评估将 FlyCatcher 用于四个广泛使用的复杂软件系统的 400 项测试。该方法推断出 334 个检查器,其中 300 个通过交叉验证被发现是正确的。与最先进的方法相比,我们的方法推断出的检查器正确率提高了 2.6 倍,这使其能够检测到的错误增加了 5.2 倍。通过从测试中自动推断运行时检查器,这项工作使得运行时检查得到更广泛的采用,作为检测复杂软件系统中静默故障的实用方法。