SlideShare uma empresa Scribd logo
1 de 20
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

Mais conteúdo relacionado

Mais procurados

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
 
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 TDDHernan 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 #PHPDS15Aitor Suso Gáceta
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasMiguel Angel
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID RefactorAgile 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ñoHernan Wilkinson
 
Clean code 9
Clean code 9Clean code 9
Clean code 9540deg
 
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 nivelTestingUy
 
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ónPaulo 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 testing233 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 TDDreyiyo
 
Presentación Agile Testing
Presentación Agile TestingPresentación Agile Testing
Presentación Agile Testingtbaires
 
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 1Jano González
 

Mais procurados (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
 

Semelhante 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 felizDiego Caballero
 
Mas alla de javascript con typescript
Mas alla de javascript con typescriptMas alla de javascript con typescript
Mas alla de javascript con typescriptLeonardo Micheloni
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasRicard 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/2014Javier_J
 
Codigo Escalable WDT
Codigo Escalable WDTCodigo Escalable WDT
Codigo Escalable WDTEdwin Cruz
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mockEloi 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 saturdaymadrid2020Demian Raschkovan
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simplepsluaces
 
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 @eturinowebcat
 
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
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaCSA Argentina
 
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_gonzalezRootedCON
 

Semelhante 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
 

Mais de Leonardo Micheloni

Mais 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
 

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