SlideShare una empresa de Scribd logo
1 de 31
TDD
desde las trincheras
Juan Lladó
@jllado
Travel Compositor
http://online.travelcompositor.com
Motivación de la charla
Motivación de la charla
Excusas
● Superiores (jefes de proyecto, gerentes, etc) que
no permiten el uso de TDD
● Proyectos legacy y código muy difícil de mantener
● Plazos de proyecto muy cortos. Sin tiempo de
practicar TDD
Superiores que no permiten el uso
de TDD
● ¿Hay que pedir permiso para pensar?
● ¿Pedimos permiso para practicar o para
aprender?
Proyectos legacy
● No hay nada que te impida desarrollar nueva
funcionalidad usando TDD
● Aunque... puedes necesitar dependencias
del proyecto que te dificulten los tests
Plazos de proyecto muy cortos
● Cuando programo dedico más tiempo a pensar
que a escribir código
● Trabajar a destajo puede dar la sensación de
más velocidad pero luego se paga más caro
● La velocidad debe ser una consecuencia de
hacerlo bien, no una aptitud
Disclaimer
eXtreme Programming
XP: valores
● Simplicidad
● Comunicación
● Retroalminetanción
● Coraje
● Respeto
TDD
TDD
http://blog.jbrains.ca/
Escuelas de TDD
● Classical/Inside-Out (Chicago)
● Mockist/Outside-In (London)
– Doble de test:
http://www.martinfowler.com/bliki/TestDouble.html
¡Quiero práctiar TDD!
Valora tus conocimientos
● Testing
● Patrones y principios de diseño
● Refactoring/Herramientas de trabajo
¡Lee!
● Clean Code (Robert C. Martin)
● TDD by Example (Kent Beck)
● Effective Unit Testing (Lasse Koskela)
● Growing Object-Oriented Software, Guided by
Tests (Steve Freeman y Nat Pryce)
● Diseño Ágil con TDD (Carlos Blé)
Screencasts
● Kata de las Cartas (Carlos Blé)
https://www.youtube.com/watch?v=LJQnxDZQHoo
● Testing and Refactoring Legacy Code (Sandro Mancuso)
https://www.youtube.com/watch?v=_NnElPO5BU0
● Outside-In TDD (Sando Mancuso)
https://www.youtube.com/watch?v=XHnuMjah6ps
¡Practica!
Encontrar situaciones cómodas donde
poder practicar sin presión
Katas
● Lo importante de una kata es aprender, no terminarla
● Cuando ves que has llegado a un callejón sin salida, no
tengas miedo a borrar código y empezar de cero (o
pasos anteriores)
● Compara tus soluciones con las de otros:
– https://github.com/12meses12katas
– http://codingdojo.org
– http://www.solveet.com
Katas
http://www.slideshare.net/PedroSantos205/software-craftmanship-coaching
Practica en el trabajo
● Antes de probar algo nuevo, tienes que
conocer el sistema
● Busca partes del proyecto donde te
encuentres cómodo
● Practica de forma progresiva
Metódico/Constante
● Lista de ejemplo antes de hacer el primer test
● Pon atención a los tres etapas: red, green y
blue. Las tres son importantes
● Baby steps. Escribir el código mínimo para
pasar los tests
● Los tests también se tienen que mantener. En
la fase de refactor hay que revisarlos
● Keep It Simple. Less astonishment principle
● Usa buenos nombre
Aún así, me atasco practicando TDD
● The Transformation Priority Premise
https://8thlight.com/blog/uncle-
bob/2013/05/27/TheTransformationPriorityPr
emise.html
● Why do you get stuck? Because you were
not adding sufficient generality to the
production code
http://blog.cleancoder.com/uncle-
bob/2014/12/17/TheCyclesOfTDD.html
Bugs (nuevo mindset)
● Antes de corregir el bug, añade un test
que demuestre que falla
● A continuación, resuelve el bug y certifica
que el test está en verde
● La regla del Boy Scout
Four rules of simple design
● Passes the tests
● Reveals intention
● No duplication
● Fewest elemens
SOLID
● Single responsibility principle
● Open/closed principle
● Liskov substitution principle
● Interface segregation principle
● Dependency inversion principle
¡No pares de aprender!
¿Preocupado por la velocidad?
¿Preguntas?
¡GRACIAS!
Juan Lladó
@jllado

Más contenido relacionado

La actualidad más candente

Cómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCMCómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCM233 Grados de TI
 
Cross management experiences. mis 7 conclusiones
Cross management experiences.  mis 7 conclusionesCross management experiences.  mis 7 conclusiones
Cross management experiences. mis 7 conclusionesRafael Bermúdez Míguez
 
¿Cuál es tu excusa para no tener tests?
¿Cuál es tu excusa para no tener tests?¿Cuál es tu excusa para no tener tests?
¿Cuál es tu excusa para no tener tests?Pablo Bouzada
 
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
 
Compartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de KanbanCompartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de Kanban233 Grados de TI
 
Plugin para-joomla-45-minutos
Plugin para-joomla-45-minutosPlugin para-joomla-45-minutos
Plugin para-joomla-45-minutosRoberto Segura
 
Python - Programando fácil, rápido y gratis
Python - Programando fácil, rápido y gratisPython - Programando fácil, rápido y gratis
Python - Programando fácil, rápido y gratisJuan Percy Rojas Cruz
 
TDD y Python
TDD y PythonTDD y Python
TDD y PythonJavier_J
 
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaIntroduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaCarlos Ble
 
Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...
Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...
Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...TestingUy
 
Charla evento TestingUY 2017 - Automatización en gran escala
Charla evento TestingUY 2017 - Automatización en gran escalaCharla evento TestingUY 2017 - Automatización en gran escala
Charla evento TestingUY 2017 - Automatización en gran escalaTestingUy
 
Unidad 02 metodología para solucionar un problema
Unidad 02   metodología para solucionar un problemaUnidad 02   metodología para solucionar un problema
Unidad 02 metodología para solucionar un problemaLorenzo Alejo
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Volviendo a poner el “soft” en software
Volviendo a poner el “soft” en softwareVolviendo a poner el “soft” en software
Volviendo a poner el “soft” en softwareDanijel Arsenovski
 
¿Como crear videojueos? Los principales métodos y lenguajes
¿Como crear videojueos? Los principales métodos y lenguajes¿Como crear videojueos? Los principales métodos y lenguajes
¿Como crear videojueos? Los principales métodos y lenguajesDaniel Fernández
 

La actualidad más candente (20)

BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Cómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCMCómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCM
 
Actividad 37
Actividad 37Actividad 37
Actividad 37
 
Cross management experiences. mis 7 conclusiones
Cross management experiences.  mis 7 conclusionesCross management experiences.  mis 7 conclusiones
Cross management experiences. mis 7 conclusiones
 
Project Management for Developers [ES]
Project Management for Developers [ES]Project Management for Developers [ES]
Project Management for Developers [ES]
 
¿Cuál es tu excusa para no tener tests?
¿Cuál es tu excusa para no tener tests?¿Cuál es tu excusa para no tener tests?
¿Cuál es tu excusa para no tener tests?
 
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
 
Compartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de KanbanCompartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de Kanban
 
Plugin para-joomla-45-minutos
Plugin para-joomla-45-minutosPlugin para-joomla-45-minutos
Plugin para-joomla-45-minutos
 
Python - Programando fácil, rápido y gratis
Python - Programando fácil, rápido y gratisPython - Programando fácil, rápido y gratis
Python - Programando fácil, rápido y gratis
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaIntroduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
 
Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...
Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...
Charla evento TestingUY 2017 - El mokeo como herramienta para pruebas de Soft...
 
Charla evento TestingUY 2017 - Automatización en gran escala
Charla evento TestingUY 2017 - Automatización en gran escalaCharla evento TestingUY 2017 - Automatización en gran escala
Charla evento TestingUY 2017 - Automatización en gran escala
 
Unidad 02 metodología para solucionar un problema
Unidad 02   metodología para solucionar un problemaUnidad 02   metodología para solucionar un problema
Unidad 02 metodología para solucionar un problema
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Volviendo a poner el “soft” en software
Volviendo a poner el “soft” en softwareVolviendo a poner el “soft” en software
Volviendo a poner el “soft” en software
 
Stop the agile micro-management
Stop the agile micro-managementStop the agile micro-management
Stop the agile micro-management
 
¿Como crear videojueos? Los principales métodos y lenguajes
¿Como crear videojueos? Los principales métodos y lenguajes¿Como crear videojueos? Los principales métodos y lenguajes
¿Como crear videojueos? Los principales métodos y lenguajes
 

Destacado

Bal Bharati Public School Principal Meenu Goswami
Bal Bharati Public School  Principal Meenu GoswamiBal Bharati Public School  Principal Meenu Goswami
Bal Bharati Public School Principal Meenu GoswamiMeenu Goswami
 
Principais delineamentos de pesquisa
Principais delineamentos de pesquisaPrincipais delineamentos de pesquisa
Principais delineamentos de pesquisaAlana Bastos
 
