SlideShare una empresa de Scribd logo
TDD desde las trincheras
Leonardo Micheloni
@leomicheloni
@leomicheloni
¿Quién soy?
• Leonardo Micheloni
• +15 Programador
• +10 años en Agile
• Tokiota
@leomicheloni
@leomicheloni
Objetivo
• Comprender TDD
• Contar experiencias
• No “vender” la idea
@leomicheloni
¿Qué es TDD?
• Desarrollar a partir de los test
• Escribir primero el test, luego el código que valida el test
• Comenzar from scratch
• Crear la versión más simple del código que haga pasar el test
• Refactorizar
• Baby steps
@leomicheloni
Estructura de un test
• Setup
• Ejecución
• Validación
• Cleanup
@leomicheloni
Simples
@leomicheloni
TDD ciclo
@leomicheloni
Terminología
• Dummy
• Solo datos
• Stub
• Datos condicionales
• Mock
• Comportamiento
@leomicheloni
Mock
@leomicheloni
Algunas recomendaciones
• Keep unit small
• Reducir el debugging
• Si hay un bug, hacer un test
• El código queda “autodocumentado”
@leomicheloni
¿Qué permite TDD?
• Comenzar sin depender de otros componentes
• Mejorar la comprensión del negocio (fail fast)
• Descubrir la API
• Trabajar por iteraciones (pomodoro)
• Que emerja la arquitectura
• Detectar casos de uso
@leomicheloni
Qué requiere?
• Ciertos conocimientos “avanzado” (como IoC)
• Disciplina
• Capacidad para separar el problema
@leomicheloni
Resultado
• Pensar la solución a partir del uso
• Mayor confianza en lo entregado
• Mayor felicidad
• Mayor calidad (refactor)
• Evita el sobre-diseño
• Evolución sólida => test
@leomicheloni
Live coding
@leomicheloni
Experiencias
• Proyectos legacy (funcionalidades nuevas)
• Difícil comenzar desde cero
• Hace falta práctica
• No vale la pena en todo el código (code coverage)
• Hace falta experiencia
• Es necesario conocer ciertas herramientas
• No es simple aplicarlo a todas las áreas (UI, etc.)
• Puede dar una falsa sensación de seguridad
@leomicheloni
Grandes preguntas
• ¿Se puede hacer siempre TDD?
• ¿Cualquiera puede hacer TDD?
• ¿Se puede aplicar en toda la aplicación?
• ¿Queda el código “autodocumentado”?
• ¿La aplicación es más confiable?
• ¿Aumenta el costo de mantenimiento?
• ¿Se puede aplicar en proyectos existentes?
@leomicheloni
Preguntas
@leomicheloni
Gracias! @leomicheloni
@leomicheloni
Links útiles
• TDD Katas: http://osherove.com/tdd-kata-1/
• Fizz Buzz Kata: https://opencredo.com/blogs/tdd-fizzbuzz-junit-
theories/
• Bob Martin: https://blog.cleancoder.com/
• TDD Wars: https://www.codewars.com/
• Mi canal de Youtube:
https://www.youtube.com/channel/UCQlqd6byJpXtGuYrL4cElgw
• Mi blog: http://leomicheloni.com
@leomicheloni

Más contenido relacionado

La actualidad más candente

Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
Javier Novoa Cataño
 
Como escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDD
Hernan Wilkinson
 
Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15
Aitor Suso Gáceta
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por Pruebas
Miguel Angel
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
Pedro Ballesteros
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID Refactor
Agile Spain
 
Encadenamiento de refactorings para generar cambios Agiles de Diseño
Encadenamiento de refactorings para generar cambios Agiles de DiseñoEncadenamiento de refactorings para generar cambios Agiles de Diseño
Encadenamiento de refactorings para generar cambios Agiles de Diseño
Hernan Wilkinson
 
Clean code 9
Clean code 9Clean code 9
Clean code 9
540deg
 
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivelCharla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
TestingUy
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
NSCoder Mexico
 
ATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de AceptaciónATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de Aceptación
Paulo Clavijo
 
Pedro sebastián mingo. peopleware en el testing
Pedro sebastián mingo. peopleware en el testingPedro sebastián mingo. peopleware en el testing
Pedro sebastián mingo. peopleware en el testing
233 Grados de TI
 
No debuggearás - Introducción al Unit Testing y TDD
No debuggearás - Introducción al Unit Testing y TDDNo debuggearás - Introducción al Unit Testing y TDD
No debuggearás - Introducción al Unit Testing y TDD
reyiyo
 
Presentación Agile Testing
Presentación Agile TestingPresentación Agile Testing
Presentación Agile Testing
tbaires
 
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
233 Grados de TI
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1
Jano González
 

La actualidad más candente (16)

Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
Como escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDD
 
Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por Pruebas
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID Refactor
 
Encadenamiento de refactorings para generar cambios Agiles de Diseño
Encadenamiento de refactorings para generar cambios Agiles de DiseñoEncadenamiento de refactorings para generar cambios Agiles de Diseño
Encadenamiento de refactorings para generar cambios Agiles de Diseño
 
