Reestructuración y refactorización de Unit tests con TestSurgeon
Tesis
Open/ Download
Publication date
2013Metadata
Show full item record
Cómo citar
Bergel, Alexandre
Cómo citar
Reestructuración y refactorización de Unit tests con TestSurgeon
Author
Professor Advisor
Abstract
Actualmente la actividad de Testing es fundamental dentro del ciclo de desarrollo de cualquier proyecto de software serio. Es más, las metodologías ágiles elevan su relevancia dentro de la construcción del software a tal nivel que está prohibido añadir una nueva funcionalidad sin que se haya escrito previamente un test que la valide.
A medida que el software crece en funcionalidades y cambian los requerimientos se vuelve más complejo. Es por eso que existen varias técnicas para reestructurar el código haciéndolo más flexible a los cambios y permitiendo que crezca.
Sin embargo, los test también crecen en número y en complejidad. Por lo que no son raros los casos de test redundantes tanto desde el punto de vista de su código fuente (duplicación de test) como de su ejecución. Pero a diferencia con el código "funcional", poco esfuerzo se ha realizado por parte de la industria por promover técnicas y crear herramientas que faciliten la tarea de mantener su estructura y diseño limpio.
Una de las consecuencias importantes de este problema, es el gran tiempo que toma ejecutar todos los tests. Al haber redundancia, la ejecución tarda más tiempo del necesario lo hace que los desarrolladores los corran con menos frecuencia e inclusive invierten menos tiempo en escribir nuevos test lo cual minimiza la cobertura. Esto último atenta críticamente en la confiabilidad del código base y por ende de la aplicación.
En este trabajo se propone una herramienta para detectar problemas de diseño de los tests. TestSurgeon aborda este problema desde dos perspectivas de análisis principales: su código fuente y su ejecución. A través de una intuitiva interfaz, el desarrollador puede navegar sobre las pruebas unitarias y realizar comparaciones entre tests guiado por métricas dedicadas que facilitan la detección de casos interesantes. Además provee una completa visualización que condensa dos métricas que describen y diferencian la ejecución de los test en comparación, permitiendo realizar un análisis eficaz. Finalmente, TestSurgeon permite detectar diferencias semánticas entre tests y encontrar redundancias entre estos para una posible refactorización.
Se presentan distintos escenarios de refactorización y reestructuración que son detectados por TestSurgeon. Estos son descritos con ejemplos reales en base a una experiencia de aplicación de TestSurgeon sobre los tests de Roassal, un motor de visualización ágil.
TestSurgeon ganó el primer lugar en la competencia internacional ACM Student Research Competition (categoría pregrado) durante la conferencia ICSE (principal en Ingeniería de Software) el año 2012.
General note
Ingeniero Civil en Computación
Identifier
URI: https://repositorio.uchile.cl/handle/2250/115493
Collections
The following license files are associated with this item: