TDD
                                GUIA DE SUPERVIVENCIA




                       Un relato de horrores... by @AlfredoCasado

martes 1 de noviembre de 2011
Un poco de contexto...

                        Desarrollo de producto

                        Media de 4 desarrolladores muy motivados

                        Sin experiencia con TDD

                        JAVA (aka the new cobol)

                        Muchas lineas, más de 200k (test incluidos)

martes 1 de noviembre de 2011
martes 1 de noviembre de 2011
martes 1 de noviembre de 2011
martes 1 de noviembre de 2011
PRIMER HORROR
                                ¡Rojo significa que te pares!




martes 1 de noviembre de 2011
PRIMER HORROR


                                COMMIT AND...


                                                RUN!!


martes 1 de noviembre de 2011
SEGUNDO HORROR
                                La obsesión unitaria

                                           mock
                                    mock          mock


                                  mock     SUT       mock


                                                  mock
                                    mock
                                           mock




martes 1 de noviembre de 2011
SEGUNDO HORROR
                Sólo es un problema... cuando no sabes programar
                          Mucho acoplamiento => demasiados mocks

                          ¿ley de demeter?, ¿de quien? => mocks que devuelven mocks que devuelven mocks...

                          Depender de abstracciones al extremo => una interfaz, una implementación

                          No escuchar a tus test => si el test se complica demasiado... revisa tu diseño.

                          Escribir estos test despues del código => SUICIDIO.




martes 1 de noviembre de 2011
TERCER HORROR
                                Mis test se parecen mucho...
                                  (duplicación primer capitulo)




martes 1 de noviembre de 2011
TERCER HORROR
                                   duplicación de fixtures
                                En test de integración o end-to-end




martes 1 de noviembre de 2011
TERCER HORROR
                                Solución aceptable: @Rules (JUnit 4.7+)




martes 1 de noviembre de 2011
CUARTO HORROR
                                duplicación segundo capitulo

   Mismo API debe soportar varias versiones de un esquema
                     de base de datos

                                                      Esquema v1.0


                                 App       API
                                Cliente
                                                      Esquema v1.1




martes 1 de noviembre de 2011
CUARTO HORROR
                                   ¿Herencia?




martes 1 de noviembre de 2011
CUARTO HORROR
                    Extendiendo JUnit con nuestro propio runner




 El test se ejecutará dos veces, una para cada versión de base
                            de datos.



martes 1 de noviembre de 2011
QUINTO HORROR
                                Ficheros con datos de test, ¡gran idea!




martes 1 de noviembre de 2011
QUINTO HORROR
           Test que no tienen given




                                        Test data builder




martes 1 de noviembre de 2011
SEXTO HORROR
                                ¿Donde están mis test?




martes 1 de noviembre de 2011
SEXTO HORROR
                                Con los test unitarios es fácil

               ¿Los de integración donde van?, ¿y los funcionales?

          ¿organizar por sprints?, ¿por funcionalidad?, ¿test que
         resuelven bugs aparte?, ¿en el mismo proyecto?, ¿en un
                          proyecto para test?




martes 1 de noviembre de 2011
SEPTIMO HORROR
                        pedazo de UI, y ahora vas y lo pruebas...




martes 1 de noviembre de 2011
OCTAVO HORROR
                         ¿No llevarás prisa?, el build tarda un ratito...
                                           reloj o algo similar




martes 1 de noviembre de 2011
NOVENO HORROR
                                 ¿doctor que me pasa?
                                      un doctor, incluso el
                                      doctor de los simpson?

                                                                usted tiene una...
                                                               NullPointerException!




martes 1 de noviembre de 2011
NOVENO HORROR
                                Los test se diseñan para fallar




martes 1 de noviembre de 2011
NOVENO HORROR
                                Las excepciones hay que capturarlas!




martes 1 de noviembre de 2011
DECIMO HORROR
                     ¿Que probará este test?
         Esto lo único que “prueba” es que no sabes hacer test




martes 1 de noviembre de 2011
DECIMO HORROR




                                ¿No falta algo?, ¿y los assert?



martes 1 de noviembre de 2011
Terminando:

                                TDD no es un fin, es un camino. No se si hemos avanzado mucho o poco, pero si se
                                que estamos muy lejos de donde empezamos y más lejos aún de donde
                                terminaremos llegando.



                                La mejora continua no acaba con las “retrospectivas”, empieza con las
                                retrospectivas y acaba con las manos en el teclado.




martes 1 de noviembre de 2011

Más contenido relacionado

PPTX
Manual de robótica (parte 5)
PPTX
Nxt ladrillos
PDF
Trabajo Lego NXT
PDF
Verificação, validação e teste de software ágil
PDF
Lessons learned from contrasting Design Thinking and Agile Project Management...
PDF
Visual Scrum - What you see is What you get
PDF
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Manual de robótica (parte 5)
Nxt ladrillos
Trabajo Lego NXT
Verificação, validação e teste de software ágil
Lessons learned from contrasting Design Thinking and Agile Project Management...
Visual Scrum - What you see is What you get
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...

Más de Agile Spain (20)

