Como hacer tdd y no morir en el intento

agile software development & services
Cómo hacer TDD y no morir
en el intento
Agiles 2015
Hernán Wilkinson
Twitter: @HernanWilkinson
Blog: bog.10pines.com
www.10pines.com
DISCLAIMER
Qué es TDD?
Es TDD esto?
No! Así es cómo se hace TDD
Cuál es la esencia de TDD?
Qué es TDD?
Es una Técnica de Aprendizaje
 Iterativa e Incremental
Constructivista
Basada en Feedback Inmediato
Que recuerda todo lo aprendido
Y permite asegurarnos de no haber
“desaprendido”
Incluye análisis, diseño, programación y
testing
Software:
Modelo Computable de un Dominio de
Problema de la Realidad
Desarrollo de Software:
Proceso de Aprendizaje
(Adquisición y Representación de
Conoc.)
¿Cómo se hace TDD?
1) Escribir un test
- Debe ser el más sencillo que se nos ocurra
- Debe fallar al correrlo
2) Correr todos los tests
- Si hay errores, implementar lo mínimo necesario
para que pasen y GOTO 2
3) Reflexiono - ¿Se puede mejorar el código?
- Sí -> Refactorizar. GOTO 2
- No -> GOTO 1
Ejemplo
▶ Modelar un Calendario de días feriados al que se le pueda
preguntar si una fecha es feriado o no
▶ Se pueda indicar qué días son feriados de la siguiente
manera:
– Por medio de un día de la semana, ej. Sábado
– Por medio de un día de un mes, ej. 25 de Diciembre
– Por medio de un día particular, ej. 20/4/2012
Los 10 mandamientos técnicos de TDD
Escribirás el test
primero
Siempre resolverás el caso más
sencillo primero
Asertarás en tus tests
(un test sin assert no es un test)
No escribirás más de un test a la vez
No creerás que TDD es acerca de Unit
Testing únicamante
Nombrarás tus Test según el QUE y no
según el COMO
Verificarás un único caso funcional por
test
No testearás lo mismo más de una vez
Mantendrás tus test “limpios”, ya que
son un sistema más
No empezarás testeando interfaces,
empezarás testeando la lógica de
negocio
No usarás Bases de Datos relacionales
mientras realizas TDD
No realizarás TDD usando sistemas
externos
No “mockearas” a tu esposa!
Entenderás que TDD no implica buen
diseño
No te preocuparás por performance al
principio
Amarás testear tanto como programar!
Practica, Practica, Practica
Preguntas?
agile software development & services
Muchas gracias!
info@10pines.com
www.10Pines.com
twitter: @10Pines
Argentina
Tel.: +54 (11) 4780-2460
Alem 693, 5B
Buenos Aires
1 of 29

Recommended

Soporte tecnico by
Soporte tecnicoSoporte tecnico
Soporte tecnicopbcccccccccc
2.8K views18 slides
Introducción a Ubuntu by
Introducción a UbuntuIntroducción a Ubuntu
Introducción a Ubunturoipaz
13.5K views14 slides
Group Policy by
Group PolicyGroup Policy
Group PolicyChris Watson
2.6K views45 slides
Apresentação Linux by
Apresentação LinuxApresentação Linux
Apresentação Linuxguestca430
16.9K views9 slides
História do linux ppt by
História do linux pptHistória do linux ppt
História do linux pptshade09
12.2K views15 slides
Arquitectura de microservicios by
Arquitectura de microserviciosArquitectura de microservicios
Arquitectura de microserviciosFelix Liberio
473 views19 slides

More Related Content

What's hot

