SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
TDD - 101
Orlando Bustos Mateluna - 2017
Agenda
Tipos de Test
Definición / Flujos
¿Por Qué?
Beneficios / Costos
Principios
Ejemplo
Desafíos / Experiencias
Tipos de Test
Funcional
Unitarios
Mutación
Integración
Aceptación
Tipos de Test - Unitarios
• Prueba Unitaria
– Una prueba unitaria es una
forma de comprobar el
correcto funcionamiento de
una unidad de código.
• función
• procedimiento
• clase
Flujo Tradicional
Diseño
Test
Código
TRADICIONAL
TDD - Definición
• TDD son las siglas de Test Driven
Development, desarrollo dirigido por
pruebas.
• Proceso de desarrollo de software que se
basa en la idea de desarrollar pruebas,
codificar y refactorizar el código
construido.
TDD - Nuevo Flujo
T
D
D
F
l
u
j
o
Escribir un test
¿Pasó?
Escribir código Correr el test
¿Pasó?
Remover Errores
Refactorizar
Correr el test
¿Pasó?
Si
Si
Si
No
No
NoCorrer el test
TDD - ¿Por qué antes?
● De la manera tradicional las
pruebas suelen
estar condicionadas a lo
implementado, con lo que es
fácil obviar pruebas o olvidar
algunos casos de test.
TDD - ¿Por qué antes?
• Al realizar primero las pruebas se realiza
un ejercicio previo de análisis, de los requisitos y
de los diversos escenarios.
TDD - ¿Por qué antes?
– En mi experiencia, es fome, fome, fomisimo, hacer las pruebas
después de terminar el código.
– Como es tan aburrido, se hacen las pruebas mínimas para
poder escapar rápido de esa tarea.
TDD - ¿Por qué?
• TDD ayuda a producir diseños más simples y
menos acoplados.
TDD - ¿Por qué?
• TDD ayuda a crear un gran conjunto de pruebas
que dan "confianza" para realizar cambios o
incrementar la funcionalidad del sistema.
TDD - Costos
• Curva de aprendizaje pronunciada.
• El testing ralentiza el prototipado rápido.
• Los primeros sprints se suele entregar menos de
lo normal.
TDD - Beneficios
• Mejor cobertura de Test
• Mejor Diseño
• Solo funcionalidad requerida
• Ayuda a manejar el miedo de
cara a la complejidad
• Documentación de código
• Aumenta la calidad general
TDD - Beneficios
• Evidencia concreta de que tu
codigo funciona
• Acorta el tiempo de feedback
• Defectos después de deployar
son muy raros y poco críticos.
TDD - Principios
TDD - Principios (Reglas) - RED
No está permitido escribir código productivo sin tener una
prueba que falle.
TDD - Principios (Reglas) - RED
No está permitido escribir más código en una prueba, que el
necesario para que falle la misma.
TDD - Principios (Reglas) - GREEN
No está permitido escribir más código
productivo que el necesario para pasar su
prueba unitaria.
Babysteps.
Siguiendo patrones y buenas
prácticas.
TDD - Principios (Reglas) - REFACTOR
Eliminar duplicaciones y otros “code smells”.
– Hediondeces del código.
TDD - Code Smells
• Hediondeces de código comunes:
– Código duplicado
– Método grande
– Clase grande
– Demasiados parámetros
– Envidia de características
– Excesivo uso de literales
TDD - Ejemplo
TDD - Desafíos
● Las pruebas se tornan difíciles de escribir
○ por lo que sentimos una desaceleración importante.
TDD - Desafíos
● Son frágiles
○ por lo que cambios aparentemente sin importancia en el código
provocan que un montón de pruebas fallen.
TDD - Desafíos
● Mantenerlas en forma y funcionando se vuelve complejo y
consume tiempo.
TDD - Desafíos
● Finalmente nos damos por vencido y abandonamos
completamente nuestras mejores intenciones y pensamos
“Simplemente no vale la pena”.
Desafíos
TDD - Experiencias anteriores
• Copy-Paste
– Cuando se “copipastea” se tiende a olvidar TDD.
TDD - Experiencias anteriores
• Fragilidad
– Cualquier cambio en el código afecta las pruebas.
TDD - Experiencias anteriores
• Cobertura
– Desde el 1er
Commit tienes mínimo 80%.
TDD - Conclusión
• No es una bala de plata
“No existirá [en el horizonte de una década] un avance en tecnología o gestión, que por sí solo pueda
provocar una mejora en la productividad, fiabilidad y simplicidad en un orden de magnitud
[significativo/por diez] - Fred Brooks”
TDD - Conclusión
• Beneficios Comprobados
– (2008) - “TDD teams produced code that was 60 to
percent better in terms of defect density than non-T
teams.”
TDD - Conclusión
• Cambia la manera de pensar y trabajar
– Es complejo imaginar algunas pruebas a priori.
TDD - Conclusión
• Disciplina y Constancia
– Se requiere ser disciplinado y constante para no
abandonar en el peor momento de la curva de adopción.
TDD - Preguntas
TDD - Referencias
• Test driven development overview and adoption
– http://www.slideshare.net/pyxistech/test-driven-develop
ment-overview-and-adoption
• Comparative Study of Test Driven Development
with Traditional Techniques
– http://www.ijsce.org/attachments/File/v3i1/A1351033113
.pdf
TDD - Referencias
• TDD cómo y por qué, una guía para los no
iniciados
– http://artesanos.de/software/2012/02/13/tdd-como-y-po
rque-una-guia-para-los-no-iniciados/
• Introducción a TDD (Test Driven Development)
– http://blog.lordudun.es/2011/04/introduccion-a-tdd-test-
driven-development/
TDD - Referencias
• Conventional TDD is Sin!!
– http://agile.dzone.com/news/conventional-tdd-si
n
• 7th ANNUAL STATE of AGILE VERSIONONE®
Agile Made Easier DEVELOPMENT SURVEY
– http://www.versionone.com/pdf/7th-Annual-Stat
e-of-Agile-Development-Survey.pdf
TDD - Referencias
• Hediondez del Código
– http://es.wikipedia.org/wiki/Hediondez_del_c%C3%B3dig
o
• https://ryoshiga.com/category/tdd/
• https://www.slideshare.net/AtishNarlawar/td
d-in-agile
TDD - Referencias
• https://www.microsoft.com/en-us/research/blog/
exploding-software-engineering-myths/

