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, however, are largely deterministic, and thus do not provide a principled approach for assessing probabilistic risk of potential root causes, or for integrating domain and/or structural knowledge from test engineers. To address this, we propose a novel Bayesian fault localization framework called BayesFLo, which leverages a flexible Bayesian model on potential root cause combinations. A key feature of BayesFLo is its integration of the principles of combination hierarchy and heredity, which capture the structured nature of failure-inducing combinations. A critical challenge, however, is the sheer number of potential root cause scenarios to consider, which renders the computation of posterior root cause probabilities infeasible even for small software systems. We thus develop new algorithms for efficient computation of such probabilities, leveraging recent tools from integer programming and graph representations. We then demonstrate the effectiveness of BayesFLo over state-of-the-art fault localization methods, in a suite of numerical experiments and in two motivating case studies on the JMP XGBoost interface.
翻译:软件测试对于复杂软件系统的可靠开发至关重要。故障定位作为软件测试的关键步骤,利用测试数据精准定位引发失效的组合,以便进行进一步诊断。然而,现有故障定位方法多为确定性方法,无法提供用于评估潜在根因概率风险或整合测试工程师领域/结构知识的规范化途径。为此,我们提出一种名为BayesFLo的新型贝叶斯故障定位框架,该框架基于潜在根因组合构建灵活的贝叶斯模型。BayesFLo的核心特征在于融合组合层级性与遗传性原则,从而捕获失效引发组合的结构化特性。关键挑战在于潜在根因场景数量庞大,即便对于小型软件系统,后验根因概率的计算也因组合爆炸而不可行。为此,我们借助整数规划与图表示等前沿工具,开发了高效计算这些概率的新算法。最后,通过一系列数值实验及两个基于JMP XGBoost接口的案例研究,我们验证了BayesFLo相较于现有最优故障定位方法的有效性。