Candidato: Everton Leandro Galdino Alves
Título do trabalho: Test Case Prioritization for Refactoring Validation
Orientador(es): Patricia Duarte de Lima Machado Tiago Lima Massoni
Horário: 14 horas
Banca examinadora: Roberta Souza Coelho (UFRN), Miryung Kim (The University of Texas at Austin), Franklin Souza Ramalho (UFCG), Rohit Gheyi (UFCG).
Resumo: Refactoring is one of the most common activities performed during the software development cycle. Refactoring edits are changes performed in order to improve internal elements of a software without changing its external behavior. But, those edit may end up introducing faults that might generate behavior changes and/or compilation errors. In practice, in order to decrease the risks related to refactoring, developers combine refactoring edits with regression testing. Regression test suites are used to give more confidence to the developer/tester that the software’s previous behavior remains untouched even after the edits. However, there are situations where it is impractical to rerun the whole regression test suite every time a refactoring edit is done (e.g. a huge number of test cases, severe time/resources restrictions). In this work we propose a refactoring-based approach for selecting and prioritizing regression test cases, RBA. This approach focus on detecting refactoring faults. RBA first extracts the SUT elements that may help the detection of faults related to the changes performed earlier. Then, it selects the test cases that are more related those changes and to their impact in the SUT code. Finally, a new test case execution order is proposed. This new order places in the top positions the test cases that are more likely to reveal the refactoring faults related to the changes perfomed. We first evaluate RBA through two case studies. Each study dealt with real Java systems and with faults related to the most common refactoring edits in the Java/JUnit world. The results from both studies showed that RBA, in general, is efficient for detecting refactoring faults. The execution orders generated by RBA were better and more stables when compared with the ones generated by the most used and traditional prioritization techniques. We believe that RBA can be a great help for developers/testers in order to help them to earlier detect refactoring faults and to debugging the fault as well.