Bal bharati public school Principal, Ms. Meenu Goswami
Bal bharati public school  Principal, Ms. Meenu GoswamiBal bharati public school  Principal, Ms. Meenu Goswami
Bal bharati public school Principal, Ms. Meenu GoswamiMeenu Goswami
 
Ms. Meenu Goswami , Principal Bal bharati public school
Ms. Meenu Goswami , Principal  Bal bharati public schoolMs. Meenu Goswami , Principal  Bal bharati public school
Ms. Meenu Goswami , Principal Bal bharati public schoolMeenu Goswami
 
Tousif_CV__OIL_FIELD.PDF
Tousif_CV__OIL_FIELD.PDFTousif_CV__OIL_FIELD.PDF
Tousif_CV__OIL_FIELD.PDFTOUSIF HUSSAIN
 
Enoch_Resume Updated Jan '17
Enoch_Resume Updated Jan '17Enoch_Resume Updated Jan '17
Enoch_Resume Updated Jan '17Enoch Raj
 

Destacado (9)

Bal Bharati Public School Principal Meenu Goswami
Bal Bharati Public School  Principal Meenu GoswamiBal Bharati Public School  Principal Meenu Goswami
Bal Bharati Public School Principal Meenu Goswami
 
Paper I
Paper I Paper I
Paper I
 
Principais delineamentos de pesquisa
Principais delineamentos de pesquisaPrincipais delineamentos de pesquisa
Principais delineamentos de pesquisa
 
Curriculam Vitae
Curriculam VitaeCurriculam Vitae
Curriculam Vitae
 
Bal bharati public school Principal, Ms. Meenu Goswami
Bal bharati public school  Principal, Ms. Meenu GoswamiBal bharati public school  Principal, Ms. Meenu Goswami
Bal bharati public school Principal, Ms. Meenu Goswami
 
Ms. Meenu Goswami , Principal Bal bharati public school
Ms. Meenu Goswami , Principal  Bal bharati public schoolMs. Meenu Goswami , Principal  Bal bharati public school
Ms. Meenu Goswami , Principal Bal bharati public school
 
عیش و نوش
عیش و نوشعیش و نوش
عیش و نوش
 
Tousif_CV__OIL_FIELD.PDF
Tousif_CV__OIL_FIELD.PDFTousif_CV__OIL_FIELD.PDF
Tousif_CV__OIL_FIELD.PDF
 
Enoch_Resume Updated Jan '17
Enoch_Resume Updated Jan '17Enoch_Resume Updated Jan '17
Enoch_Resume Updated Jan '17
 

Similar a Tdd desde las_trincheras

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
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasOrlando Bustos Mateluna
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweekCarlos Ble
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDDFran Grau
 
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de OdooJornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de OdooPedro Manuel Baeza Romero
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd introfperezplain
 
Clase 1 - Introducción al mundo ágil I.pptx
Clase 1 - Introducción al mundo ágil I.pptxClase 1 - Introducción al mundo ágil I.pptx
Clase 1 - Introducción al mundo ágil I.pptxsole41
 
METODOLOGIAS AGILES
METODOLOGIAS AGILESMETODOLOGIAS AGILES
METODOLOGIAS AGILESPilar Pardo
 
Taller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDTaller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDAlea Soluciones, S.L.
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasRicard Clau
 
Introducción a Programa-me - Concurso español de programacion
Introducción a Programa-me - Concurso español de programacionIntroducción a Programa-me - Concurso español de programacion
Introducción a Programa-me - Concurso español de programacionJosé Ráez Rodríguez
 
Plantillas en Drupal 6
Plantillas en Drupal 6Plantillas en Drupal 6
Plantillas en Drupal 6Manuel Garcia
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 

Similar a Tdd desde las_trincheras (20)

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
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Programación Extrema (XP)
Programación Extrema (XP)Programación Extrema (XP)
Programación Extrema (XP)
 
Emergence
EmergenceEmergence
Emergence
 
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de OdooJornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
Clase 1 - Introducción al mundo ágil I.pptx
Clase 1 - Introducción al mundo ágil I.pptxClase 1 - Introducción al mundo ágil I.pptx
Clase 1 - Introducción al mundo ágil I.pptx
 
Scrum
ScrumScrum
Scrum
 
METODOLOGIAS AGILES
METODOLOGIAS AGILESMETODOLOGIAS AGILES
METODOLOGIAS AGILES
 
10 - Unidad 3: PROCESOS TI - 3.2 Kanban
10 - Unidad 3: PROCESOS TI - 3.2 Kanban10 - Unidad 3: PROCESOS TI - 3.2 Kanban
10 - Unidad 3: PROCESOS TI - 3.2 Kanban
 
