tdd desde las_trincheras
TRANSCRIPT
TDD
desde las trincheras
Juan Llad@jllado
Travel Compositor
http://online.travelcompositor.com
Motivacin de la charla
Motivacin de la charla
Excusas
Superiores (jefes de proyecto, gerentes, etc) que no permiten el uso de TDD
Proyectos legacy y cdigo muy difcil de mantener
Plazos de proyecto muy cortos. Sin tiempo de practicar TDD
Superiores que no permiten el uso de TDD
Hay que pedir permiso para pensar?
Pedimos permiso para practicar o para aprender?
Proyectos legacy
No hay nada que te impida desarrollar nueva funcionalidad usando TDD
Aunque... puedes necesitar dependencias del proyecto que te dificulten los tests
Plazos de proyecto muy cortos
Cuando programo dedico ms tiempo a pensar que a escribir cdigo
Trabajar a destajo puede dar la sensacin de ms velocidad pero luego se paga ms caro
La velocidad debe ser una consecuencia de hacerlo bien, no una aptitud
Disclaimer
eXtreme Programming
XP: valores
Simplicidad
Comunicacin
Retroalminetancin
Coraje
Respeto
TDD
TDD
http://blog.jbrains.ca/
Escuelas de TDD
Classical/Inside-Out (Chicago)
Mockist/Outside-In (London)Doble de test: http://www.martinfowler.com/bliki/TestDouble.html
Quiero prctiar TDD!
Valora tus conocimientos
Testing
Patrones y principios de diseo
Refactoring/Herramientas de trabajo
Lee!
Clean Code (Robert C. Martin)
TDD by Example (Kent Beck)
Effective Unit Testing (Lasse Koskela)
Growing Object-Oriented Software, Guided by Tests (Steve Freeman y Nat Pryce)
Diseo gil con TDD (Carlos Bl)
Screencasts
Kata de las Cartas (Carlos Bl) https://www.youtube.com/watch?v=LJQnxDZQHoo
Testing and Refactoring Legacy Code (Sandro Mancuso)https://www.youtube.com/watch?v=_NnElPO5BU0
Outside-In TDD (Sando Mancuso)https://www.youtube.com/watch?v=XHnuMjah6ps
Practica!
Encontrar situaciones cmodas donde poder practicar sin presin
Katas
Lo importante de una kata es aprender, no terminarla
Cuando ves que has llegado a un callejn sin salida, no tengas miedo a borrar cdigo y empezar de cero (o pasos anteriores)
Compara tus soluciones con las de otros:https://github.com/12meses12katas
http://codingdojo.org
http://www.solveet.com
Katas
http://www.slideshare.net/PedroSantos205/software-craftmanship-coaching
Practica en el trabajo
Antes de probar algo nuevo, tienes que conocer el sistema
Busca partes del proyecto donde te encuentres cmodo
Practica de forma progresiva
Metdico/Constante
Lista de ejemplo antes de hacer el primer test
Pon atencin a los tres etapas: red, green y blue. Las tres son importantes
Baby steps. Escribir el cdigo mnimo para pasar los tests
Los tests tambin se tienen que mantener. En la fase de refactor hay que revisarlos
Keep It Simple. Less astonishment principle
Usa buenos nombre
An as, me atasco practicando TDD
The Transformation Priority Premisehttps://8thlight.com/blog/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html
Why do you get stuck? Because you were not adding sufficient generality to the production codehttp://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
Bugs (nuevo mindset)
Antes de corregir el bug, aade un test que demuestre que falla
A continuacin, resuelve el bug y certifica que el test est en verde
La regla del Boy Scout
Four rules of simple design
Passes the tests
Reveals intention
No duplication
Fewest elemens
SOLID
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
No pares de aprender!
Preocupado por la velocidad?
Preguntas?
GRACIAS!
Juan Llad@jllado