Toi Tdd 20080409

Jose Manuel Beas
Jose Manuel BeasAgile and Lean coach at Freelance
TOI  Test-Driven Development (TDD) ,[object Object],[object Object],[object Object],[object Object]
Resumen del TOI “ SÓLO ESCRIBIR CÓDIGO PARA ARREGLAR UN TEST QUE FALLA”
GRACIAS
Es un proceso 3 : REFACTOR 2 : ESCRIBIR CÓDIGO 1 : ESCRIBIR UN TEST
Pros y cons de usar TDD ,[object Object],[object Object],[object Object],[object Object]
¿Realmente es más esfuerzo? http://blog.objectmentor.com/articles/2007/09/30/why-you-have-time-for-tdd-but-may-not-know-it-yet   Evolución ideal del proyecto Evolución REAL del proyecto Evolución del proyecto haciendo TDD + IC
Buena práctica “ TDD incluye pruebas unitarias y funcionales automatizadas. Ambas se escriben ANTES que el código que especifican. Las pruebas unitarias se escriben segundos antes, y las pruebas de acpetación horas o incluso días antes. Es posible ganar lo mismo haciendo las pruebas DESPUÉS. Sin embargo, es mucho más difícil. Las pruebas que se escriben ANTES no están tan influidas por la implementación. Las pruebas de aceptación ANTES de implementar son especificaciones de lo que debería ser.  Las pruebas de aceptación DESPUÉS de implementar son frecuentemente especificaciones de lo que es.” http://blog.objectmentor.com/articles/2007/09/30/why-you-have-time-for-tdd-but-may-not-know-it-yet
Buena práctica http://homepage.mac.com/keithray/blog/2006/11/19#JanesRuleDishWasher
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CALIDAD
Calidad LA CALIDAD ES  GRATIS PERO TIENE UN COSTE
Acceptance TDD Acceptance Test-Driven User Story DEFINITION OF DONE
¿Qué tiene que ver con IC? ,[object Object],[object Object]
LAB-1 : TestFirstChallenge ,[object Object],[object Object]
LAB-1 : TestFirstChallenge ,[object Object],[object Object],[object Object],[object Object]
LAB-2 : MoneyExample ,[object Object],[object Object]
LAB-2 : MoneyExample ,[object Object],[object Object],[object Object]
LAB-2 (testMultiplication) @Test public   void  testMultiplication() { Dollar  five =  new  Dollar(5); assertEquals ( new  Dollar(10), five.times(2)); } ,[object Object],[object Object],[object Object],[object Object],[object Object]
LAB-2 (testEquality) @Test public   void  testMultiplication() { Dollar  five =  new  Dollar(5); assertEquals ( new  Dollar(10), five.times(2)); } @Test public   void  testEquality() { assertTrue ( new  Dollar(5).equals( new  Dollar(5))); assertFalse ( new  Dollar(5).equals( new  Dollar(6))); } ,[object Object],[object Object]
LAB-2 (testMultiplication) @Test public   void  testMultiplication() { Dollar  five =  new  Dollar(5); assertEquals ( new  Dollar(10), five.times(2)); assertEquals ( new  Dollar(15), five.times(3)); } ,[object Object],[object Object]
LAB-2 (testEuroMultiplication) @Test public   void  testEuroMultiplication() { Euro  five =  new  Euro(5); assertEquals ( new  Euro(10), five.times(2)); assertEquals ( new  Euro(15), five.times(3)); } ,[object Object],[object Object]
LAB-2 (testEuroMultiplication) assertFalse ( new  Euro(5).equals(new Dollar(5))); ,[object Object],[object Object]
LAB-2 (testSimpleAdditionSameCurrency) @Test public   void  testSimpleAdditionSameCurrency() { Money sumOfDollars =  new  Dollar(5).plus( new  Dollar(5)); assertEquals ( new  Dollar(10), sumOfDollars); } ,[object Object],[object Object],[object Object]
LAB-2 (testBankExchangeRate) @Test public   void  testBankExchangeRate() { Bank bank =  new  Bank(); bank.addRate(Euro. class ,Dollar. class , new  Double(2)); assertEquals ( new  Double(2), bank.getRate(Euro. class ,Dollar. class )); bank.addRate(Euro. class ,Dollar. class , new  Double(3)); assertEquals ( new  Double(3), bank.getRate(Euro. class ,Dollar. class )); } ,[object Object],[object Object]
LAB-2 (testBankExchangeRate) @Test public   void  testBankExchangeEurosToDollars() { Bank bank =  new  Bank(); bank.addRate(Euro. class ,Dollar. class , new  Double(2)); Money result = bank.exchange( new  Euro(10), Dollar. class ); assertEquals ( new  Dollar(5), result); } ,[object Object],[object Object],[object Object]
LAB-2 (testSimpleAdditionDifferentCurrency) @Test public   void  testSimpleAdditionDifferentCurrency() { Bank bank =  new  Bank(); bank.addRate(Euro. class ,Dollar. class , new  Double(2)); Money result = bank.exchange( new  Euro(10), Dollar. class ). plus( new  Dollar(5)); assertEquals ( new  Dollar(10), result); bank.addRate(Dollar. class ,Euro. class , new  Double(0.5)); result = bank.exchange( new  Dollar(5), Euro. class ). plus( new  Euro(3)); assertEquals ( new  Euro(13), result); } ,[object Object],[object Object]
Conceptos (I) FIXTURE COLABORADORES
Conceptos (II) DOBLES DE PRUEBAS PROBAR EL ESTADO vs PROBAR LAS INTERACCIONES http://fry/dokeos/courses/TOIIPC003   http://flexo/svnRepo/TOI/TOI-DoblesPrueba
Temas relacionados ,[object Object],[object Object],[object Object]
TDD en diferentes entornos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bibliografía recomendada
Enlaces http://www.theserverside.com/tt/articles/article.tss?l=JMockTestDrivenDev   http://www.jmock.org/oopsla2004.pdf   http://www.theserverside.com/tt/articles/article.tss?l=DesigntoUnitTest http://www.ibm.com/developerworks/webservices/library/co-single.html http://www.testearly.com/ http://www.mockobjects.com/ http://www.mockobjects.com/labels/listening%20to%20the%20tests.html
GRACIAS
1 of 32

