Defesa de Qualificação de Doutorado - Melina Mongiovi Cunha Lima Sabino, em 09/10, às 08hs

postado em 29 de set de 2015 09:52 por Franklin de Souza Ramalho
Candidato: Melina Mongiovi Cunha Lima Sabino
Título do trabalho: Scaling Testing of Refactoring Engines
Orientador(es): Rohit Gheyi

Data: 09/10/2015
Horário: 8h
Local: auditório do CEEI

Banca examinadora:(mais detalhes abaixo) Paulo Borba (UFPE), Leopoldo Mota Teixeira (UFPE), Tiago Massoni (UFCG), Márcio Ribeiro (UFCG).

Resumo: Definir e implementar refatoramentos não é uma tarefa trivial, pois é difícil definir todas as precondições necessárias para garantir que a transformação preserva o comportamento do programa. Na prática, desenvolvedores escrevem casos de testes para checar suas implementações de refatoramentos. No entanto, ter uma boa coleção de testes é difícil e custoso, já que requer entradas complexas (programas) e oráculos para checar se é possível aplicar a transformação ou se a transformação preserva o comportamento do programa. Existem algumas técnicas automáticas para testar ferramentas de refatoramentos. No entanto, elas podem ter limitações relacionadas com o gerador de programas (exaustividade, expressividade, configurações), automação (oráculos, categorização de bugs), tempo ou tipos de refatoramentos que podem ser testados. Neste trabalho, nós propomos uma técnica para escalar testes de ferramentas de refatoramentos. Nossa técnica reduz o tempo de testar as implementações de refatoramentos pulando algumas entradas de testes. Nós também adicionamos mais construções de Java (interface e abstract) no gerador de programas. A técnica usa um conjunto de oráculos automáticos para avaliar a corretude das transformações, dentre eles o SafeRefactorImpact que identifica falhas relacionadas com mudanças comportamentais. Propomos também um novo oráculo baseado em teste de mutação para identificar condições fortes. Além disso, nós propomos uma técnica para identificar transformações estruturalmente incorretas. Por fim, nós implementamos um conjunto de categorizadores automáticos de bugs para classificar as falhas em bugs distintos. Nós avaliamos nossa técnica em 22 implementações de refatoramentos de Java (Eclipse e JRRT) e C (Eclipse). Encontramos 117 bugs em um total de 49 bugs relacionados com erros de compilação, 17 bugs relacionados com mudanças comportamentais, 33 bugs relacionados com condições fortes usando as técnicas de teste diferencial (DT) e de teste de mutação, e 18 transformações estruturalmente incorretas usando os oráculos de teste diferencial e análise de mudanças estruturais. Usando pulos de 10 e 25, nós reduzimos em 89% e 95% o tempo para testar as implementações de refatoramentos, enquanto perdemos apenas 3,3% e 5,5% dos bugs, respectivamente. Os bugs perdidos são relacionados com condições fortes, erros de compilação e mudanças comportamentais. Além disso, a técnica que detecta condições fortes baseada em teste de mutação reduziu o tempo em 23,5% e detectou 33% novos bugs comparando com a técnica DT.
Comments