|
| This Article | ||
| ||
| Share | ||
| Bibliographic References | ||
| Add to: | ||
| | ||
| Search | ||
| ||
| ASCII Text | x | ||
| Gustavo Soares, Rohit Gheyi, Tiago Massoni, "Automated Behavioral Testing of Refactoring Engines," IEEE Transactions on Software Engineering, vol. 39, no. 2, pp. 147-162, Feb., 2013. | |||
| BibTex | x | ||
| @article{ 10.1109/TSE.2012.19, author = {Gustavo Soares and Rohit Gheyi and Tiago Massoni}, title = {Automated Behavioral Testing of Refactoring Engines}, journal ={IEEE Transactions on Software Engineering}, volume = {39}, number = {2}, issn = {0098-5589}, year = {2013}, pages = {147-162}, doi = {http://doi.ieeecomputersociety.org/10.1109/TSE.2012.19}, publisher = {IEEE Computer Society}, address = {Los Alamitos, CA, USA}, } | |||
| RefWorks Procite/RefMan/Endnote | x | ||
| TY - JOUR JO - IEEE Transactions on Software Engineering TI - Automated Behavioral Testing of Refactoring Engines IS - 2 SN - 0098-5589 SP147 EP162 EPD - 147-162 A1 - Gustavo Soares, A1 - Rohit Gheyi, A1 - Tiago Massoni, PY - 2013 KW - Java KW - Metals KW - Engines KW - Computer bugs KW - Testing KW - Automatic programming KW - Unified modeling language KW - program generation KW - Refactoring KW - automated testing VL - 39 JA - IEEE Transactions on Software Engineering ER - | |||
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/TSE.2012.19
Refactoring is a transformation that preserves the external behavior of a program and improves its internal quality. Usually, compilation errors and behavioral changes are avoided by preconditions determined for each refactoring transformation. However, to formally define these preconditions and transfer them to program checks is a rather complex task. In practice, refactoring engine developers commonly implement refactorings in an ad hoc manner since no guidelines are available for evaluating the correctness of refactoring implementations. As a result, even mainstream refactoring engines contain critical bugs. We present a technique to test Java refactoring engines. It automates test input generation by using a Java program generator that exhaustively generates programs for a given scope of Java declarations. The refactoring under test is applied to each generated program. The technique uses SafeRefactor, a tool for detecting behavioral changes, as an oracle to evaluate the correctness of these transformations. Finally, the technique classifies the failing transformations by the kind of behavioral change or compilation error introduced by them. We have evaluated this technique by testing 29 refactorings in Eclipse JDT, NetBeans, and the JastAdd Refactoring Tools. We analyzed 153,444 transformations, and identified 57 bugs related to compilation errors, and 63 bugs related to behavioral changes.
Index Terms:
Java,Metals,Engines,Computer bugs,Testing,Automatic programming,Unified modeling language,program generation,Refactoring,automated testing
Citation:
Gustavo Soares, Rohit Gheyi, Tiago Massoni, "Automated Behavioral Testing of Refactoring Engines," IEEE Transactions on Software Engineering, vol. 39, no. 2, pp. 147-162, Feb. 2013, doi:10.1109/TSE.2012.19
Usage of this product signifies your acceptance of the Terms of Use.