PRTG NETWORK MONITOR by
PRTG NETWORK MONITORPRTG NETWORK MONITOR
PRTG NETWORK MONITORpedrooscar12
1.4K views15 slides
Introdução ao Linux by
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linuxguest82cc1d
4.4K views43 slides
eラーニングシステム「SLAP」ご紹介資料 by
eラーニングシステム「SLAP」ご紹介資料eラーニングシステム「SLAP」ご紹介資料
eラーニングシステム「SLAP」ご紹介資料ssuser6f1b7a
1.7K views24 slides
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope... by
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...Sérgio Souza Costa
6.6K views46 slides
Ubuntu - Sistemas Operativos by
Ubuntu - Sistemas OperativosUbuntu - Sistemas Operativos
Ubuntu - Sistemas OperativosXavier Carrión
5.2K views24 slides

What's hot(20)

PRTG NETWORK MONITOR by pedrooscar12
PRTG NETWORK MONITORPRTG NETWORK MONITOR
PRTG NETWORK MONITOR
pedrooscar121.4K views
Introdução ao Linux by guest82cc1d
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
guest82cc1d4.4K views
eラーニングシステム「SLAP」ご紹介資料 by ssuser6f1b7a
eラーニングシステム「SLAP」ご紹介資料eラーニングシステム「SLAP」ご紹介資料
eラーニングシステム「SLAP」ご紹介資料
ssuser6f1b7a1.7K views
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope... by Sérgio Souza Costa
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...
Sérgio Souza Costa6.6K views
Under the Hood: Model-Based Development in the Automotive Industry by Darren ... by Jordi Cabot
Under the Hood: Model-Based Development in the Automotive Industry by Darren ...Under the Hood: Model-Based Development in the Automotive Industry by Darren ...
Under the Hood: Model-Based Development in the Automotive Industry by Darren ...
Jordi Cabot5.9K views
Gerenciamento de Vulnerabilidades em Aplicações e Servidores Web by Eduardo Lanna
Gerenciamento de Vulnerabilidades em Aplicações e Servidores WebGerenciamento de Vulnerabilidades em Aplicações e Servidores Web
Gerenciamento de Vulnerabilidades em Aplicações e Servidores Web
Eduardo Lanna1.4K views
systemd by nussbauml
systemdsystemd
systemd
nussbauml6.7K views
Administración y Auditoria de Centros de Datos. Plan de Trabajo by Ileana Garza Ibarra
Administración y Auditoria de Centros de Datos. Plan de TrabajoAdministración y Auditoria de Centros de Datos. Plan de Trabajo
Administración y Auditoria de Centros de Datos. Plan de Trabajo
Ileana Garza Ibarra5.6K views
Androidへのdebianインストール奮闘記 by Tomoya Kawanishi
Androidへのdebianインストール奮闘記Androidへのdebianインストール奮闘記
Androidへのdebianインストール奮闘記
Tomoya Kawanishi9.7K views
Curso Sistema operativo e internet by Oscar Guevara
Curso Sistema operativo e internetCurso Sistema operativo e internet
Curso Sistema operativo e internet
Oscar Guevara1.9K views
MéTodos De EvaluacióN De Usabilidad by Miguel Guinalíu
MéTodos De EvaluacióN De UsabilidadMéTodos De EvaluacióN De Usabilidad
MéTodos De EvaluacióN De Usabilidad
Miguel Guinalíu8.1K views
Arquitectura y caracteristicas de los sistemas operativos windows by slipkdany21
Arquitectura y caracteristicas de los sistemas operativos windowsArquitectura y caracteristicas de los sistemas operativos windows
Arquitectura y caracteristicas de los sistemas operativos windows
slipkdany2112.6K views
Sistema operativo novell by Ivane Valdez
Sistema operativo novellSistema operativo novell
Sistema operativo novell
Ivane Valdez14K views
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018 by devCAT Studio, NEXON
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018

Viewers also liked

