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
- 192