PDF
Análisis de la implementación de prácticas ágiles en Argentina
PDF
Como cocinar tu contrato ágil
ODP
Introducción a la agilidad
PDF
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
PDF
Cas2010 gestion-agil-de-la-configuracion
PDF
Cas2010 itinerario-implementacion-agil
PDF
Cas2010 gestion-agil-de-equipos
PDF
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
PDF
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
PDF
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
PDF
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
PDF
Cas2010 is-there-space-for-testers-in-agile-projects
PDF
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
PDF
Cas2010 pair-programming-strategies
PDF
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
PDF
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
PDF
Ser ágil en España, un caso real con equipos de trabajo en remoto
PDF
Cuore.js: Una historia de amor
PDF
Stop the line & Stop Feature Development practices
PPTX
Cosas que te dije o cómo tragar la pastilla roja sin agua
Análisis de la implementación de prácticas ágiles en Argentina
Como cocinar tu contrato ágil
Introducción a la agilidad
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 gestion-agil-de-la-configuracion
Cas2010 itinerario-implementacion-agil
Cas2010 gestion-agil-de-equipos
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 pair-programming-strategies
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Ser ágil en España, un caso real con equipos de trabajo en remoto
Cuore.js: Una historia de amor
Stop the line & Stop Feature Development practices
Cosas que te dije o cómo tragar la pastilla roja sin agua
Publicidad

TDD, Una guía de supervivencia

  • 1. TDD GUIA DE SUPERVIVENCIA Un relato de horrores... by @AlfredoCasado martes 1 de noviembre de 2011
  • 2. Un poco de contexto... Desarrollo de producto Media de 4 desarrolladores muy motivados Sin experiencia con TDD JAVA (aka the new cobol) Muchas lineas, más de 200k (test incluidos) martes 1 de noviembre de 2011
  • 3. martes 1 de noviembre de 2011
  • 4. martes 1 de noviembre de 2011
  • 5. martes 1 de noviembre de 2011
  • 6. PRIMER HORROR ¡Rojo significa que te pares! martes 1 de noviembre de 2011
  • 7. PRIMER HORROR COMMIT AND... RUN!! martes 1 de noviembre de 2011
  • 8. SEGUNDO HORROR La obsesión unitaria mock mock mock mock SUT mock mock mock mock martes 1 de noviembre de 2011
  • 9. SEGUNDO HORROR Sólo es un problema... cuando no sabes programar Mucho acoplamiento => demasiados mocks ¿ley de demeter?, ¿de quien? => mocks que devuelven mocks que devuelven mocks... Depender de abstracciones al extremo => una interfaz, una implementación No escuchar a tus test => si el test se complica demasiado... revisa tu diseño. Escribir estos test despues del código => SUICIDIO. martes 1 de noviembre de 2011
  • 10. TERCER HORROR Mis test se parecen mucho... (duplicación primer capitulo) martes 1 de noviembre de 2011
  • 11. TERCER HORROR duplicación de fixtures En test de integración o end-to-end martes 1 de noviembre de 2011
  • 12. TERCER HORROR Solución aceptable: @Rules (JUnit 4.7+) martes 1 de noviembre de 2011
  • 13. CUARTO HORROR duplicación segundo capitulo Mismo API debe soportar varias versiones de un esquema de base de datos Esquema v1.0 App API Cliente Esquema v1.1 martes 1 de noviembre de 2011
  • 14. CUARTO HORROR ¿Herencia? martes 1 de noviembre de 2011
  • 15. CUARTO HORROR Extendiendo JUnit con nuestro propio runner El test se ejecutará dos veces, una para cada versión de base de datos. martes 1 de noviembre de 2011
  • 16. QUINTO HORROR Ficheros con datos de test, ¡gran idea! martes 1 de noviembre de 2011
  • 17. QUINTO HORROR Test que no tienen given Test data builder martes 1 de noviembre de 2011
  • 18. SEXTO HORROR ¿Donde están mis test? martes 1 de noviembre de 2011
  • 19. SEXTO HORROR Con los test unitarios es fácil ¿Los de integración donde van?, ¿y los funcionales? ¿organizar por sprints?, ¿por funcionalidad?, ¿test que resuelven bugs aparte?, ¿en el mismo proyecto?, ¿en un proyecto para test? martes 1 de noviembre de 2011
  • 20. SEPTIMO HORROR pedazo de UI, y ahora vas y lo pruebas... martes 1 de noviembre de 2011
  • 21. OCTAVO HORROR ¿No llevarás prisa?, el build tarda un ratito... reloj o algo similar martes 1 de noviembre de 2011
  • 22. NOVENO HORROR ¿doctor que me pasa? un doctor, incluso el doctor de los simpson? usted tiene una... NullPointerException! martes 1 de noviembre de 2011
  • 23. NOVENO HORROR Los test se diseñan para fallar martes 1 de noviembre de 2011
  • 24. NOVENO HORROR Las excepciones hay que capturarlas! martes 1 de noviembre de 2011
  • 25. DECIMO HORROR ¿Que probará este test? Esto lo único que “prueba” es que no sabes hacer test martes 1 de noviembre de 2011
  • 26. DECIMO HORROR ¿No falta algo?, ¿y los assert? martes 1 de noviembre de 2011
  • 27. Terminando: TDD no es un fin, es un camino. No se si hemos avanzado mucho o poco, pero si se que estamos muy lejos de donde empezamos y más lejos aún de donde terminaremos llegando. La mejora continua no acaba con las “retrospectivas”, empieza con las retrospectivas y acaba con las manos en el teclado. martes 1 de noviembre de 2011