Recommended

Tdd by
TddTdd
TddRicardo Valle Ramirez
12 views25 slides
Curso TDD Ruby on Rails #01: Introducción al testing by
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingAlberto Perdomo
1.7K views27 slides
Curso TDD Ruby on Rails #03: Tests unitarios by
Curso TDD Ruby on Rails #03: Tests unitariosCurso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosAlberto Perdomo
2.4K views21 slides
7090112 Clase Transact Sql Server by
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
543 views30 slides
Estructuras de Control C++ by
Estructuras de Control C++Estructuras de Control C++
Estructuras de Control C++Jorge Leonardo
735 views22 slides
Property Based Testing usando QuickCheck by
Property Based Testing usando QuickCheckProperty Based Testing usando QuickCheck
Property Based Testing usando QuickCheckguillecabeza
526 views56 slides

More Related Content

Similar to Toi Tdd 20080409

Cesnavarra 2009-boletín 1 by
Cesnavarra 2009-boletín 1Cesnavarra 2009-boletín 1
Cesnavarra 2009-boletín 1Cein
868 views58 slides
Seminario de Test Development Driven by
Seminario de Test Development DrivenSeminario de Test Development Driven
Seminario de Test Development DrivenParadigma Digital
490 views120 slides
TDD Workshop by
TDD WorkshopTDD Workshop
TDD WorkshopMartin Salias
330 views38 slides
Introducción a Unit Testing y TDD by
Introducción a Unit Testing y TDDIntroducción a Unit Testing y TDD
Introducción a Unit Testing y TDDFernando Perez
1.5K views91 slides
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
Junit y Jmock by
Junit y JmockJunit y Jmock
Junit y Jmockkaolong
1.7K views17 slides

Similar to Toi Tdd 20080409(20)