Clean code 9
Clean code 9Clean code 9
Clean code 9
 
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivelCharla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
Charla TestingUy 2019 - Cypress.io - Automatización al siguiente nivel
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
ATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de AceptaciónATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de Aceptación
 
Pedro sebastián mingo. peopleware en el testing
Pedro sebastián mingo. peopleware en el testingPedro sebastián mingo. peopleware en el testing
Pedro sebastián mingo. peopleware en el testing
 
No debuggearás - Introducción al Unit Testing y TDD
No debuggearás - Introducción al Unit Testing y TDDNo debuggearás - Introducción al Unit Testing y TDD
No debuggearás - Introducción al Unit Testing y TDD
 
Presentación Agile Testing
Presentación Agile TestingPresentación Agile Testing
Presentación Agile Testing
 
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1
 

Similar a Tdd desde las trincheras

Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
Diego Caballero
 
Mas alla de javascript con typescript
Mas alla de javascript con typescriptMas alla de javascript con typescript
Mas alla de javascript con typescript
Leonardo Micheloni
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticas
Ricard Clau
 
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
Javier_J
 
Codigo Escalable WDT
Codigo Escalable WDTCodigo Escalable WDT
Codigo Escalable WDT
Edwin Cruz
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
Carlos Buenosvinos
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mock
Eloi Poch
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales
atSistemas
 
Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020
Demian Raschkovan
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
psluaces
 
Unit test and Code Coverage + Devops
Unit test and Code Coverage + DevopsUnit test and Code Coverage + Devops
Unit test and Code Coverage + Devops
Miguel Angel Teheran Garcia
 
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
TestingUy
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
webcat
 
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
SolidQ
 
DevOps, automatización y... ¿cultura?
DevOps, automatización y... ¿cultura?DevOps, automatización y... ¿cultura?
DevOps, automatización y... ¿cultura?
Ernesto Cardenas Cangahuala
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps Argentina
CSA Argentina
 
Solid con typescript
Solid con typescriptSolid con typescript
Solid con typescript
Leonardo Micheloni
 
Rooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalez
Rooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalezRooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalez
Rooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalez
RootedCON
 

Similar a Tdd desde las trincheras (20)

Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
 
Mas alla de javascript con typescript
Mas alla de javascript con typescriptMas alla de javascript con typescript
Mas alla de javascript con typescript
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticas
 
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
 
Codigo Escalable WDT
Codigo Escalable WDTCodigo Escalable WDT
Codigo Escalable WDT
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mock
 
TDD
TDDTDD
TDD
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales
 
Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
 
Unit test and Code Coverage + Devops
Unit test and Code Coverage + DevopsUnit test and Code Coverage + Devops
Unit test and Code Coverage + Devops
 
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
 
DevOps, automatización y... ¿cultura?
DevOps, automatización y... ¿cultura?DevOps, automatización y... ¿cultura?
DevOps, automatización y... ¿cultura?
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps Argentina
 
S1.pdf
S1.pdfS1.pdf
S1.pdf
 
Solid con typescript
Solid con typescriptSolid con typescript
Solid con typescript
 
Rooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalez
Rooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalezRooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalez
Rooted2020 dev secops-into_the_unknown_-_jesus_alcalde_-_daniel_gonzalez
 

Más de Leonardo Micheloni

Docker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfDocker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdf
Leonardo Micheloni
 
Docker dotnet netbaires
Docker dotnet netbairesDocker dotnet netbaires
Docker dotnet netbaires
Leonardo Micheloni
 
Workshop clean code javascript
Workshop clean code javascriptWorkshop clean code javascript
Workshop clean code javascript
Leonardo Micheloni
 
2019 commit solid typescript
2019 commit solid typescript2019 commit solid typescript
2019 commit solid typescript
Leonardo Micheloni
 
Docker Dotnet Málaga
Docker Dotnet MálagaDocker Dotnet Málaga
Docker Dotnet Málaga
Leonardo Micheloni
 
Pipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOpsPipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOps
Leonardo Micheloni
 
Docker for losers
Docker for losersDocker for losers
Docker for losers
Leonardo Micheloni
 
Clean code javascript + live coding
Clean code javascript + live codingClean code javascript + live coding
Clean code javascript + live coding
Leonardo Micheloni
 
Un viaje por Cosmos DB
Un viaje por Cosmos DBUn viaje por Cosmos DB
Un viaje por Cosmos DB
Leonardo Micheloni
 
Cosmos db gab2018
Cosmos db gab2018Cosmos db gab2018
Cosmos db gab2018
Leonardo Micheloni
 
Cosmos DB in a nutshell
Cosmos DB in a nutshellCosmos DB in a nutshell
Cosmos DB in a nutshell
Leonardo Micheloni
 
Esp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real timeEsp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real time
Leonardo Micheloni
 
