EvolUniT: geraÃÃo e evoluÃÃo de testes de unidade em java utilizando algoritmos genÃticos

AUTOR(ES)
DATA DE PUBLICAÇÃO

2008

RESUMO

Este trabalho apresenta a ferramenta EvolUniT (Evolutionary Unit Testing), uma ferramenta para automatizaÃÃo de testes de unidade de cÃdigo orientado a objetos (classes Java). A EvolUniT recebe como entrada uma classe Java a ser testada; gera uma classe de teste usando o framework JUnit; gera dados (parÃmetros de construtores e mÃtodos) inicialmente aleatÃrios para compor os casos de teste; e utiliza um Algoritmo GenÃtico (AG) para evoluir os dados, de acordo com uma funÃÃo de aptidÃo criada com base nas coberturas de cÃdigo capturadas. A evoluÃÃo dos dados se dà atravÃs de sucessivas execuÃÃes da classe sendo testada, atà que um nÃmero mÃximo de geraÃÃes do AG seja atingido ou que uma cobertura mÃxima prÃ-definida seja atingida. A ferramenta foi implementada em Java, em forma de plug-in do Eclipse. A ferramenta proporciona uma semi-automaÃÃo de testes de unidade, ao invÃs de automaÃÃo completa, pois em alguns casos, o engenheiro de software ou de testes precisarà complementar manualmente as classes de teste geradas. A vantagem desta semiautomaÃÃo à que o conhecimento do desenvolvedor ou testador serà acrescido aos testes gerados pela ferramenta, possibilitando assim melhores resultados. Foram realizados trÃs estudos para avaliar a EvolUniT, e os resultados alcanÃados foram satisfatÃrios. A EvolUniT traz contribuiÃÃes para duas Ãreas diferentes. Para a Engenharia de Software, com a semi-automaÃÃo do processo de testes de unidade, reduz-se significativamente o tempo e o esforÃo por parte dos desenvolvedores, jà que estes passam a usar seus conhecimentos para configurar a ferramenta, ao invÃs de escrever as classes de teste. Para a Ãrea de ComputaÃÃo Inteligente, a contribuiÃÃo à na utilizaÃÃo de uma tÃcnica de otimizaÃÃo evolutiva, os Algoritmos GenÃticos, para resolver o problema da escolha de bons dados para testes estruturais, que nem sempre à bem resolvido por algoritmos convencionais ou tÃcnicas aleatÃrias

ASSUNTO(S)

algoritmos genÃticos java automation genetic algorithms java ciencia da computacao testes de unidade automaÃÃo unit testing

Documentos Relacionados