TDD

 

Test driven development

Desarrollo guiado por pruebas

Un poco de mi

Sagrario Meneses
Software Architect

 

smmd

Test/Prueba

Acción de probar a alguien o algo para conocer sus cualidades, verificar su eficacia, saber cómo funciona o reacciona, o qué resultado produce.

Durante la construcción de un software, la etapa de mantenimiento se lleva aproximadamente el 65%

Desarrollo Guiado por Pruebas (TDD)

"Todo código es culpable hasta que se demuestre su inocencia."

INNOCENT

El TDD es una practica del desarrollo de software que propone escribir primero las pruebas(generalmente unitarias) basadas en casos de uso

previamente establecidos de requerimientos específicos, de esa forma el software únicamente es mejorado para pasar las pruebas creadas para cada caso de uso.

1. Escribir las pruebas

2. Construir lo necesario para pasar esas pruebas.

3. Mejorar el código.

RED

GREEN

REFACTOR

Ventajas para el negocio por practicar TDD

  • Permite la verificación de requerimientos.

  • Detección ágil de errores.

  • Un menor costo de mantenimiento.

Ventajas en el desarrollo por practicar TDD

  • Diseño de arquitectura - Primero 

  • Evita la sobre - ingeniería.

  • Confianza.

  • Facilita el rastreo de bugs.

  • Aporta a la documentación.

EJEMPLOS >>>

Sugerencias y buenas prácticas

Probar el código cómo si estuviera ya corriendo en producción.

  • Tener disciplina.

  • Configuraciones independientes.

  • Fixtures de base de datos.

  • Enfocarse en los valores y resultados necesarios.

  • Revisar las pruebas y practicar el testing con el equipo.

  • NO crear dependencias entre las pruebas.

  • Integración continua -> Automatización de pruebas.

Practicar TDD no es suficiente

  • Verificación del despliegue.

  • Actualización y configuraciones.

  • Pruebas de integración.

  • Apoyo de TODO el equipo.

La refactorización es como resolver el cubo de Rubik. Se necesitan muchos pasos pequeños para lograr un objetivo mayor."

No basta con que el código funcione, los programadores que se conforman con esto no son profesionales."

¿Cuándo fue la primera vez que se practicó TDD?

Bibliografía recomendada

"Working Effectively with Legacy Code" by Michael Feathers

"Test-Driven Development By Example" by Kent Beck

"Refactoring" by Kent Beck and Martin Fowler

"Test-Driven Development with Python" by Harry Percival

"Pragmatic Unit Testing in Java with JUnit" by Andy Hunt and Dave Thomas

Test Driven Development Reloaded

By smmd

Test Driven Development Reloaded

  • 145