SlideShare una empresa de Scribd logo
1 de 15
Francisco Grau - 2014 @graux
• Conceptos Iniciales 
• Mitos entorno a TDD 
• Qué es TDD y de donde viene 
• TDD: Por qué y cual es su propósito 
• Entender el MANTRA de Test-Driven Development 
• Cómo se aplica, ejemplo práctico 
• Una herramienta más en el ciclo de desarrollo ágil 
• Áreas de aplicación 
• Otros aspectos a tener en cuenta 
• TDD en el entorno de desarrollo cuotidiano 
• Referencias e información adicional 
Francisco Grau - 2014 @graux
• Pruebas Unitarias (set up, validate, execute, clean up) 
• Metodologías Ágiles 
• Refáctoring 
• Deuda Técnica (technical debt) 
• Criterios de calidad de código 
• X-Driven Development 
Francisco Grau - 2014 @graux
• No sirve para GUIs o Front-end 
• No sirve para Leguajes de Scripting 
• No se puede probar programas multi-hilos 
• No se pueden probar bases de datos 
• No se debe probar software de terceros ** 
• No se pueden probar objetos distribuidos 
Francisco Grau - 2014 @graux
• Proceso de desarrollo: “Clean code that works” (Ron Jeffries) 
• Sistemas contabilidad – Smalltalk + alta cobertura de pruebas 
• En 2000-2003, Kent Beck como parte de eXtreme Programming 
• Evolución junto con las metodologías ágiles 
• Requiere disciplina y asimilación por parte del equipo de 
desarrollo 
• Curva de aprendizaje 
• Organización tiene que aceptar la inversión 
Francisco Grau - 2014 @graux
• Buen código: sin fallos, limpio, simple, organizado, mantenible… 
• Huir de ciclos destructivos: 
Estrés Pruebas 
• Conseguir ciclos virtuosos: 
Pruebas Seguridad 
• Impacto de cambios en código predictibles 
• Seguridad y Confianza 
• Menos Bugs *** 
• Entregables más continuos y fiables (agilidad) 
Francisco Grau - 2014 @graux
RED 
Compilador / Fallo 
GREEN 
REFACTOR 
Francisco Grau - 2014 @graux 
NUEVA PRUEBA
Las reglas: 
1. Nuevo código sólo se escribe cuando una prueba ha fallado * 
2. Eliminar todo tipo de duplicación 
3. Escribir las pruebas uno mismo/a 
4. Habilidad de introducir pequeños cambios rápidamente 
5. Diseño orientado a alta cohesión, componentes no acoplados y que faciliten las pruebas 
Recomendaciones: 
1. Empezar con Programación en Parejas 
2. Poco a poco, paciencia, no abrumarse los resultados iniciales y sin saltarse pasos (al principio) 
3. Actitud positiva y no sobre-complicar las pruebas 
4. Cierta experiencia con Patrones de Diseño 
* Excepciones: refactoring, código de pruebas, etc. 
Francisco Grau - 2014 @graux
Herramientas: 
• Papel y bolígrafo !!! 
• Compilador o validador (Lint) 
• Framework de pruebas (xUnit) 
Pasos: 
1. Listar requisitos 
2. Empezar por el más simple, menos dependencias, más rápido para “verde” 
3. Crear test que falle 
4. Arreglar errores de compilación 
5. De rojo a verde è rápido 
6. Eliminar Duplicaciones / Refactoring 
Francisco Grau - 2014 @graux
Técnicas de implementación (conseguir verde): 
1. Falsear (Fake it) 
2. Implementación obvia 
3. Triangulación (eliminación de duplicación entre pruebas y código) 
Francisco Grau - 2014 @graux
• TDD no soluciona problemas de procesos, pero ayuda 
• El contexto lo es todo, TDD no es una religión 
• Equipos ágiles acogen los cambios, TDD los asimila 
• Antes de {refactorizar, mejorar rendimiento, cambio versiones, 
cambio de integración} èTDD 
• Bug en lógica de negocio è nuevo test que falle è “verde” è 
eliminad duplicidad 
• TDD no se debe aplicar a medias o sin disciplina 
Francisco Grau - 2014 @graux
• Back-end / Front-end? 
• APIs? 
• Bases de Datos? 
• Video-juegos? 
• Start-ups / Enterprise? 
• Librerías y Frameworks 
Francisco Grau - 2014 @graux
• Qué probar? 
• Qué son buenas pruebas? Que es TDD para cada persona/ 
equipo? 
• TDD en proyectos ya existentes (extensos) 
• Más Pruebas: Funcionales, Integración, Compatibilidad y 
automatización (TDD no es una técnica de pruebas) 
• Refactoring requiere de patrones de diseño (para pruebas y para 
lógica de aplicación) 
Francisco Grau - 2014 @graux
• Fixtures, Fakes y Mocks 
• Acelerar las pruebas creando “test suites”. 
• Más Velocidad è Más pruebas 
• Entorno de pruebas integrado (xUnit+IDE, Codeception) 
• Qué ocurre con “si funciona no lo toques”? 
• Individualmente: Dejar última prueba fallando 
• Equipo: Integración Continua + Todas las pruebas pasan 
Francisco Grau - 2014 @graux
• Test-Driven Development: By Example – Kent Beck – Addison-Wesley 
• TDD Wikipedia: http://en.wikipedia.org/wiki/Test-driven_development 
• Introduction to Test Driven Development - http://www.agiledata.org/essays/tdd.html 
• Should a startup use TDD: http://www.redhills.ie/blog/should-a-startup-use-tdd/ 
• Making better games with TDD: 
http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development 
• Test-Driven Development with JavaScript: http://enterprisewebbook.com/ch7_testdriven_js.html 
• Let’s Code: Test-Driven JavaScript: http://www.letscodejavascript.com/ 
Francisco Grau - 2014 @graux

