一句话:提出交互式反馈驱动的故障定位技术 Enlighten,用开发者对数据正确性的反馈逐步缩小可疑范围。
统计故障定位(SFL)虽流行,但依赖开发者调试行为的强假设,常不现实。为此,论文提出 Enlighten:面向失败测试,它首先结合 SFL 与动态依赖分析识别可疑方法调用及对应数据值;然后以输入和输出形式向开发者询问最可疑调用;接着将对单个数据值正确性的反馈编码为额外程序规约;并重复上述步骤直至定位故障。作者在 3 个开源程序的 1807 个真实与植入故障上,用自动 oracle 模拟用户评估,超过 96% 的故障需少于 10 次交互即可定位,敏感性分析表明结果对错误反馈具有鲁棒性。论文还开展了一项 4 个故障、24 名参与者的真实用户研究,使用 Enlighten 的参与者在定位故障数量和耗时上均显著优于未使用者。
Numerous automated techniques have been proposed to reduce the cost of software debugging, a notoriously time-consuming and human-intensive activity. Among these techniques, Statistical Fault Localization (SFL) is particularly popular. One issue with SFL is that it is based on strong, often unrealistic assumptions on how developers behave when debugging. To address this problem, we propose Enlighten, an interactive, feedback-driven fault localization technique. Given a failing test, Enlighten (1) leverages SFL and dynamic dependence analysis to identify suspicious method invocations and corresponding data values, (2) presents the developer with a query about the most suspicious invocation expressed in terms of inputs and outputs, (3) encodes the developer feedback on the correctness of individual data values as extra program specifications, and (4) repeats these steps until the fault is found. We evaluated Enlighten in two ways. First, we applied Enlighten to 1,807 real and seeded faults in 3 open source programs using an automated oracle as a simulated user; for over 96% of these faults, Enlighten required less than 10 interactions with the simulated user to localize the fault, and a sensitivity analysis showed that the results were robust to erroneous responses. Second, we performed an actual user study on 4 faults with 24 participants and found that participants who used Enlighten performed significantly better than those not using our tool, in terms of both number of faults localized and time needed to localize the faults.