Más contenido relacionado

La actualidad más candente

Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionLuiS YmAY
 
Fundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoFundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoJosé Antonio Sandoval Acosta
 
Prototipos
PrototiposPrototipos
PrototiposTensor
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Marta Silvia Tabares
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeansguest044583b
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.pptEliezer Cordova
 
Programacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaProgramacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaJosé Antonio Sandoval Acosta
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#rezzaca
 
Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Pythonguest44e947
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de ComunicaciónJosé Antonio Sandoval Acosta
 

La actualidad más candente (20)

tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 
15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Fundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoFundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de Flujo
 
Prototipos
PrototiposPrototipos
Prototipos
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Variables en java
Variables en javaVariables en java
Variables en java
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
 
Programacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaProgramacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herencia
 
Elementos basicos C++
Elementos basicos C++Elementos basicos C++
Elementos basicos C++
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Python
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Lenguaje de programacion ruby
Lenguaje de programacion rubyLenguaje de programacion ruby
Lenguaje de programacion ruby
 
Aplicación de escritorio
Aplicación de escritorioAplicación de escritorio
Aplicación de escritorio
 
Comandos java
Comandos javaComandos java
Comandos java
 

Similar a TDD 101: Introducción a Test Driven Development

Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDDFran Grau
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd introfperezplain
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development TechniquesEduardo Turiño
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozjoseluisseijo
 
Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Javier_J
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mockEloi Poch
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoHernan Wilkinson
 
TDD y Python
TDD y PythonTDD y Python
TDD y PythonJavier_J
 
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)Javier_J
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentJavier Novoa Cataño
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilagilenavarra
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationAgile Spain
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 

Similar a TDD 101: Introducción a Test Driven Development (20)

Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
TDD
TDDTDD
TDD
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
TDD
TDDTDD
TDD
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mock
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intento
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
 
Tw ¿Por qué elegir ágil?
Tw   ¿Por qué elegir ágil? Tw   ¿Por qué elegir ágil?
Tw ¿Por qué elegir ágil?
 

Último

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 

Último (7)

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 

