Thomas Schmitz, Birgit Hofer, Dietmar Jannach, & Franz Wotawa
Large spreadsheets are often diffcult to understand and to test. Detecting the true cause of an observed wrong calculation outcome in a chain of calculations is even more challenging.
In this work, we propose a novel approach that automatically decomposes large spreadsheets into smaller units called fragments. This decomposition serves two purposes.
First, it allows us to apply fault localization procedures that can exploit such structural abstractions to find possible explanations for the wrong outcomes (called diagnoses). This results in a faster identification of the diagnoses.
Second, it makes the testing process better manageable for the users, as they can provide simpler test cases to reduce the number of possible explanations of the fault.
An empirical evaluation of our method shows that the required running times for computing the possible explanations can be measurably reduced when applying the proposed fragmentation approach and that fragment-based test cases help to significantly reduce the number of possible explanations.
This example spreadsheet computes the velocity and the distance covered by an object within three phases (acceleration, constant velocity, and deceleration).
The three formulas in row 5 are faulty. The spreadsheet creator has forgotten to divide the computed distance by two, which results in a triple fault comprising the cells B5, C5, and D5.
In fact, the developer only made one mistake, but by copying the formulas the number of actually faulty formulas was tripled.
2016, Software Technologies: Applications and Foundations, July, pages 372-387