Scaling Testing of Refactoring Engines

Defining and implementing refactorings is a nontrivial task since it is difficult to define preconditions to guarantee that the transformation preserves the program behavior. Therefore, refactoring engines may apply incorrect transformations in which the resulting program does not compile, preserve...

Descripción completa

Detalles Bibliográficos
Autor principal: Mongiovi, Melina
Formato: Objeto de conferencia
Lenguaje:Inglés
Publicado: 2017
Materias:
Acceso en línea:http://sedici.unlp.edu.ar/handle/10915/64921
http://www.clei2017-46jaiio.sadio.org.ar/sites/default/files/Mem/CLTD/CLTD-03.pdf
Aporte de:
id I19-R120-10915-64921
record_format dspace
institution Universidad Nacional de La Plata
institution_str I-19
repository_str R-120
collection SEDICI (UNLP)
language Inglés
topic Ciencias Informáticas
Program Generation
Software Testing
Refactoring Engines
Program analysis
spellingShingle Ciencias Informáticas
Program Generation
Software Testing
Refactoring Engines
Program analysis
Mongiovi, Melina
Scaling Testing of Refactoring Engines
topic_facet Ciencias Informáticas
Program Generation
Software Testing
Refactoring Engines
Program analysis
description Defining and implementing refactorings is a nontrivial task since it is difficult to define preconditions to guarantee that the transformation preserves the program behavior. Therefore, refactoring engines may apply incorrect transformations in which the resulting program does not compile, preserve behavior, or follow the refactoring definitions. These engines may also prevent correct transformations due to overly strong preconditions. We find that 84% of the test suites of Eclipse and JRRT are concerned to detect 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 bug type, program generation, time consumption, and number of refactoring engines necessary to evaluate the implementations. We propose and implement a technique to scale testing of refactoring engines. We improve expressiveness of a program generator and use a technique to skip some test inputs to improve performance. Moreover, we propose new oracles to detect behavioral changes using change impact analysis, overly strong preconditions by disabling preconditions, and transformation issues. We evaluate our technique in 28 refactoring implementations of Java (Eclipse and JRRT) and C (Eclipse) and find 119 bugs. The technique reduces the time in 96% using skips while missing only 6% of the bugs. Additionally, it finds the first failure in general in a few seconds using skips. Finally, we evaluate our proposed technique by using other test inputs, such as the input programs of Eclipse and JRRT refactoring test suites. We find 31 bugs not detected by the developers.
format Objeto de conferencia
Objeto de conferencia
author Mongiovi, Melina
author_facet Mongiovi, Melina
author_sort Mongiovi, Melina
title Scaling Testing of Refactoring Engines
title_short Scaling Testing of Refactoring Engines
title_full Scaling Testing of Refactoring Engines
title_fullStr Scaling Testing of Refactoring Engines
title_full_unstemmed Scaling Testing of Refactoring Engines
title_sort scaling testing of refactoring engines
publishDate 2017
url http://sedici.unlp.edu.ar/handle/10915/64921
http://www.clei2017-46jaiio.sadio.org.ar/sites/default/files/Mem/CLTD/CLTD-03.pdf
work_keys_str_mv AT mongiovimelina scalingtestingofrefactoringengines
bdutipo_str Repositorios
_version_ 1764820479796838404