Cesnavarra 2009-boletín 1 by Cein
Cesnavarra 2009-boletín 1Cesnavarra 2009-boletín 1
Cesnavarra 2009-boletín 1
Cein868 views
Introducción a Unit Testing y TDD by Fernando Perez
Introducción a Unit Testing y TDDIntroducción a Unit Testing y TDD
Introducción a Unit Testing y TDD
Fernando Perez1.5K views
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
Junit y Jmock by kaolong
Junit y JmockJunit y Jmock
Junit y Jmock
kaolong1.7K views
Artalde Tdd intro by fperezplain
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
fperezplain314 views
TEMA Nº 7: SENTENCIAS DE CONTROL DE FLUJO EN JAVA II by Anyeni Garay
TEMA Nº 7: SENTENCIAS DE CONTROL DE FLUJO EN JAVA IITEMA Nº 7: SENTENCIAS DE CONTROL DE FLUJO EN JAVA II
TEMA Nº 7: SENTENCIAS DE CONTROL DE FLUJO EN JAVA II
Anyeni Garay400 views
Separata04 - Estructuras condicionales simples.pdf by CarlosJahnsen3
Separata04 - Estructuras condicionales simples.pdfSeparata04 - Estructuras condicionales simples.pdf
Separata04 - Estructuras condicionales simples.pdf
CarlosJahnsen3105 views
Pruebas de aceptación 15 11_2013 by dayaorte
Pruebas de aceptación 15 11_2013Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013
dayaorte309 views
Tema 9 pruebas unitarias por gio by Robert Wolf
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
Robert Wolf1.6K views
DeSymfonyDay 2014 - To mock or not to mock - Spanish by Jordi Llonch
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Jordi Llonch1.2K views
DeSymfonyDay 2014 - To mock or not to mock - Spanish by Akamon Engineering
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Akamon Engineering1.8K views
DeSymfonyDay 2014 - To mock or not to mock - Spanish by Jordi Llonch
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Jordi Llonch359 views

More from Jose Manuel Beas

Como tratar defectos con Kanban [Nov 2023] by
Como tratar defectos con Kanban [Nov 2023]Como tratar defectos con Kanban [Nov 2023]
Como tratar defectos con Kanban [Nov 2023]Jose Manuel Beas
171 views31 slides
Priorización de Portfolio para Agility360 by
Priorización de Portfolio para Agility360Priorización de Portfolio para Agility360
Priorización de Portfolio para Agility360Jose Manuel Beas
172 views10 slides
Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando” by
Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando”Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando”
Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando”Jose Manuel Beas
44 views23 slides
Internal keynote - La era del agilismo (curated version) by
Internal keynote  - La era del agilismo (curated version)Internal keynote  - La era del agilismo (curated version)
Internal keynote - La era del agilismo (curated version)Jose Manuel Beas
351 views9 slides
Transformar por niveles by
Transformar por nivelesTransformar por niveles
Transformar por nivelesJose Manuel Beas
153 views12 slides
CAS2018 - El poder de las metaforas by
CAS2018 - El poder de las metaforasCAS2018 - El poder de las metaforas
CAS2018 - El poder de las metaforasJose Manuel Beas
5.7K views11 slides

More from Jose Manuel Beas(20)

