SlideShare una empresa de Scribd logo
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

PPT
Frameworks Java
PPTX
Tipos de-pruebas
PPTX
Estimación de Proyectos de Software
PPTX
Modelo TSP
PPTX
Metodologia Incremental
PPT
Calidad de software
PDF
Diagramas componentes
PPTX
tecnicas de revisión del software
Frameworks Java
Tipos de-pruebas
Estimación de Proyectos de Software
Modelo TSP
Metodologia Incremental
Calidad de software
Diagramas componentes
tecnicas de revisión del software

La actualidad más candente (20)

PPTX
Modelo de desarrollo rápido de aplicaciones (RAD)
PDF
Procesos De Ingenieria Del Software
PPTX
Arquitectura de objetos distribuidos 1
PPS
Sincronizacion de Procesos
PDF
Concepto y extensiones de negocio de Eriksson Penker
PPTX
TDD (Test-Driven Development)
PPTX
Análisis de Requerimientos
PDF
Gestion de la configuracion del software
PPTX
Ventajas y desventajas de cmmi
PDF
Pruebas de software
PPTX
Administración de Memoria
PPTX
Modelamiento del Sistema Diagrama de Flujo de Datos (DFD)
PPSX
Ieee 830
PDF
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
PPT
Modelado Flujo de Trabajo
PPT
Asp .net
PPTX
Arquitectura de aplicaciones
PPTX
Presentacion de Microsoft SQL Server.
DOCX
Ingeniería de requisitos
PDF
automatas finitos
Modelo de desarrollo rápido de aplicaciones (RAD)
Procesos De Ingenieria Del Software
Arquitectura de objetos distribuidos 1
Sincronizacion de Procesos
Concepto y extensiones de negocio de Eriksson Penker
TDD (Test-Driven Development)
Análisis de Requerimientos
Gestion de la configuracion del software
Ventajas y desventajas de cmmi
Pruebas de software
Administración de Memoria
Modelamiento del Sistema Diagrama de Flujo de Datos (DFD)
Ieee 830
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
Modelado Flujo de Trabajo
Asp .net
Arquitectura de aplicaciones
Presentacion de Microsoft SQL Server.
Ingeniería de requisitos
automatas finitos
Publicidad

Similar a TDD 101 - Introducción al Desarrollo Dirigido por Pruebas (20)

PPT
Joseluisseijoreig samuelsánchezmuñoz
PPSX
7iSF-4 test driver development
PPTX
Introducción a tdd
PDF
Introducción a TDD
ODP
Cómo hacer Test Driven Development
PPTX
Artalde Tdd intro
PPTX
PPTX
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
PPTX
Cómo aplicar TDD. Almería 13/05/2014
PDF
Creando rascacielos con tdd
PDF
Test Driven Development. Fortalezas y Debilidades
PDF
"Demystifying development techniques" por @eturino
PDF
Como escribir buenos tests al hacer TDD
PPTX
TDD y Python
PPTX
ASP.NET MVC Workshop Día 2
PDF
Introducción a TDD
PDF
[ES] webcat 2014-03 Demystifying Development Techniques
PDF
Metodologías Aágiles: TDD (Test Driven development)
Joseluisseijoreig samuelsánchezmuñoz
7iSF-4 test driver development
Introducción a tdd
Introducción a TDD
Cómo hacer Test Driven Development
Artalde Tdd intro
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Cómo aplicar TDD. Almería 13/05/2014
Creando rascacielos con tdd
Test Driven Development. Fortalezas y Debilidades
"Demystifying development techniques" por @eturino
Como escribir buenos tests al hacer TDD
TDD y Python
ASP.NET MVC Workshop Día 2
Introducción a TDD
[ES] webcat 2014-03 Demystifying Development Techniques
Metodologías Aágiles: TDD (Test Driven development)
Publicidad

Último (11)

PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Fundamentos de Python - Curso de Python dia 1
PPTX
Implementación equipo monitor12.08.25.pptx
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PPTX
sistemas de informacion.................
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Conceptos basicos de Base de Datos y sus propiedades
Fundamentos de Python - Curso de Python dia 1
Implementación equipo monitor12.08.25.pptx
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
sistemas de informacion.................
Derechos_de_Autor_y_Creative_Commons.pptx
Su punto de partida en la IA: Microsoft 365 Copilot Chat
AutoCAD Herramientas para el futuro, Juan Fandiño
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf

TDD 101 - Introducción al Desarrollo Dirigido por Pruebas

  • 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/