SlideShare una empresa de Scribd logo
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

Seminario SOLID-TDD
Seminario SOLID-TDDSeminario SOLID-TDD
Seminario SOLID-TDD
Gabriel Falcone
 
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
Claudia Badell
 
TDD talk
TDD talkTDD 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
tbaires
 
Presentación Agile Testing
Presentación Agile TestingPresentación Agile Testing
Presentación Agile Testing
tbaires
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por Pruebas
Miguel Angel
 
Tdd on the rocks
Tdd on the rocks Tdd on the rocks
Tdd on the rocks
Hernan Wilkinson
 
Unit Test y TDD
Unit Test y TDDUnit Test y TDD
Unit Test y TDD
Matias Iacono
 
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ódigo
Matias 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 1
Jano González
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
Juan Lladó Rodríguez
 
Kata tdd
Kata tddKata tdd
Kata tdd
Jorge Ortiz
 
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
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
Javier_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 testing
233 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ñoz
joseluisseijo
 
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
Pablo Lischinsky
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Uzi Mamani Fernández
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
Senior Dev
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
Adrian Marino
 
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
Santiago 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
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
Felix Rivas
 
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
Jose Luis Bugarin Peche
 
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
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD
Automatizacion De Pruebas De Software
Automatizacion De Pruebas De SoftwareAutomatizacion De Pruebas De Software
Automatizacion De Pruebas De Software
Rubiano
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
Jose Luis Rodriguez Roldan
 
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

Tw ¿Por qué elegir ágil?
Tw   ¿Por qué elegir ágil? Tw   ¿Por qué elegir ágil?
Tw ¿Por qué elegir ágil?
Agile Express Ecuador / Thoughtworks
 
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
EverCGonzalesRodrigo1
 
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
R̶a̶m̶s̶é̶s̶ M̶a̶r̶t̶í̶n̶e̶z̶ ̶O̶r̶t̶i̶z̶
 
Conceptos de desarrollo ágil
Conceptos de desarrollo ágilConceptos de desarrollo ágil
Conceptos de desarrollo ágil
Guino Henostroza
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
webcat
 
Bddtddatdd
BddtddatddBddtddatdd
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
Wilfredo Mogollón
 
[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
Eduardo Turiño
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
Carlos Buenosvinos
 
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
Pepe
 
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ácticas
Rodrigo Corral
 
Práctica proceso SRUM - (Introducción) v1.pptx
Práctica proceso SRUM  - (Introducción) v1.pptxPráctica proceso SRUM  - (Introducción) v1.pptx
Práctica proceso SRUM - (Introducción) v1.pptx
RaphaelNoriega
 
Desarrollo ágil
Desarrollo ágilDesarrollo ágil
Desarrollo ágilfponceh
 
Scrum
ScrumScrum
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
Belatrix Software
 
Pruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesPruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos Ágiles
atSistemas
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
Ronny Ancorini Rodríguez
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
Javier 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
 
Práctica proceso SRUM - (Introducción) v1.pptx
Práctica proceso SRUM  - (Introducción) v1.pptxPráctica proceso SRUM  - (Introducción) v1.pptx
Práctica proceso SRUM - (Introducción) v1.pptx
 
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
 

Último

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
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
 
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
 
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
 
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
 

Último (6)

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
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
 
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
 
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
 
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 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