Como tratar defectos con Kanban [Nov 2023] by Jose Manuel Beas
Como tratar defectos con Kanban [Nov 2023]Como tratar defectos con Kanban [Nov 2023]
Como tratar defectos con Kanban [Nov 2023]
Jose Manuel Beas171 views
Priorización de Portfolio para Agility360 by Jose Manuel Beas
Priorización de Portfolio para Agility360Priorización de Portfolio para Agility360
Priorización de Portfolio para Agility360
Jose Manuel Beas172 views
Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando” by Jose Manuel Beas
Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando”Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando”
Webinar “Repensemos la forma en la que trabajamos; empecemos simplificando”
Jose Manuel Beas44 views
Internal keynote - La era del agilismo (curated version) by Jose Manuel Beas
Internal keynote  - La era del agilismo (curated version)Internal keynote  - La era del agilismo (curated version)
Internal keynote - La era del agilismo (curated version)
Jose Manuel Beas351 views
CAS2018 - El poder de las metaforas by Jose Manuel Beas
CAS2018 - El poder de las metaforasCAS2018 - El poder de las metaforas
CAS2018 - El poder de las metaforas
Jose Manuel Beas5.7K views
How to implement agile in a waterfall company by Jose Manuel Beas
How to implement agile in a waterfall companyHow to implement agile in a waterfall company
How to implement agile in a waterfall company
Jose Manuel Beas4.9K views
Gestión de riesgos en proyectos ágiles by Jose Manuel Beas
Gestión de riesgos en proyectos ágilesGestión de riesgos en proyectos ágiles
Gestión de riesgos en proyectos ágiles
Jose Manuel Beas4.4K views
Codemotion 2014 - Desarrollo Agil de Producto para Emprendedores by Jose Manuel Beas
Codemotion 2014  - Desarrollo Agil de Producto para EmprendedoresCodemotion 2014  - Desarrollo Agil de Producto para Emprendedores
Codemotion 2014 - Desarrollo Agil de Producto para Emprendedores
Jose Manuel Beas1.2K views
Startups Mansion - Desarrollo Agil de Producto para Emprendedores by Jose Manuel Beas
Startups Mansion - Desarrollo Agil de Producto para EmprendedoresStartups Mansion - Desarrollo Agil de Producto para Emprendedores
Startups Mansion - Desarrollo Agil de Producto para Emprendedores
Jose Manuel Beas850 views
Betabeers Huelva - Agilismo y Lean Startup by Jose Manuel Beas
Betabeers Huelva - Agilismo y Lean StartupBetabeers Huelva - Agilismo y Lean Startup
Betabeers Huelva - Agilismo y Lean Startup
Jose Manuel Beas1.3K views
DrupalCamp14 Agile product development for startups by Jose Manuel Beas
DrupalCamp14 Agile product development for startupsDrupalCamp14 Agile product development for startups
DrupalCamp14 Agile product development for startups
Jose Manuel Beas1.4K views
Taller Historias de usuario 20130117 by Jose Manuel Beas
Taller Historias de usuario 20130117Taller Historias de usuario 20130117
Taller Historias de usuario 20130117
Jose Manuel Beas11.6K views

Recently uploaded

Probando aplicaciones basadas en LLMs.pdf by
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdfFederico Toledo
51 views40 slides
fundamentos de electricidad electronica by
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronicaKevin619029
5 views16 slides
Meetup_Secrets_of_DW_2_Esp.pptx by
Meetup_Secrets_of_DW_2_Esp.pptxMeetup_Secrets_of_DW_2_Esp.pptx
Meetup_Secrets_of_DW_2_Esp.pptxFedericoCastellari
11 views15 slides
MVelazco_Internet, Origenes y Evolucion.pptx by
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptxal223915
5 views39 slides
Tarea15.pptx by
Tarea15.pptxTarea15.pptx
Tarea15.pptxillanlir
10 views6 slides
Dominios de Internet.pdf by
Dominios de Internet.pdfDominios de Internet.pdf
Dominios de Internet.pdfAnahisZambrano
8 views2 slides

Recently uploaded(20)

