Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Explorando la conexión entre test smells y la p...

Explorando la conexión entre test smells y la práctica del TDD - GRIAL - research group

El desarrollo basado en pruebas (TDD) es una práctica ágil de escribir código de prueba antes del código de producción, siguiendo tres etapas: roja, verde y refactorización. En la etapa roja, se escribe el código de prueba; en la etapa verde se implementa el código mínimo necesario para pasar la prueba y en la etapa de refactorización se realizan mejoras al código. Esta práctica está muy extendida en toda la industria y se han realizado varios estudios para comprender sus beneficios e impactos en el proceso de desarrollo de software.

A pesar de su popularidad, los estudios de TDD a menudo se centran en los aspectos técnicos de la práctica, como la calidad externa/interna del código, la productividad, los olores de las pruebas y la comprensión del código, en lugar del contexto en el que se practica. En este artículo, presentamos una revisión sistemática de la literatura utilizando Scopus, Web of Science y Google Scholar que se centra en la práctica de TDD y las influencias que conducen a la introducción de olores/antipatrones de prueba en el código de prueba.

La literatura sugiere que la estructura organizacional influye en la estrategia de prueba. Además, existe una tendencia a utilizar olores de prueba y antipatrones TDD indistintamente, y los olores de prueba afectan negativamente la comprensión del código. Además, los estilos de TDD y la relación entre la práctica de TDD y la generación de olores de prueba con frecuencia se pasan por alto en la literatura.

Marabesi

May 23, 2024
Tweet

More Decks by Marabesi

Other Decks in Research

