Test Lint Evaluando Calidad de los Tests - Linari, Facundo (2023)
El Testing es una actividad importante en el desarrollo de proyectos de software. Los tests automáticos aseguran que el sistema se comporta como lo esperado y sirven como documentación para entender código de terceros. Sin embargo, mientras el sistema crece y evoluciona, los tests necesitan adaptarse también para mantenerse a la par de las necesidades del sistema. Mientras el conjunto de tests crece, el esfuerzo invertido para mantenerlos se convierte en una actividad que involucra tiempo y esfuerzo, lo que impacta directamente en los objetivos finales del desarrollo. En este contexto, la calidad de los tests es un problema importante, ya que, los desarrolladores necesitan valorar y entender los tests para que estos cumplan con los requerimientos actuales. Mientras que el testing ha pasado a ser una forma popular y soportada por los IDEs actuales para la comprobación del correcto funcionamiento del código, las metodologías y herramientas que intentan evaluar la calidad de los tests, son escasas o para nada integradas al proceso de testing, yendo más allá, casi no hubo intentos concretos de medir la calidad de un test detectando errores de diseño en ellos. Estos errores se los llaman Test Smells, en honor a los Coding Smells que son los mismos errores pero en el código fuente. Un Lint es una herramienta que detecta estos errores de diseño en el código de forma estática. De forma similar, existen los Test Lints que analizan los errores de diseño del código de test. El presente trabajo contribuye a la investigación de metodologías de testing al medir la calidad de los test. En particular se analizan Test Smells y define un conjunto de criterios para determinar la calidad de los tests. También se presenta la herramienta S-TestLint, un analizador de tests que encuentre Test Smells cometidos y que propone soluciones de forma automática. Esta herramienta fue implementada e integradas en CuisUniversity y comenzaron a ser usadas por los estudiantes de la materia de Ingeniería de Software 1 de la FCEN, para promover una mejor calidad de los tests en su etapa de aprendizaje.