Probando aplicaciones basadas en LLMs.pdf by Federico Toledo
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdf
Federico Toledo51 views
fundamentos de electricidad electronica by Kevin619029
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronica
Kevin6190295 views
MVelazco_Internet, Origenes y Evolucion.pptx by al223915
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptx
al2239155 views
Tarea15.pptx by illanlir
Tarea15.pptxTarea15.pptx
Tarea15.pptx
illanlir10 views
Fundamentos de Electricidad y Electronica 9-3 (1).docx by Samuel709479
Fundamentos de Electricidad y Electronica 9-3 (1).docxFundamentos de Electricidad y Electronica 9-3 (1).docx
Fundamentos de Electricidad y Electronica 9-3 (1).docx
Samuel7094797 views
Tecnologías para la enseñanza virtual_cdc.pptx by CarmenerdelHuasco
Tecnologías para la enseñanza virtual_cdc.pptxTecnologías para la enseñanza virtual_cdc.pptx
Tecnologías para la enseñanza virtual_cdc.pptx
Fundamentos de Electricidad y Electronica 9-3 (1).docx by Samuel709479
Fundamentos de Electricidad y Electronica 9-3 (1).docxFundamentos de Electricidad y Electronica 9-3 (1).docx
Fundamentos de Electricidad y Electronica 9-3 (1).docx
Samuel7094795 views
Tecnologías para la enseñanza virtual.pptx by exprosaavedra
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptx
exprosaavedra14 views
Fundamentos De Electricidad y Electrónica equipo 5.pdf by coloradxmaria
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
coloradxmaria14 views
Fundamentos de electricidad y electrónica.docx by DilanTabares
Fundamentos de electricidad y electrónica.docxFundamentos de electricidad y electrónica.docx
Fundamentos de electricidad y electrónica.docx
DilanTabares5 views
El Ciberespacio y sus Características.pptx by AnthlingPereira
El Ciberespacio y  sus Características.pptxEl Ciberespacio y  sus Características.pptx
El Ciberespacio y sus Características.pptx
AnthlingPereira15 views
Presentación: El impacto y peligro de la piratería de software by EmanuelMuoz11
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de software
EmanuelMuoz1117 views
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx by dreadlockp5
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptxCÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
dreadlockp58 views
Tecnologías para la enseñanza virtual by mpachecocodem
Tecnologías para la enseñanza virtual Tecnologías para la enseñanza virtual
Tecnologías para la enseñanza virtual
mpachecocodem8 views

Toi Tdd 20080409

  • 1.
  • 2. Resumen del TOI “ SÓLO ESCRIBIR CÓDIGO PARA ARREGLAR UN TEST QUE FALLA”
  • 4. Es un proceso 3 : REFACTOR 2 : ESCRIBIR CÓDIGO 1 : ESCRIBIR UN TEST
  • 5.
  • 6. ¿Realmente es más esfuerzo? http://blog.objectmentor.com/articles/2007/09/30/why-you-have-time-for-tdd-but-may-not-know-it-yet Evolución ideal del proyecto Evolución REAL del proyecto Evolución del proyecto haciendo TDD + IC
  • 7. Buena práctica “ TDD incluye pruebas unitarias y funcionales automatizadas. Ambas se escriben ANTES que el código que especifican. Las pruebas unitarias se escriben segundos antes, y las pruebas de acpetación horas o incluso días antes. Es posible ganar lo mismo haciendo las pruebas DESPUÉS. Sin embargo, es mucho más difícil. Las pruebas que se escriben ANTES no están tan influidas por la implementación. Las pruebas de aceptación ANTES de implementar son especificaciones de lo que debería ser. Las pruebas de aceptación DESPUÉS de implementar son frecuentemente especificaciones de lo que es.” http://blog.objectmentor.com/articles/2007/09/30/why-you-have-time-for-tdd-but-may-not-know-it-yet
  • 9.
  • 10. Calidad LA CALIDAD ES GRATIS PERO TIENE UN COSTE
  • 11. Acceptance TDD Acceptance Test-Driven User Story DEFINITION OF DONE
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Conceptos (I) FIXTURE COLABORADORES
  • 27. Conceptos (II) DOBLES DE PRUEBAS PROBAR EL ESTADO vs PROBAR LAS INTERACCIONES http://fry/dokeos/courses/TOIIPC003 http://flexo/svnRepo/TOI/TOI-DoblesPrueba
  • 28.
  • 29.
  • 31. Enlaces http://www.theserverside.com/tt/articles/article.tss?l=JMockTestDrivenDev http://www.jmock.org/oopsla2004.pdf http://www.theserverside.com/tt/articles/article.tss?l=DesigntoUnitTest http://www.ibm.com/developerworks/webservices/library/co-single.html http://www.testearly.com/ http://www.mockobjects.com/ http://www.mockobjects.com/labels/listening%20to%20the%20tests.html