Transcript

  1. Agenda - Contexto - Introducción al tdd - Los trabajos

    relacionados - Introducción a los test smells - Focus de la investigación - Lo que hemos logrado - Revisión sistemática - Resultados - Discusión - ¿Dónde estamos? - Conclusiones - Pasos futuros - Publicaciones hasta la fecha
  2. TDD intro Red - Escribir un test que falla Green

    - Hacer el cambio más pequeño que haga el test pasar Refactor - Refactorizar el código
  3. TDD intro TDD cambia el modo de desarrollar, tradicionalmente, solemos

    escribir el código primero y después el test Red - Escribir un test que falla Green - Hacer el cambio más pequeño que haga el test pasar Refactor - Refactorizar el código
  4. TDD intro - TDD es un tema con desafíos, pero

    empíricamente nos lleva a un código con menos bugs - Hay trabajos que no llegan a una conclusión sobre una mejora de la calidad interna del código - TDD es parte del proceso de desarrollo de software
  5. Test smells Un conjunto de malos olores que indican problemas

    el código de test. Van Deursen es el autor que es referenciado como uno de los primeros conjuntos de olores
  6. La revisión sistemática - protocolo Scopus: TITLE-ABS-KEY ( ( tdd

    OR “unit test*” OR “test-driven development” OR “test driven development” ) AND ( “anti-pattern*” OR “anti pattern*” OR antipattern* OR pattern* OR “test smells” ) ) Web of Science: TS=( ( tdd OR “unit test*” OR “test-driven development” OR “test driven development” ) AND ( “anti-pattern*” OR “anti pattern*” OR antipattern* OR pattern* OR “test smell*” ) ) Google Scholar: (tdd OR “unit test*” OR “test-driven development” OR “test driven development” ) AND ( “anti-pattern*” OR “anti pattern*” OR antipattern* OR pattern* )
  7. La revisión sistemática - protocolo - Scripts están disponibles en

    GitHub - Datos están disponibles en Google Docs
  8. Resultados Un proceso de calidad con 6 preguntas fue creado

    para filtrar los trabajos de más interés
  9. Resultados Un proceso de calidad con 6 preguntas fue creado

    para filtrar los trabajos de más interés = 28
  10. Resultados Broader context + TDD/teaching + Anti-patterns/test smells En esta

    categoría se agregaron otras áreas relacionadas con el enfoque del estudio. Por ejemplo, se incluyeron estrategias de prueba y el modelo de madurez DevOps
  11. Resultados TDD/overall testing practice Broader context + TDD/teaching + Anti-patterns/test

    smells En esta categoría se agregaron otras áreas relacionadas con el enfoque del estudio. Por ejemplo, se incluyeron estrategias de prueba y el modelo de madurez DevOps Los estudios en esta sección se refieren a la práctica de TDD que no está directamente relacionada con las pruebas de olores. En esta categoría se agregaron estudios que mencionan el TDD como una práctica en cualquier forma
  12. Resultados TDD/overall testing practice Anti-patterns/test smells Broader context + TDD/teaching

    + Anti-patterns/test smells En esta categoría se agregaron otras áreas relacionadas con el enfoque del estudio. Por ejemplo, se incluyeron estrategias de prueba y el modelo de madurez DevOps Los estudios en esta sección se refieren a la práctica de TDD que no está directamente relacionada con las pruebas de olores. En esta categoría se agregaron estudios que mencionan el TDD como una práctica en cualquier forma Esta categoría incluye estudios que mencionan antipatrones o prueban olores en el estudio. La mayoría de los estudios mencionan específicamente los olores de prueba en lugar de los antipatrones. A los efectos de esta sección, se consideran ambos
  13. Resultados - Broader Context, TDD/Teaching and Anti-Patterns/Test Smells - La

    estrategia de test efectiva lleva en consideración toda la organización - La automatización es clave para organizaciones en la transformación ágil, la automatización es un punto clave en los modelos de madurez creados para DevOps - La enseñanza del TDD es un reto por su dificultad en crear un entorno que sea similar a la realidad - Desarrolladores valoran TDD por su constante feedback
  14. Resultados - Anti-Patterns/Test Smells - Olores en la industria -

    Los profesionales los desconocen en el código - Los desarrolladores pudieron percibir pero no identificar los olores - Los desarrolladores perciben los olores de las pruebas como de gravedad baja o moderada - El impacto de los olores - Los olores se introducen durante las tareas de programación diarias
  15. ¿Dónde estamos? - Por una parte, estamos desarrollando un modelo

    conceptual para mitigar el proceso de desarrollo de software con tdd, por otra parte, el modelo de madurez está en marcha dentro del framework
  16. ¿Dónde estamos? - Modelo de madurez 1. Learning ◦ Interesado

    en el tema, aprendiendo sobre él y curioso sobre cómo abordar el desarrollo con tests primero. 2. Practitioner ◦ Escribe pruebas pero no con TDD 3. Advanced ◦ Se utiliza TDD, olores de los tests no son controlados 4. Competent ◦ Se utiliza TDD, olores de los tests son controlados de una forma no sistemática/con datos 5. Expert ◦ Refactorización continua y mejora contínua de los test basado en datos
  17. ¿Dónde estamos? - Framework en tres etapas - Línea base

    - Cuestionario enfocado en: la organización y la dinámica de equipo y sus prácticas - Métricas - Colecta automatizada de información basado en la DORA - Mejora continua - Herramientas de mejora contínua como: librerias, frameworks, tutoriales y plugins
  18. Conclusiones - TDD es una práctica valorada por profesionales, pero

    aún no es una práctica usada - Test Smells y TDD no suelen estar relacionados, hay espacio para investigadores en este sentido - Java es un lenguaje con más herramientas para mitigar olores en los test, para otros ecosistemas y lenguajes hay espacios para desarrollo
  19. Conclusiones - passos futuros - Publicar el concepto del modelo

    y framework para feedback de la comunidad - Iniciar el ciclo de action research con colaboradores en la industria - Publicar los resultados
  20. Publicaciones hasta la fecha Marabesi, M., García-Peñalvo, F. J., &

    García-Holgado, A. (2023, June). Towards a TDD maturity model through an anti-patterns framework. In 2023 18th Iberian Conference on Information Systems and Technologies (CISTI) (pp. 1-6). IEEE. Marabesi, M., García-Holgado, A., & García-Peñalvo, F. J. (2024). Exploring the Connection between the TDD Practice and Test Smells—A Systematic Literature Review. Computers, 13(3), 79.