Clean code javascript
Clean code javascriptClean code javascript
Clean code javascript
Leonardo Micheloni
 
Tdd y pair programming
Tdd y pair programmingTdd y pair programming
Tdd y pair programming
Leonardo Micheloni
 
Blockchain, smart contracts y azure
Blockchain, smart contracts y azureBlockchain, smart contracts y azure
Blockchain, smart contracts y azure
Leonardo Micheloni
 

Más de Leonardo Micheloni (15)

Docker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfDocker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdf
 
Docker dotnet netbaires
Docker dotnet netbairesDocker dotnet netbaires
Docker dotnet netbaires
 
Workshop clean code javascript
Workshop clean code javascriptWorkshop clean code javascript
Workshop clean code javascript
 
2019 commit solid typescript
2019 commit solid typescript2019 commit solid typescript
2019 commit solid typescript
 
Docker Dotnet Málaga
Docker Dotnet MálagaDocker Dotnet Málaga
Docker Dotnet Málaga
 
Pipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOpsPipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOps
 
Docker for losers
Docker for losersDocker for losers
Docker for losers
 
Clean code javascript + live coding
Clean code javascript + live codingClean code javascript + live coding
Clean code javascript + live coding
 
Un viaje por Cosmos DB
Un viaje por Cosmos DBUn viaje por Cosmos DB
Un viaje por Cosmos DB
 
Cosmos db gab2018
Cosmos db gab2018Cosmos db gab2018
Cosmos db gab2018
 
Cosmos DB in a nutshell
Cosmos DB in a nutshellCosmos DB in a nutshell
Cosmos DB in a nutshell
 
Esp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real timeEsp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real time
 
Clean code javascript
Clean code javascriptClean code javascript
Clean code javascript
 
Tdd y pair programming
Tdd y pair programmingTdd y pair programming
Tdd y pair programming
 
Blockchain, smart contracts y azure
Blockchain, smart contracts y azureBlockchain, smart contracts y azure
Blockchain, smart contracts y azure
 

Último

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 

Último (6)

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 

Tdd desde las trincheras

  • 1. TDD desde las trincheras Leonardo Micheloni @leomicheloni
  • 3. ¿Quién soy? • Leonardo Micheloni • +15 Programador • +10 años en Agile • Tokiota @leomicheloni @leomicheloni
  • 4. Objetivo • Comprender TDD • Contar experiencias • No “vender” la idea @leomicheloni
  • 5. ¿Qué es TDD? • Desarrollar a partir de los test • Escribir primero el test, luego el código que valida el test • Comenzar from scratch • Crear la versión más simple del código que haga pasar el test • Refactorizar • Baby steps @leomicheloni
  • 6. Estructura de un test • Setup • Ejecución • Validación • Cleanup @leomicheloni
  • 9. Terminología • Dummy • Solo datos • Stub • Datos condicionales • Mock • Comportamiento @leomicheloni
  • 11. Algunas recomendaciones • Keep unit small • Reducir el debugging • Si hay un bug, hacer un test • El código queda “autodocumentado” @leomicheloni
  • 12. ¿Qué permite TDD? • Comenzar sin depender de otros componentes • Mejorar la comprensión del negocio (fail fast) • Descubrir la API • Trabajar por iteraciones (pomodoro) • Que emerja la arquitectura • Detectar casos de uso @leomicheloni
  • 13. Qué requiere? • Ciertos conocimientos “avanzado” (como IoC) • Disciplina • Capacidad para separar el problema @leomicheloni
  • 14. Resultado • Pensar la solución a partir del uso • Mayor confianza en lo entregado • Mayor felicidad • Mayor calidad (refactor) • Evita el sobre-diseño • Evolución sólida => test @leomicheloni
  • 16. Experiencias • Proyectos legacy (funcionalidades nuevas) • Difícil comenzar desde cero • Hace falta práctica • No vale la pena en todo el código (code coverage) • Hace falta experiencia • Es necesario conocer ciertas herramientas • No es simple aplicarlo a todas las áreas (UI, etc.) • Puede dar una falsa sensación de seguridad @leomicheloni
  • 17. Grandes preguntas • ¿Se puede hacer siempre TDD? • ¿Cualquiera puede hacer TDD? • ¿Se puede aplicar en toda la aplicación? • ¿Queda el código “autodocumentado”? • ¿La aplicación es más confiable? • ¿Aumenta el costo de mantenimiento? • ¿Se puede aplicar en proyectos existentes? @leomicheloni
  • 20. Links útiles • TDD Katas: http://osherove.com/tdd-kata-1/ • Fizz Buzz Kata: https://opencredo.com/blogs/tdd-fizzbuzz-junit- theories/ • Bob Martin: https://blog.cleancoder.com/ • TDD Wars: https://www.codewars.com/ • Mi canal de Youtube: https://www.youtube.com/channel/UCQlqd6byJpXtGuYrL4cElgw • Mi blog: http://leomicheloni.com @leomicheloni