Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Simplifying and Isolating Failure-Inducing Input
IEEE Transactions on Software Engineering
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
TestEra: A Novel Framework for Automated Testing of Java Programs
Proceedings of the 16th IEEE international conference on Automated software engineering
Data Mining: Concepts and Techniques
Data Mining: Concepts and Techniques
How do APIs evolve? A story of refactoring: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
HDD: hierarchical delta debugging
Proceedings of the 28th international conference on Software engineering
Common refactorings, a dependency graph and some code smells: an empirical study of Java OSS
Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering
Automated testing of refactoring engines
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Tool-supported refactoring of aspect-oriented programs
Proceedings of the 7th international conference on Aspect-oriented software development
An approach to detecting duplicate bug reports using natural language and execution information
Proceedings of the 30th international conference on Software engineering
Grammar-based whitebox fuzzing
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Reducing the Costs of Bounded-Exhaustive Testing
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
How we refactor, and how we know it
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Refactoring sequential Java code for concurrency via concurrent libraries
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
CScout: A refactoring browser for C
Science of Computer Programming
Test generation through programming in UDITA
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
JDF: detecting duplicate bug reports in Jazz
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Making program refactoring safer
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Refactoring Java programs for flexible locking
Proceedings of the 33rd International Conference on Software Engineering
A refactoring constraint language and its application to eiffel
Proceedings of the 25th European conference on Object-oriented programming
Analyzing Refactorings on Software Repositories
SBES '11 Proceedings of the 2011 25th Brazilian Symposium on Software Engineering
CARIAL: Cost-Aware Software Reliability Improvement with Active Learning
ICST '12 Proceedings of the 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation
Test-case reduction for C compiler bugs
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Use, disuse, and misuse of automated refactorings
Proceedings of the 34th International Conference on Software Engineering
Experimental assessment of software metrics using automated refactoring
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
OpenRefactory/C: an infrastructure for developing program transformations for C programs
Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
A Comprehensive Approach to Naming and Accessibility in Refactoring Java Programs
IEEE Transactions on Software Engineering
Program transformations to fix C integers
Proceedings of the 2013 International Conference on Software Engineering
OpenRefactory/C: an infrastructure for building correct and complex C transformations
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Hi-index | 0.00 |
Testing refactoring engines is a challenging problem that has gained recent attention in research. Several techniques were proposed to automate generation of programs used as test inputs and to help developers in inspecting test failures. However, these techniques can require substantial effort for writing test generators or finding unique bugs, and do not provide an estimate of how reliable refactoring engines are for refactoring tasks on real software projects. This paper evaluates an end-to-end approach for testing refactoring engines and estimating their reliability by (1) systematically applying refactorings at a large number of places in well-known, open-source projects and collecting failures during refactoring or while trying to compile the refactored projects, (2) clustering failures into a small, manageable number of failure groups, and (3) inspecting failures to identify non-duplicate bugs. By using this approach on the Eclipse refactoring engines for Java and C, we already found and reported 77 new bugs for Java and 43 for C. Despite the seemingly large numbers of bugs, we found these refactoring engines to be relatively reliable, with only 1.4% of refactoring tasks failing for Java and 7.5% for C.