Como escribir buenos tests al hacer TDD by
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDHernan Wilkinson
3.3K views101 slides
Arithmetic with measures on dynamically typed object oriented languages by
Arithmetic with measures on dynamically typed object oriented languagesArithmetic with measures on dynamically typed object oriented languages
Arithmetic with measures on dynamically typed object oriented languagesHernan Wilkinson
612 views21 slides
Confianza+Participación+Transparencia= Refactorizando la empresa by
Confianza+Participación+Transparencia= Refactorizando la empresaConfianza+Participación+Transparencia= Refactorizando la empresa
Confianza+Participación+Transparencia= Refactorizando la empresaHernan Wilkinson
522 views22 slides
Objects: The Misunderstood Paradigm by
Objects: The Misunderstood ParadigmObjects: The Misunderstood Paradigm
Objects: The Misunderstood ParadigmHernan Wilkinson
1.6K views27 slides
A new object oriented model of the gregorian calendar by
A new object oriented model of the gregorian calendarA new object oriented model of the gregorian calendar
A new object oriented model of the gregorian calendarHernan Wilkinson
917 views23 slides
Growing an open participative horizontal and based on trust company by
Growing an open participative horizontal and based on trust companyGrowing an open participative horizontal and based on trust company
Growing an open participative horizontal and based on trust companyHernan Wilkinson
791 views21 slides

Viewers also liked(20)

Como escribir buenos tests al hacer TDD by Hernan Wilkinson
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDD
Hernan Wilkinson3.3K views
Arithmetic with measures on dynamically typed object oriented languages by Hernan Wilkinson
Arithmetic with measures on dynamically typed object oriented languagesArithmetic with measures on dynamically typed object oriented languages
Arithmetic with measures on dynamically typed object oriented languages
Hernan Wilkinson612 views
Confianza+Participación+Transparencia= Refactorizando la empresa by Hernan Wilkinson
Confianza+Participación+Transparencia= Refactorizando la empresaConfianza+Participación+Transparencia= Refactorizando la empresa
Confianza+Participación+Transparencia= Refactorizando la empresa
Hernan Wilkinson522 views
Objects: The Misunderstood Paradigm by Hernan Wilkinson
Objects: The Misunderstood ParadigmObjects: The Misunderstood Paradigm
Objects: The Misunderstood Paradigm
Hernan Wilkinson1.6K views
A new object oriented model of the gregorian calendar by Hernan Wilkinson
A new object oriented model of the gregorian calendarA new object oriented model of the gregorian calendar
A new object oriented model of the gregorian calendar
Hernan Wilkinson917 views
Growing an open participative horizontal and based on trust company by Hernan Wilkinson
Growing an open participative horizontal and based on trust companyGrowing an open participative horizontal and based on trust company
Growing an open participative horizontal and based on trust company
Hernan Wilkinson791 views
Técnicas y herramientas para que la computadora haga más y el programador m... by Hernan Wilkinson
Técnicas y herramientas para que la computadora haga más y el programador m...Técnicas y herramientas para que la computadora haga más y el programador m...
Técnicas y herramientas para que la computadora haga más y el programador m...
Hernan Wilkinson854 views
Desarrollando sistemas con metodologías y técnicas agiles by Hernan Wilkinson
Desarrollando sistemas con metodologías y técnicas agilesDesarrollando sistemas con metodologías y técnicas agiles
Desarrollando sistemas con metodologías y técnicas agiles
Hernan Wilkinson957 views
Programming Languages and their influence in Thinking by Hernan Wilkinson
Programming Languages and their influence in ThinkingProgramming Languages and their influence in Thinking
Programming Languages and their influence in Thinking
Hernan Wilkinson1.7K views
Eliminando la brecha entre clientes y desarrolladores mediante BDD by Jorge Gamba
Eliminando la brecha entre clientes y desarrolladores mediante BDDEliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDD
Jorge Gamba2.1K views
Refactoring a Company - 2nd Presentation by Hernan Wilkinson
Refactoring a Company - 2nd PresentationRefactoring a Company - 2nd Presentation
Refactoring a Company - 2nd Presentation
Hernan Wilkinson1.2K views
Encadenamiento de refactorings para generar cambios Agiles de Diseño by Hernan Wilkinson
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 Wilkinson825 views
Programming Language Technical debt and their influence in Thinking and Desgin by Hernan Wilkinson
Programming Language Technical debt and their influence in Thinking and DesginProgramming Language Technical debt and their influence in Thinking and Desgin
Programming Language Technical debt and their influence in Thinking and Desgin
Hernan Wilkinson1.2K views

