ACM Home Page
Please provide us with feedback. Feedback
Automated testing of refactoring engines
Full text PdfPdf (162 KB)
Source
Foundations of Software Engineering archive
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering table of contents
Dubrovnik, Croatia
SESSION: Refactoring automation table of contents
Pages: 185 - 194  
Year of Publication: 2007
ISBN:978-1-59593-811-4
Authors
Brett Daniel  University of Illinois at Urbana-Champaign, Urbana, IL
Danny Dig  University of Illinois at Urbana-Champaign, Urbana, IL
Kely Garcia  University of Illinois at Urbana-Champaign, Urbana, IL
Darko Marinov  University of Illinois at Urbana-Champaign, Urbana, IL
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 19,   Downloads (12 Months): 124,   Citation Count: 9
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1287624.1287651
What is a DOI?

ABSTRACT

Refactorings are behavior-preserving program transformations that improve the design of a program. Refactoring engines are tools that automate the application of refactorings: first the user chooses a refactoring to apply, then the engine checks if the transformation is safe, and if so, transforms the program. Refactoring engines are a key component of modern IDEs, and programmers rely on them to perform refactorings. A bug in the refactoring engine can have severe consequences as it can erroneously change large bodies of source code.

We present a technique for automated testing of refactoring engines. Test inputs for refactoring engines are programs. The core of our technique is a framework for iterative generation of structurally complex test inputs. We instantiate the framework to generate abstract syntax trees that represent Java programs. We also create several kinds of oracles to automatically check that the refactoring engine transformed the generated program correctly. We have applied our technique to testing Eclipse and NetBeans, two popular open-source IDEs for Java, and we have exposed 21 new bugs in Eclipse and 24 new bugs in NetBeans.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
 
3
 
4
5
 
6
A. Celentano, S. C. Reghizzi, P. D. Vigna, C. Ghezzi, G. Granata, and F. Savoretti. Compiler testing using a sentence generator. Software -- Practice and Experience, 10(11):897--918, 1980.
7
 
8
 
9
 
10
E. Gamma and K. Beck. JUnit, 1997. http://www.junit.org.
 
11
 
12
 
13
R. Lämmel and W. Schulte. Controllable combinatorial coverage in grammar-based testing. In TestCom, pages 19--38, 2006.
 
14
B. A. Malloy and J. F. Power. An interpretation of Purdom's algorithm for automatic generation of test cases. 1st Annual International Conf. on Computer and Information Science, 2001.
 
15
 
16
 
17
 
18
W. M. McKeeman. Differential testing for software. Digital Technical Journal, 10(1), 1998.
 
19
W. F. Opdyke and R. E. Johnson. Refactoring: an aid in designing application frameworks and evolving object-oriented systems. In Proc. Symposium on Object-Oriented Programming Emphasizing Practical Applications (SOOPPA), Sept 1990.
 
20
P. Purdom. A sentence generator for testing parsers. Behavior and Information Technology, 12(3):366--375, 1972.
21
22

CITED BY  9

Collaborative Colleagues:
Brett Daniel: colleagues
Danny Dig: colleagues
Kely Garcia: colleagues
Darko Marinov: colleagues