Software fault localization is one of the most expensive, tedious, and time-consuming activities in program debugging. This activity becomes even much more challenging in Software Product Line (SPL) systems due to variability of failures. These unexpected behaviors are induced by variability faults which can only be exposed under some combinations of system features. The interaction among these features causes the failures of the system. Although localizing bugs in single-system engineering has been studied in-depth, variability fault localization in SPL systems still remains mostly unexplored. In this article, we present VarCop, a novel and effective variability fault localization approach. For an SPL system failed by variability bugs, VarCop isolates suspicious code statements by analyzing the overall test results of the sampled products and their source code. The isolated suspicious statements are the statements related to the interaction among the features which are necessary for the visibility of the bugs in the system. The suspiciousness of each isolated statement is assessed based on both the overall test results of the products containing the statement as well as the detailed results of the test cases executed by the statement in these products. On a large dataset of buggy SPL systems, empirical evaluation shows that VarCop significantly improves two state-of-the-art fault localization techniques by 33% and 50% in ranking the incorrect statements in the systems containing a single bug each. In about two-thirds of the cases, VarCop ranks the buggy statements at the top-3 positions in the resulting lists. For multiple-bug cases, VarCop outperforms the state-of-the-art approaches 2 times and 10 times in the proportion of bugs localized at the top-1 positions. In 22% and 65% of the buggy versions, VarCop correctly ranks at least one bug in a system at the top-1 and top-5 positions.
翻译:软件本地化是程序调试中最昂贵、最乏味和最耗时的活动之一。 由于失败的变异性, 此活动在软件产品行( SPL) 系统中更具挑战性。 这些意想不到的行为是由变异性故障引起的, 只能在某些系统特性组合下暴露。 这些特性之间的相互作用导致系统失灵。 虽然对单一系统工程中的错误本地化错误进行了深入研究, SPL 系统中的变异性本地化大多仍未被解析。 在本篇文章中, 我们介绍了 VarCop, 一种新颖且有效的本地变异性错误本地化方法。 对于由于变异性错误而失败的 SPL 系统, VarC 系统将可疑的代码声明分离出来, 通过分析抽样产品的总体测试结果及其源代码。 孤立的可疑报表是这些特性之间的相互作用,这些特性对于系统中的错误可见度是必要的。 每个孤立的报表的可疑性根据包含该报表的产品的总体测试结果以及这些产品中进行的详细测试结果。 在 VarC 2 VarC 的 Varc 列表中, 显示每个 Varicreal 系统 的高级 Val- brode 10 和 的高级系统 10 。