Fault localization for data-centric programs

In this paper we present an automated technique for localizing faults in data-centric programs. Data-centric programs primarily interact with databases to get collections of content, process each entry in the collection(s), and output another collection or write it back to the database. One or more entries in the output may be faulty. In our approach, we gather the execution trace of a faulty program. We use a novel, precise slicing algorithm to break the trace into multiple slices, such that each slice maps to an entry in the output collection. We then compute the semantic difference between the slices that correspond to correct entries and those that correspond to incorrect ones. The "diff" helps to identify potentially faulty statements. We have implemented our approach for ABAP programs. ABAP is the language used to write custom code in SAP systems. It interacts heavily with databases using embedded SQL-like commands that work on collections of data. On a suite of 13 faulty ABAP programs, our technique was able to identify the precise fault location in 12 cases.

[1]  Saurabh Sinha,et al.  Automated support for repairing input-model faults , 2010, ASE.

[2]  Xiangyu Zhang,et al.  Cost effective dynamic program slicing , 2004, PLDI '04.

[3]  Amit M. Paradkar,et al.  Time will tell , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[4]  A. Zeller Isolating cause-effect chains from computer programs , 2002, SIGSOFT '02/FSE-10.

[5]  Gregg Rothermel,et al.  On the Use of Mutation Faults in Empirical Assessments of Test Case Prioritization Techniques , 2006, IEEE Transactions on Software Engineering.

[6]  Samik Basu,et al.  Localizing Program Errors for Cimple Debugging , 2004, FORTE.

[7]  Xiangyu Zhang,et al.  Precise dynamic slicing algorithms , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[8]  Mary Jean Harrold,et al.  Empirical evaluation of the tarantula automatic fault-localization technique , 2005, ASE.

[9]  Shmuel Sagiv,et al.  Customization change impact analysis for erp professionals via program slicing , 2008, ISSTA '08.

[10]  Nahid Shahmehri,et al.  Interprocedural dynamic slicing applied to interprocedural data flow testing , 1993, 1993 Conference on Software Maintenance.

[11]  Joseph Robert Horgan,et al.  Fault localization using execution slices and dataflow tests , 1995, Proceedings of Sixth International Symposium on Software Reliability Engineering. ISSRE'95.

[12]  Alex Groce,et al.  What Went Wrong: Explaining Counterexamples , 2003, SPIN.

[13]  Mangala Gowri Nanda,et al.  Fault localization in ABAP Programs , 2011 .

[14]  Chao Liu,et al.  Statistical Debugging: A Hypothesis Testing-Based Approach , 2006, IEEE Transactions on Software Engineering.

[15]  Steven P. Reiss,et al.  Fault localization with nearest neighbor queries , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[16]  G. A. Venkatesh,et al.  The semantic approach to program slicing , 1991, PLDI '91.

[17]  Noam Rinetzky,et al.  Field-sensitive program dependence analysis , 2010, FSE '10.

[18]  W. Eric Wong,et al.  Using Mutation to Automatically Suggest Fixes for Faulty Programs , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[19]  Lionel C. Briand,et al.  Using Mutation Analysis for Assessing and Comparing Testing Coverage Criteria , 2006, IEEE Transactions on Software Engineering.

[20]  Emina Torlak,et al.  Angelic debugging , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[21]  Anthony Cleve,et al.  Dynamic Analysis of SQL Statements for Data-Intensive Applications Reverse Engineering , 2008, 2008 15th Working Conference on Reverse Engineering.

[22]  Doron A. Peled,et al.  A Combined Testing and Verification Approach for Software Reliability , 2001, FME.

[23]  Peter Fritzson,et al.  Interprocedural Dynamic Slicing , 1992, PLILP.

[24]  T. H. Tse,et al.  Fault Localization with Non-parametric Program Behavior Model , 2008, 2008 The Eighth International Conference on Quality Software.

[25]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[26]  Gregg Rothermel,et al.  An empirical investigation of the relationship between spectra differences and regression faults , 2000 .

[27]  Anthony Cleve,et al.  Program analysis and transformation for data-intensive system evolution , 2010, 2010 IEEE International Conference on Software Maintenance.

[28]  Mayur Naik,et al.  From symptom to cause: localizing errors in counterexample traces , 2003, POPL '03.

[29]  Kavita Ravi,et al.  Fate and free will in error traces , 2004, International Journal on Software Tools for Technology Transfer.

[30]  James R. Larus,et al.  The use of program profiling for software maintenance with applications to the year 2000 problem , 1997, ESEC '97/FSE-5.