tdd code retreat
TRANSCRIPT
![Page 1: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/1.jpg)
TDD
Agenda TDD for Dummies Porqué NO?. Porqué SI?. Algunas técnicas Dejemos a los que saben!
![Page 2: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/2.jpg)
TDD for Dummies
TDD = Test Driven Development Es una técnica de desarrollo de software Se hizo conocida como parte del la ola “Extreme
Programming” (circa 2000) Sirve como apoyo a la fase de diseño (no la
reemplaza) Sirve como método de documentación (no la
reemplaza)
![Page 3: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/3.jpg)
Porqué No?
“Programar pruebas lleva demasiado tiempo” “Correr las pruebas lleva demasiado tiempo” “No es mi trabajo probar” “No sé exactamente qué hace mi código, así que no
puedo probarlo” “¡Pero si compila!”
![Page 4: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/4.jpg)
Porque Si?
Menor sobrecarga de trabajo Confianza en cambiar las cosas Puedo responder:
Hace mi código lo que yo digo que hace? Lo hace TODO el tiempo? Puedo confiar en los pasos anteriores? Existe documentación de lo que intente
![Page 5: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/5.jpg)
Algunas técnicas
Right – BICEP• Right• Boundary• Inverse Relationships• Crosscheck• Error condition• Performance
![Page 6: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/6.jpg)
Boundary
CORRECT Conformance Ordering Range Reference Existence Cardinality Time
![Page 7: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/7.jpg)
Inverse Relationships & CrossCheck
Probar si el método inverso nos devuelve el valor original
Probar que otro algoritmo (ya probado, o no) devuelva los mismos resultados que el nuestro.
![Page 8: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/8.jpg)
Error Conditions & Performance
Forzar condiciones de error Correr con poca memoria Con poco espacio en el disco Desconectar la red Resolución de video errónea.
Tener en cuenta la Performance En una ejecución no se notan diferencias, ¿y en
1000?
![Page 9: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/9.jpg)
Mock
Las pruebas deberían ser unitarias, pero ¿qué pasa si mi unidad a probar depende de otra?
Mock: Un “Doble de Riesgo” que provee la funcionalidad de las unidades que necesitamos.
![Page 10: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/10.jpg)
Mock – Cuando?
El objeto real no es determinístico El objeto real es costoso de crear El objeto real tiene un comportamiento dificil de
disparar (error de red, schdulers) El objeto real es lento El objeto real es una interfaz de usuario El objeto real no existe todavía
![Page 11: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/11.jpg)
TDD
Escribir los tests Correr todos los tests y ver dónde fallan Escribir el código de los métodos Correr los tests y ver dónde fallan Refactorizar el código
![Page 12: TDD Code Retreat](https://reader034.vdocuments.net/reader034/viewer/2022052400/559cc5921a28abb9368b45f0/html5/thumbnails/12.jpg)
TDD
Dejemos a los que saben.