Más contenido relacionado

La actualidad más candente

Taller en Fundación Forge: Testing Exploratorio
Taller en Fundación Forge: Testing ExploratorioTaller en Fundación Forge: Testing Exploratorio
Taller en Fundación Forge: Testing ExploratorioClaudia Badell
 
SEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTING
SEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTINGSEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTING
SEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTINGtbaires
 
Presentación Agile Testing
Presentación Agile TestingPresentación Agile Testing
Presentación Agile Testingtbaires
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasMiguel Angel
 
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)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)Javier_J
 
Malas prácticas de código
Malas prácticas de códigoMalas prácticas de código
Malas prácticas de códigoMatias Iacono
 
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
 
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
 
TDD y Python
TDD y PythonTDD y Python
TDD y PythonJavier_J
 
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
 
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…Luis Alexander Aldazabal Gil
 

La actualidad más candente (20)

Seminario SOLID-TDD
Seminario SOLID-TDDSeminario SOLID-TDD
Seminario SOLID-TDD
 
Taller en Fundación Forge: Testing Exploratorio
Taller en Fundación Forge: Testing ExploratorioTaller en Fundación Forge: Testing Exploratorio
Taller en Fundación Forge: Testing Exploratorio
 
TDD talk
TDD talkTDD talk
TDD talk
 
SEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTING
SEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTINGSEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTING
SEMINARIO WEB EN VIVO: INTRODUCCIÓN AL AGILE TESTING
 
Presentación Agile Testing
Presentación Agile TestingPresentación Agile Testing
Presentación Agile Testing
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por Pruebas
 
Tdd on the rocks
Tdd on the rocks Tdd on the rocks
Tdd on the rocks
 
Unit Test y TDD
Unit Test y TDDUnit Test y TDD
Unit Test y TDD
 
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)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
 
Malas prácticas de código
Malas prácticas de códigoMalas prácticas de código
Malas prácticas de código
 
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
 
Creando rascacielos con tdd
Creando rascacielos con tddCreando rascacielos con tdd
Creando rascacielos con tdd
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
 
Kata tdd
Kata tddKata tdd
Kata tdd
 
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
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
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
 
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
 
TDD Code Retreat
TDD Code RetreatTDD Code Retreat
TDD Code Retreat
 

Destacado

Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozjoseluisseijo
 
Introducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric MignotIntroducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric MignotPablo Lischinsky
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Senior Dev
 
