Precise semantic history slicing through dynamic delta refinement

Semantic history slicing solves the problem of extracting changes related to a particular high-level functionality from the software version histories. State-of-the-art techniques combine static program analysis and dynamic execution tracing to infer an over-approximated set of changes that can preserve the functional behaviors captured by a test suite. However, due to the conservative nature of such techniques, the sliced histories may contain irrelevant changes. In this paper, we propose a divide-and-conquer-style partitioning approach enhanced by dynamic delta refinement to produce minimal semantic history slices. We utilize deltas in dynamic invariants generated from successive test executions to learn significance of changes with respect to the target functionality. Empirical results indicate that these measurements accurately rank changes according to their relevance to the desired test behaviors and thus partition history slices in an efficient and effective manner.

[1]  Alessandro Orso,et al.  Leveraging field data for impact analysis and regression testing , 2003, ESEC/FSE-11.

[2]  Michael D. Ernst,et al.  Development History Granularity Transformations , 2015 .

[3]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[4]  Yuriy Brun,et al.  Early Detection of Collaboration Conflicts and Risks , 2013, IEEE Transactions on Software Engineering.

[5]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[6]  Yuriy Brun,et al.  Finding latent code errors via machine learning over program executions , 2004, Proceedings. 26th International Conference on Software Engineering.

[7]  Michael D. Ernst,et al.  Selecting , Refining , and Evaluating Predicates for Program Analysis , 2003 .

[8]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[9]  David Notkin,et al.  Checking inside the black box: regression testing by comparing value spectra , 2005, IEEE Transactions on Software Engineering.

[10]  Andrew P. Black,et al.  How we refactor, and how we know it , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[11]  Michael D. Ernst,et al.  Efficient incremental algorithms for dynamic detection of likely invariants , 2004, SIGSOFT '04/FSE-12.

[12]  Sven Apel,et al.  Type-Checking Software Product Lines - A Formal Approach , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[13]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[14]  Harald C. Gall,et al.  Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction , 2007, IEEE Transactions on Software Engineering.

[15]  Stephen McCamant,et al.  The Daikon system for dynamic detection of likely invariants , 2007, Sci. Comput. Program..

[16]  Marsha Chechik,et al.  A Dataset for Dynamic Discovery of Semantic Changes in Version Controlled Software Histories , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[17]  David Chenho Kung,et al.  Change impact identification in object oriented software maintenance , 1994, Proceedings 1994 International Conference on Software Maintenance.

[18]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[19]  James A. Jones,et al.  History slicing: assisting code-evolution tasks , 2012, SIGSOFT FSE.

[20]  Marsha Chechik,et al.  CSlicerCloud: A Web-Based Semantic History Slicing Framework , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[21]  Marsha Chechik,et al.  Semantic Slicing of Software Version Histories (T) , 2015, ASE.

[22]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[23]  Sarfraz Khurshid,et al.  Localizing failure-inducing program edits based on spectrum information , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[24]  Alessandro Orso,et al.  BERT: BEhavioral Regression Testing , 2008, WODA '08.

[25]  Jennifer Widom,et al.  Change detection in hierarchically structured information , 1996, SIGMOD '96.

[26]  Jianjun Zhao,et al.  Change impact analysis for AspectJ programs , 2008, 2008 IEEE International Conference on Software Maintenance.

[27]  Gregg Rothermel,et al.  Whole program path-based dynamic impact analysis , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[28]  Marsha Chechik,et al.  Managing forked product variants , 2012, SPLC '12.

[29]  Andreas Zeller,et al.  The impact of tangled code changes , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[30]  Franz Wotawa,et al.  Empirical Evaluation of Hunk Metrics as Bug Predictors , 2009, IWSM/Mensura.

[31]  Sudheendra Hangal,et al.  Tracking down software bugs using automatic anomaly detection , 2002, ICSE '02.

[32]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[33]  Leonardo Mariani,et al.  Verification-aided regression testing , 2014, ISSTA 2014.

[34]  Harald C. Gall,et al.  Classifying Change Types for Qualifying Change Couplings , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[35]  Robert S. Arnold,et al.  Software Change Impact Analysis , 1996 .

[36]  Yuriy Brun,et al.  Development History Granularity Transformations (N) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[37]  Milos Gligoric,et al.  Selective Bisection Debugging , 2017, FASE.

[38]  Alessandro Orso,et al.  Automated Behavioral Regression Testing , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[39]  Andreas Zeller,et al.  Simplifying and Isolating Failure-Inducing Input , 2002, IEEE Trans. Software Eng..

[40]  Frank Tip,et al.  Chianti: a tool for change impact analysis of java programs , 2004, OOPSLA.

[41]  Zhendong Su,et al.  HDD: hierarchical delta debugging , 2006, ICSE.

[42]  James A. Jones,et al.  History slicing , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[43]  J. Rubin,et al.  Semantic Slicing of Software Version Histories , 2018, IEEE Transactions on Software Engineering.

[44]  Shinpei Hayashi,et al.  Refactoring edit history of source code , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[45]  Michael D. Ernst,et al.  Selecting Refining and Evaluating Properties for Program Analysis , 2003 .