Similar to Como hacer tdd y no morir en el intento

TDD Code Retreat by
TDD Code RetreatTDD Code Retreat
TDD Code RetreatMariano Stampella
389 views12 slides
Lima agile day tdd con visual studio 2010 by
Lima agile day   tdd con visual studio 2010Lima agile day   tdd con visual studio 2010
Lima agile day tdd con visual studio 2010Gustavo Veliz
536 views11 slides
Introducción a tdd by
Introducción a tddIntroducción a tdd
Introducción a tddRonny Ancorini Rodríguez
521 views18 slides
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas by
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
460 views41 slides
Estrategias ágiles para incrementar calidad al construir y probar software by
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareDomingo Suarez Torres
2.3K views58 slides
Introducción a TDD by
Introducción a TDDIntroducción a TDD
Introducción a TDDAdrian Marino
455 views16 slides

Similar to Como hacer tdd y no morir en el intento(20)

Lima agile day tdd con visual studio 2010 by Gustavo Veliz
Lima agile day   tdd con visual studio 2010Lima agile day   tdd con visual studio 2010
Lima agile day tdd con visual studio 2010
Gustavo Veliz536 views
Estrategias ágiles para incrementar calidad al construir y probar software by Domingo Suarez Torres
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar software
Joseluisseijoreig samuelsánchezmuñoz by joseluisseijo
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
joseluisseijo184 views
Metodologías Aágiles: TDD (Test Driven development) by Martín Machuca
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)
Martín Machuca253 views
Cursotdd 141202105217-conversion-gate01 by Javier Morales
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
Javier Morales80 views
Las Claves del Desarrollo Dirigido por Pruebas (o TDD) by Javier_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)
Javier_J3.1K views
Apuntes #XPweek by Carlos Ble
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
Carlos Ble442 views
Taller SOLID Refactor by Agile Spain
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID Refactor
Agile Spain891 views
Introducción a TDD by Fran Grau
Introducción a TDDIntroducción a TDD
Introducción a TDD
Fran Grau468 views

More from Hernan Wilkinson

Hacia una síntesis de diseño a partir de entender qué es modelar con software by
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHernan Wilkinson
211 views108 slides
Live Typing - California Smalltalkers by
Live Typing - California SmalltalkersLive Typing - California Smalltalkers
Live Typing - California SmalltalkersHernan Wilkinson
558 views58 slides
Buenos Aires vs. (London vs. Chicago) Agiles 2020 by
Buenos Aires vs. (London vs. Chicago) Agiles 2020Buenos Aires vs. (London vs. Chicago) Agiles 2020
Buenos Aires vs. (London vs. Chicago) Agiles 2020Hernan Wilkinson
197 views88 slides
LiveTyping - Anotación automática de tipos para lenguajes dinámicos by
LiveTyping - Anotación automática de tipos para lenguajes dinámicosLiveTyping - Anotación automática de tipos para lenguajes dinámicos
LiveTyping - Anotación automática de tipos para lenguajes dinámicosHernan Wilkinson
219 views66 slides
LiveTyping: Update and What is next by
LiveTyping: Update and What is nextLiveTyping: Update and What is next
LiveTyping: Update and What is nextHernan Wilkinson
317 views55 slides
Cuis smalltalk past present and future by
Cuis smalltalk past present and futureCuis smalltalk past present and future
Cuis smalltalk past present and futureHernan Wilkinson
357 views23 slides