XP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la prácticaXP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la prácticaSantiago Blanco
 
Breve introducción a TDD con Phpunit
Breve introducción a TDD con PhpunitBreve introducción a TDD con Phpunit
Breve introducción a TDD con Phpunitmoisesgallego
 
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETPruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETLa Red DBAccess
 
Automatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareAutomatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareRubiano
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 

Destacado (18)

TDD
TDDTDD
TDD
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
Introducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric MignotIntroducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric Mignot
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Bon news
Bon newsBon news
Bon news
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
XP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la prácticaXP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la práctica
 
Breve introducción a TDD con Phpunit
Breve introducción a TDD con PhpunitBreve introducción a TDD con Phpunit
Breve introducción a TDD con Phpunit
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETPruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD
BDD TDD ATDD
 
Automatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareAutomatizacion De Pruebas De Software
Automatizacion De Pruebas De Software
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Pruebas de unidad
Pruebas de unidadPruebas de unidad
Pruebas de unidad
 

Similar a Introducción a TDD

Práctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptxPráctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptxEverCGonzalesRodrigo1
 
Conceptos de desarrollo ágil
Conceptos de desarrollo ágilConceptos de desarrollo ágil
Conceptos de desarrollo ágilGuino Henostroza
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development TechniquesEduardo Turiño
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009Pepe
 
Dad diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...
Dad  diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...Dad  diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...
Dad diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...Julissa mateo abad
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasRodrigo Corral
 
Desarrollo ágil
Desarrollo ágilDesarrollo ágil
Desarrollo ágilfponceh
 
Integrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones ReactIntegrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones ReactBelatrix Software
 
Pruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesPruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesatSistemas
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Javier Morales
 

Similar a Introducción a TDD (20)

Tw ¿Por qué elegir ágil?
Tw   ¿Por qué elegir ágil? Tw   ¿Por qué elegir ágil?
Tw ¿Por qué elegir ágil?
 
Práctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptxPráctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptx
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
 
Conceptos de desarrollo ágil
Conceptos de desarrollo ágilConceptos de desarrollo ágil
Conceptos de desarrollo ágil
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Bddtddatdd
BddtddatddBddtddatdd
Bddtddatdd
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009
 
Dad diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...
Dad  diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...Dad  diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...
Dad diciplined agil delivery.(DAD), Metodología ágil para empresas Grandes o...
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas Prácticas
 
Desarrollo ágil
Desarrollo ágilDesarrollo ágil
Desarrollo ágil
 
Scrum
ScrumScrum
Scrum
 
Integrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones ReactIntegrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones React
 
Pruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesPruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos Ágiles
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
 
Softagile
SoftagileSoftagile
Softagile
 

