Defesa de Tese de Doutorado de Melina Mongiovi

postado em 6 de out de 2016 09:42 por Coordenação da Pós-graduação em Computação da UFCG

Candidato(a): Melina Mongiovi

Título do Trabalho: Scaling Testing of Refactoring Engines


Rohit Gheyi


Data: 29/11/2016

Horário: 08:00:00

Local: auditório Hattori



Defining and implementing refactoring is a nontrivial task since it is difficult to define all preconditions to guarantee that the transformation preserves the program behavior. Therefore, refactoring engines may have overly weak conditions, overly strong conditions, and transformation issues related to the refactoring definitions. In practice, developers write test cases to check their refactoring implementations. We find that 86% of the test suites of Eclipse and JRRT are concerned to those kinds of bugs. However, the engines still have them. Researchers have proposed a number of techniques for testing refactoring engines. Nevertheless, they may have limitations related to the program generator, time consumption, kinds of bugs, automation, and debugging. In this work, we propose a technique to scale testing of refactoring engines by extending a previous technique. It automatically generates programs as test inputs using Dolly, a Java and C program generator. We reduce the time to test the refactoring implementations by proposing a technique to skip some consecutive test inputs. We also add more Java constructs in Dolly, such abstract classes and methods, and interface. Our technique uses SAFEREFACTORIMPACT to identify failures related to behavioral changes. It generates test cases only for the methods impacted by a transformation. Also, we propose a new oracle to evaluate whether refactoring conditions are overly strong by disabling a subset of them. Finally, we present a technique to identify transformation issues. We evaluate our technique in 28 refactoring implementations of Java (Eclipse and JRRT) and C (Eclipse) and find 119 bugs related to compilation errors, behavioral changes, overly strong conditions, and transformation issues. The technique reduces the time in 90% and 96% using skips of 10 and 25 in Dolly while missing only 3% and 6% of the bugs, respectively. Additionally, it finds the first failure in general in a few seconds using skips. Using the new oracle to identify overly strong conditions, it detects more bugs and facilitates the debugging activity different from previous works. Finally, we evaluate refactoring implementations of Eclipse and JRRT using the input programs of their refactoring test suites and find 32 bugs not detected by the developers.


Banca Examinadora: 

(Membros Internos)

Márcio Ribeiro 

Tiago Massoni

(Membros Externos)

Paulo Borba, UFPE

Leopoldo Teixeira, UFPE