More from Hernan Wilkinson(17)

Hacia una síntesis de diseño a partir de entender qué es modelar con software by Hernan Wilkinson
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con software
Hernan Wilkinson211 views
Live Typing - California Smalltalkers by Hernan Wilkinson
Live Typing - California SmalltalkersLive Typing - California Smalltalkers
Live Typing - California Smalltalkers
Hernan Wilkinson558 views
Buenos Aires vs. (London vs. Chicago) Agiles 2020 by Hernan Wilkinson
Buenos Aires vs. (London vs. Chicago) Agiles 2020Buenos Aires vs. (London vs. Chicago) Agiles 2020
Buenos Aires vs. (London vs. Chicago) Agiles 2020
Hernan Wilkinson197 views
LiveTyping - Anotación automática de tipos para lenguajes dinámicos by Hernan Wilkinson
LiveTyping - Anotación automática de tipos para lenguajes dinámicosLiveTyping - Anotación automática de tipos para lenguajes dinámicos
LiveTyping - Anotación automática de tipos para lenguajes dinámicos
Hernan Wilkinson219 views
Cuis smalltalk past present and future by Hernan Wilkinson
Cuis smalltalk past present and futureCuis smalltalk past present and future
Cuis smalltalk past present and future
Hernan Wilkinson357 views
Live Typing - Automatic Type Annotation that improves the Programming eXperie... by Hernan Wilkinson
Live Typing- Automatic Type Annotation that improves the Programming eXperie...Live Typing- Automatic Type Annotation that improves the Programming eXperie...
Live Typing - Automatic Type Annotation that improves the Programming eXperie...
Hernan Wilkinson325 views
El Desarrollo de Software como debería Ser - PyConAr 2018 by Hernan Wilkinson
El Desarrollo de Software como debería Ser - PyConAr 2018El Desarrollo de Software como debería Ser - PyConAr 2018
El Desarrollo de Software como debería Ser - PyConAr 2018
Hernan Wilkinson845 views
Lessons Learned Implementing Refactorings by Hernan Wilkinson
Lessons Learned Implementing RefactoringsLessons Learned Implementing Refactorings
Lessons Learned Implementing Refactorings
Hernan Wilkinson609 views
El Desarrollo de Software como debería Ser - Nerdear.la 2018 by Hernan Wilkinson
El Desarrollo de Software como debería Ser - Nerdear.la 2018El Desarrollo de Software como debería Ser - Nerdear.la 2018
El Desarrollo de Software como debería Ser - Nerdear.la 2018
Hernan Wilkinson693 views
El Desarrollo de Software como debería Ser by Hernan Wilkinson
El Desarrollo de Software como debería SerEl Desarrollo de Software como debería Ser
El Desarrollo de Software como debería Ser
Hernan Wilkinson1.9K views

Recently uploaded

Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx by
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxPeña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxMOISESPENAANAYA
5 views8 slides
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx by
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxDEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxKarenlisethGuioAlbin
8 views8 slides
MasterMind.pdf by
MasterMind.pdfMasterMind.pdf
MasterMind.pdfrtovarfernandez
17 views5 slides
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1 by
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1Angel Borroy López
5 views22 slides
Operations & Data Graph by
Operations & Data GraphOperations & Data Graph
Operations & Data GraphNeo4j
38 views25 slides
Aws Community Day Guatemala Criptografia con AWS KMS by
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSMario IC
25 views42 slides

Recently uploaded(6)

Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx by MOISESPENAANAYA
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxPeña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
MOISESPENAANAYA5 views
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1 by Angel Borroy López
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1
Operations & Data Graph by Neo4j
Operations & Data GraphOperations & Data Graph
Operations & Data Graph
Neo4j38 views
Aws Community Day Guatemala Criptografia con AWS KMS by Mario IC
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMS
Mario IC25 views

Como hacer tdd y no morir en el intento