Table of Contents
Fetching ...

WDD: Weighted Delta Debugging

Xintong Zhou, Zhenyang Xu, Mengxiao Zhang, Yongqiang Tian, Chengnian Sun

TL;DR

The paper tackles inefficiencies in delta debugging caused by ignoring varied fragment sizes within test inputs. It introduces Weighted Delta Debugging (WDD), which assigns weights to elements by size and uses weight-based partitioning to guide minimization, yielding two algorithms: $W_\text{ddmin}$ and $W_\text{ProbDD}$. Through extensive evaluation on HDD and Perses across 62 benchmarks (C and XML), the authors demonstrate that WDD improves both efficiency and effectiveness, producing smaller minimizations with fewer tests and faster runtimes. The work provides formalization, algorithmic development, empirical validation, and replication artifacts, offering a practical and generalizable enhancement to tree-based program reduction and debugging workflows.

Abstract

Delta Debugging is a widely used family of algorithms (e.g., ddmin and ProbDD) to automatically minimize bug-triggering test inputs, thus to facilitate debugging. It takes a list of elements with each element representing a fragment of the test input, systematically partitions the list at different granularities, identifies and deletes bug-irrelevant partitions. Prior delta debugging algorithms assume there are no differences among the elements in the list, and thus treat them uniformly during partitioning. However, in practice, this assumption usually does not hold, because the size (referred to as weight) of the fragment represented by each element can vary significantly. For example, a single element representing 50% of the test input is much more likely to be bug-relevant than elements representing only 1%. This assumption inevitably impairs the efficiency or even effectiveness of these delta debugging algorithms. This paper proposes Weighted Delta Debugging (WDD), a novel concept to help prior delta debugging algorithms overcome the limitation mentioned above. The key insight of WDD is to assign each element in the list a weight according to its size, and distinguish different elements based on their weights during partitioning. We designed two new minimization algorithms, Wddmin and WProbDD, by applying WDD to ddmin and ProbDD respectively. We extensively evaluated Wddmin and WProbDD in two representative applications, HDD and Perses, on 62 benchmarks across two languages. The results strongly demonstrate the value of WDD. We firmly believe that WDD opens up a new dimension to improve test input minimization techniques.

WDD: Weighted Delta Debugging

TL;DR

The paper tackles inefficiencies in delta debugging caused by ignoring varied fragment sizes within test inputs. It introduces Weighted Delta Debugging (WDD), which assigns weights to elements by size and uses weight-based partitioning to guide minimization, yielding two algorithms: and . Through extensive evaluation on HDD and Perses across 62 benchmarks (C and XML), the authors demonstrate that WDD improves both efficiency and effectiveness, producing smaller minimizations with fewer tests and faster runtimes. The work provides formalization, algorithmic development, empirical validation, and replication artifacts, offering a practical and generalizable enhancement to tree-based program reduction and debugging workflows.

Abstract

Delta Debugging is a widely used family of algorithms (e.g., ddmin and ProbDD) to automatically minimize bug-triggering test inputs, thus to facilitate debugging. It takes a list of elements with each element representing a fragment of the test input, systematically partitions the list at different granularities, identifies and deletes bug-irrelevant partitions. Prior delta debugging algorithms assume there are no differences among the elements in the list, and thus treat them uniformly during partitioning. However, in practice, this assumption usually does not hold, because the size (referred to as weight) of the fragment represented by each element can vary significantly. For example, a single element representing 50% of the test input is much more likely to be bug-relevant than elements representing only 1%. This assumption inevitably impairs the efficiency or even effectiveness of these delta debugging algorithms. This paper proposes Weighted Delta Debugging (WDD), a novel concept to help prior delta debugging algorithms overcome the limitation mentioned above. The key insight of WDD is to assign each element in the list a weight according to its size, and distinguish different elements based on their weights during partitioning. We designed two new minimization algorithms, Wddmin and WProbDD, by applying WDD to ddmin and ProbDD respectively. We extensively evaluated Wddmin and WProbDD in two representative applications, HDD and Perses, on 62 benchmarks across two languages. The results strongly demonstrate the value of WDD. We firmly believe that WDD opens up a new dimension to improve test input minimization techniques.

Paper Structure

This paper contains 32 sections, 4 figures, 1 table, 2 algorithms.

Figures (4)

  • Figure 1: A motivating example. In each subfigure, the weights of the nodes or the partitions are highlighted in orange.
  • Figure 2: The detailed minimization process of ddmin, $\hbox{W}_\text{ddmin}$, ProbDD, and $\hbox{W}_\text{ProbDD}$. The elements selected for the property test in each iteration are highlighted in blue, with the leftmost column indicating the index of each property test. In \ref{['subfig:probdd-iterations']} and \ref{['subfig:wprobdd-iterations']}, the probabilities updated after each test are highlighted in yellow. The last column of each figure shows the result of the property test $\psi$. In this case, all the four algorithms minimize the input list to the same result, which is $[1,3,6,7,8]$.
  • Figure 3: The simulation results of $\hbox{W}_\text{ddmin}$ and ddmin on the synthetic data.
  • Figure 4: The Spearman correlation coefficient $\rho$ between the weights of elements and their probabilities being deleted in ddmin. Each data point represents the mean of the $\rho$ values of all ddmin executions on a benchmark.

Theorems & Definitions (2)

  • Definition 2.1: Test Input Minimization
  • Definition 3.1: Weight