Taller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDTaller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDD
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticas
 
Introducción a Programa-me - Concurso español de programacion
Introducción a Programa-me - Concurso español de programacionIntroducción a Programa-me - Concurso español de programacion
Introducción a Programa-me - Concurso español de programacion
 
Plantillas en Drupal 6
Plantillas en Drupal 6Plantillas en Drupal 6
Plantillas en Drupal 6
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 

Ú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
 
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
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
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
 
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
 
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...
 
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
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
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
 
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
 
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 desde las_trincheras

  • 5. Excusas ● Superiores (jefes de proyecto, gerentes, etc) que no permiten el uso de TDD ● Proyectos legacy y código muy difícil de mantener ● Plazos de proyecto muy cortos. Sin tiempo de practicar TDD
  • 6. Superiores que no permiten el uso de TDD ● ¿Hay que pedir permiso para pensar? ● ¿Pedimos permiso para practicar o para aprender?
  • 7. Proyectos legacy ● No hay nada que te impida desarrollar nueva funcionalidad usando TDD ● Aunque... puedes necesitar dependencias del proyecto que te dificulten los tests
  • 8. Plazos de proyecto muy cortos ● Cuando programo dedico más tiempo a pensar que a escribir código ● Trabajar a destajo puede dar la sensación de más velocidad pero luego se paga más caro ● La velocidad debe ser una consecuencia de hacerlo bien, no una aptitud
  • 11. XP: valores ● Simplicidad ● Comunicación ● Retroalminetanción ● Coraje ● Respeto
  • 12. TDD
  • 14. Escuelas de TDD ● Classical/Inside-Out (Chicago) ● Mockist/Outside-In (London) – Doble de test: http://www.martinfowler.com/bliki/TestDouble.html
  • 16. Valora tus conocimientos ● Testing ● Patrones y principios de diseño ● Refactoring/Herramientas de trabajo
  • 17. ¡Lee! ● Clean Code (Robert C. Martin) ● TDD by Example (Kent Beck) ● Effective Unit Testing (Lasse Koskela) ● Growing Object-Oriented Software, Guided by Tests (Steve Freeman y Nat Pryce) ● Diseño Ágil con TDD (Carlos Blé)
  • 18. Screencasts ● Kata de las Cartas (Carlos Blé) https://www.youtube.com/watch?v=LJQnxDZQHoo ● Testing and Refactoring Legacy Code (Sandro Mancuso) https://www.youtube.com/watch?v=_NnElPO5BU0 ● Outside-In TDD (Sando Mancuso) https://www.youtube.com/watch?v=XHnuMjah6ps
  • 19. ¡Practica! Encontrar situaciones cómodas donde poder practicar sin presión
  • 20. Katas ● Lo importante de una kata es aprender, no terminarla ● Cuando ves que has llegado a un callejón sin salida, no tengas miedo a borrar código y empezar de cero (o pasos anteriores) ● Compara tus soluciones con las de otros: – https://github.com/12meses12katas – http://codingdojo.org – http://www.solveet.com
  • 22. Practica en el trabajo ● Antes de probar algo nuevo, tienes que conocer el sistema ● Busca partes del proyecto donde te encuentres cómodo ● Practica de forma progresiva
  • 23. Metódico/Constante ● Lista de ejemplo antes de hacer el primer test ● Pon atención a los tres etapas: red, green y blue. Las tres son importantes ● Baby steps. Escribir el código mínimo para pasar los tests ● Los tests también se tienen que mantener. En la fase de refactor hay que revisarlos ● Keep It Simple. Less astonishment principle ● Usa buenos nombre
  • 24. Aún así, me atasco practicando TDD ● The Transformation Priority Premise https://8thlight.com/blog/uncle- bob/2013/05/27/TheTransformationPriorityPr emise.html ● Why do you get stuck? Because you were not adding sufficient generality to the production code http://blog.cleancoder.com/uncle- bob/2014/12/17/TheCyclesOfTDD.html
  • 25. Bugs (nuevo mindset) ● Antes de corregir el bug, añade un test que demuestre que falla ● A continuación, resuelve el bug y certifica que el test está en verde ● La regla del Boy Scout
  • 26. Four rules of simple design ● Passes the tests ● Reveals intention ● No duplication ● Fewest elemens
  • 27. SOLID ● Single responsibility principle ● Open/closed principle ● Liskov substitution principle ● Interface segregation principle ● Dependency inversion principle
  • 28. ¡No pares de aprender!
  • 29. ¿Preocupado por la velocidad?