Software testing is essential for the reliable development of complex software systems. A key step in software testing is fault localization, which uses test data to pinpoint failure-inducing combinations for further diagnosis. Existing fault localization methods have two key limitations: they (i) largely do not incorporate domain and/or structural knowledge from test engineers, and (ii) do not provide a probabilistic assessment of risk for potential root causes. Such methods can thus fail to confidently whittle down the combinatorial number of potential root causes in complex systems, resulting in prohibitively high debugging costs. To address this, we propose a novel Bayesian fault localization framework called BayesFLo, which leverages a flexible Bayesian model for identifying potential root causes with probabilistic uncertainties. Using a carefully-specified prior on root cause probabilities, BayesFLo permits the integration of domain and structural knowledge via the principles of combination hierarchy and heredity, which capture the expected structure of failure-inducing combinations. We then develop new algorithms for efficient computation of posterior root cause probabilities, leveraging recent tools from integer programming and graph representations. Finally, we demonstrate the effectiveness of BayesFLo over existing methods in two fault localization case studies, the first on the Traffic Alert and Collision Avoidance System for aircraft collision avoidance, and the second on the Vulnerable Road User protection tests for safe autonomous driving.
翻译:软件测试对于复杂软件系统的可靠开发至关重要。软件测试的关键步骤之一是故障定位,它利用测试数据精确定位导致故障的组合因素,以供进一步诊断。现有的故障定位方法存在两个主要局限:(i)它们大多未能纳入测试工程师的领域知识和/或结构知识;(ii)它们未能为潜在根本原因提供概率风险评估。因此,这类方法在复杂系统中难以可靠地缩小潜在根本原因的指数级组合数量,导致调试成本过高。为解决这一问题,我们提出了一种名为BayesFLo的新型贝叶斯故障定位框架,该框架利用灵活的贝叶斯模型识别具有概率不确定性的潜在根本原因。通过精心指定的根本原因概率先验,BayesFLo基于组合层次和遗传性原则整合领域知识与结构知识,以捕捉故障诱导组合的预期结构。随后,我们利用整数规划与图表示的最新工具,开发了用于高效计算后验根本原因概率的新算法。最后,我们在两项故障定位案例研究中展示了BayesFLo相较于现有方法的有效性:第一项针对飞机防撞的交通警报与避撞系统,第二项针对安全自动驾驶中的弱势道路使用者保护测试。