Introducción a TDD

  • 1. Francisco Grau - 2014 @graux
  • 2. • Conceptos Iniciales • Mitos entorno a TDD • Qué es TDD y de donde viene • TDD: Por qué y cual es su propósito • Entender el MANTRA de Test-Driven Development • Cómo se aplica, ejemplo práctico • Una herramienta más en el ciclo de desarrollo ágil • Áreas de aplicación • Otros aspectos a tener en cuenta • TDD en el entorno de desarrollo cuotidiano • Referencias e información adicional Francisco Grau - 2014 @graux
  • 3. • Pruebas Unitarias (set up, validate, execute, clean up) • Metodologías Ágiles • Refáctoring • Deuda Técnica (technical debt) • Criterios de calidad de código • X-Driven Development Francisco Grau - 2014 @graux
  • 4. • No sirve para GUIs o Front-end • No sirve para Leguajes de Scripting • No se puede probar programas multi-hilos • No se pueden probar bases de datos • No se debe probar software de terceros ** • No se pueden probar objetos distribuidos Francisco Grau - 2014 @graux
  • 5. • Proceso de desarrollo: “Clean code that works” (Ron Jeffries) • Sistemas contabilidad – Smalltalk + alta cobertura de pruebas • En 2000-2003, Kent Beck como parte de eXtreme Programming • Evolución junto con las metodologías ágiles • Requiere disciplina y asimilación por parte del equipo de desarrollo • Curva de aprendizaje • Organización tiene que aceptar la inversión Francisco Grau - 2014 @graux
  • 6. • Buen código: sin fallos, limpio, simple, organizado, mantenible… • Huir de ciclos destructivos: Estrés Pruebas • Conseguir ciclos virtuosos: Pruebas Seguridad • Impacto de cambios en código predictibles • Seguridad y Confianza • Menos Bugs *** • Entregables más continuos y fiables (agilidad) Francisco Grau - 2014 @graux
  • 7. RED Compilador / Fallo GREEN REFACTOR Francisco Grau - 2014 @graux NUEVA PRUEBA
  • 8. Las reglas: 1. Nuevo código sólo se escribe cuando una prueba ha fallado * 2. Eliminar todo tipo de duplicación 3. Escribir las pruebas uno mismo/a 4. Habilidad de introducir pequeños cambios rápidamente 5. Diseño orientado a alta cohesión, componentes no acoplados y que faciliten las pruebas Recomendaciones: 1. Empezar con Programación en Parejas 2. Poco a poco, paciencia, no abrumarse los resultados iniciales y sin saltarse pasos (al principio) 3. Actitud positiva y no sobre-complicar las pruebas 4. Cierta experiencia con Patrones de Diseño * Excepciones: refactoring, código de pruebas, etc. Francisco Grau - 2014 @graux
  • 9. Herramientas: • Papel y bolígrafo !!! • Compilador o validador (Lint) • Framework de pruebas (xUnit) Pasos: 1. Listar requisitos 2. Empezar por el más simple, menos dependencias, más rápido para “verde” 3. Crear test que falle 4. Arreglar errores de compilación 5. De rojo a verde è rápido 6. Eliminar Duplicaciones / Refactoring Francisco Grau - 2014 @graux
  • 10. Técnicas de implementación (conseguir verde): 1. Falsear (Fake it) 2. Implementación obvia 3. Triangulación (eliminación de duplicación entre pruebas y código) Francisco Grau - 2014 @graux
  • 11. • TDD no soluciona problemas de procesos, pero ayuda • El contexto lo es todo, TDD no es una religión • Equipos ágiles acogen los cambios, TDD los asimila • Antes de {refactorizar, mejorar rendimiento, cambio versiones, cambio de integración} èTDD • Bug en lógica de negocio è nuevo test que falle è “verde” è eliminad duplicidad • TDD no se debe aplicar a medias o sin disciplina Francisco Grau - 2014 @graux
  • 12. • Back-end / Front-end? • APIs? • Bases de Datos? • Video-juegos? • Start-ups / Enterprise? • Librerías y Frameworks Francisco Grau - 2014 @graux
  • 13. • Qué probar? • Qué son buenas pruebas? Que es TDD para cada persona/ equipo? • TDD en proyectos ya existentes (extensos) • Más Pruebas: Funcionales, Integración, Compatibilidad y automatización (TDD no es una técnica de pruebas) • Refactoring requiere de patrones de diseño (para pruebas y para lógica de aplicación) Francisco Grau - 2014 @graux
  • 14. • Fixtures, Fakes y Mocks • Acelerar las pruebas creando “test suites”. • Más Velocidad è Más pruebas • Entorno de pruebas integrado (xUnit+IDE, Codeception) • Qué ocurre con “si funciona no lo toques”? • Individualmente: Dejar última prueba fallando • Equipo: Integración Continua + Todas las pruebas pasan Francisco Grau - 2014 @graux
  • 15. • Test-Driven Development: By Example – Kent Beck – Addison-Wesley • TDD Wikipedia: http://en.wikipedia.org/wiki/Test-driven_development • Introduction to Test Driven Development - http://www.agiledata.org/essays/tdd.html • Should a startup use TDD: http://www.redhills.ie/blog/should-a-startup-use-tdd/ • Making better games with TDD: http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development • Test-Driven Development with JavaScript: http://enterprisewebbook.com/ch7_testdriven_js.html • Let’s Code: Test-Driven JavaScript: http://www.letscodejavascript.com/ Francisco Grau - 2014 @graux