TDD 101: Introducción a Test Driven Development

  • 1. TDD - 101 Orlando Bustos Mateluna - 2017
  • 2. Agenda Tipos de Test Definición / Flujos ¿Por Qué? Beneficios / Costos Principios Ejemplo Desafíos / Experiencias
  • 4. Tipos de Test - Unitarios • Prueba Unitaria – Una prueba unitaria es una forma de comprobar el correcto funcionamiento de una unidad de código. • función • procedimiento • clase
  • 6. TDD - Definición • TDD son las siglas de Test Driven Development, desarrollo dirigido por pruebas. • Proceso de desarrollo de software que se basa en la idea de desarrollar pruebas, codificar y refactorizar el código construido.
  • 7. TDD - Nuevo Flujo
  • 8. T D D F l u j o Escribir un test ¿Pasó? Escribir código Correr el test ¿Pasó? Remover Errores Refactorizar Correr el test ¿Pasó? Si Si Si No No NoCorrer el test
  • 9. TDD - ¿Por qué antes? ● De la manera tradicional las pruebas suelen estar condicionadas a lo implementado, con lo que es fácil obviar pruebas o olvidar algunos casos de test.
  • 10. TDD - ¿Por qué antes? • Al realizar primero las pruebas se realiza un ejercicio previo de análisis, de los requisitos y de los diversos escenarios.
  • 11. TDD - ¿Por qué antes? – En mi experiencia, es fome, fome, fomisimo, hacer las pruebas después de terminar el código. – Como es tan aburrido, se hacen las pruebas mínimas para poder escapar rápido de esa tarea.
  • 12. TDD - ¿Por qué? • TDD ayuda a producir diseños más simples y menos acoplados.
  • 13. TDD - ¿Por qué? • TDD ayuda a crear un gran conjunto de pruebas que dan "confianza" para realizar cambios o incrementar la funcionalidad del sistema.
  • 14. TDD - Costos • Curva de aprendizaje pronunciada. • El testing ralentiza el prototipado rápido. • Los primeros sprints se suele entregar menos de lo normal.
  • 15. TDD - Beneficios • Mejor cobertura de Test • Mejor Diseño • Solo funcionalidad requerida • Ayuda a manejar el miedo de cara a la complejidad • Documentación de código • Aumenta la calidad general
  • 16. TDD - Beneficios • Evidencia concreta de que tu codigo funciona • Acorta el tiempo de feedback • Defectos después de deployar son muy raros y poco críticos.
  • 18. TDD - Principios (Reglas) - RED No está permitido escribir código productivo sin tener una prueba que falle.
  • 19. TDD - Principios (Reglas) - RED No está permitido escribir más código en una prueba, que el necesario para que falle la misma.
  • 20. TDD - Principios (Reglas) - GREEN No está permitido escribir más código productivo que el necesario para pasar su prueba unitaria. Babysteps. Siguiendo patrones y buenas prácticas.
  • 21. TDD - Principios (Reglas) - REFACTOR Eliminar duplicaciones y otros “code smells”. – Hediondeces del código.
  • 22. TDD - Code Smells • Hediondeces de código comunes: – Código duplicado – Método grande – Clase grande – Demasiados parámetros – Envidia de características – Excesivo uso de literales
  • 24. TDD - Desafíos ● Las pruebas se tornan difíciles de escribir ○ por lo que sentimos una desaceleración importante.
  • 25. TDD - Desafíos ● Son frágiles ○ por lo que cambios aparentemente sin importancia en el código provocan que un montón de pruebas fallen.
  • 26. TDD - Desafíos ● Mantenerlas en forma y funcionando se vuelve complejo y consume tiempo.
  • 27. TDD - Desafíos ● Finalmente nos damos por vencido y abandonamos completamente nuestras mejores intenciones y pensamos “Simplemente no vale la pena”.
  • 29. TDD - Experiencias anteriores • Copy-Paste – Cuando se “copipastea” se tiende a olvidar TDD.
  • 30. TDD - Experiencias anteriores • Fragilidad – Cualquier cambio en el código afecta las pruebas.
  • 31. TDD - Experiencias anteriores • Cobertura – Desde el 1er Commit tienes mínimo 80%.
  • 32. TDD - Conclusión • No es una bala de plata “No existirá [en el horizonte de una década] un avance en tecnología o gestión, que por sí solo pueda provocar una mejora en la productividad, fiabilidad y simplicidad en un orden de magnitud [significativo/por diez] - Fred Brooks”
  • 33. TDD - Conclusión • Beneficios Comprobados – (2008) - “TDD teams produced code that was 60 to percent better in terms of defect density than non-T teams.”
  • 34. TDD - Conclusión • Cambia la manera de pensar y trabajar – Es complejo imaginar algunas pruebas a priori.
  • 35. TDD - Conclusión • Disciplina y Constancia – Se requiere ser disciplinado y constante para no abandonar en el peor momento de la curva de adopción.
  • 37. TDD - Referencias • Test driven development overview and adoption – http://www.slideshare.net/pyxistech/test-driven-develop ment-overview-and-adoption • Comparative Study of Test Driven Development with Traditional Techniques – http://www.ijsce.org/attachments/File/v3i1/A1351033113 .pdf
  • 38. TDD - Referencias • TDD cómo y por qué, una guía para los no iniciados – http://artesanos.de/software/2012/02/13/tdd-como-y-po rque-una-guia-para-los-no-iniciados/ • Introducción a TDD (Test Driven Development) – http://blog.lordudun.es/2011/04/introduccion-a-tdd-test- driven-development/
  • 39. TDD - Referencias • Conventional TDD is Sin!! – http://agile.dzone.com/news/conventional-tdd-si n • 7th ANNUAL STATE of AGILE VERSIONONE® Agile Made Easier DEVELOPMENT SURVEY – http://www.versionone.com/pdf/7th-Annual-Stat e-of-Agile-Development-Survey.pdf
  • 40. TDD - Referencias • Hediondez del Código – http://es.wikipedia.org/wiki/Hediondez_del_c%C3%B3dig o • https://ryoshiga.com/category/tdd/ • https://www.slideshare.net/AtishNarlawar/td d-in-agile
  • 41. TDD - Referencias • https://www.microsoft.com/en-us/research/blog/ exploding-software-engineering-myths/