No debuggearás - Introducción al Unit Testing y TDD
-
Upload
reyiyo -
Category
Technology
-
view
228 -
download
0
description
Transcript of No debuggearás - Introducción al Unit Testing y TDD
![Page 1: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/1.jpg)
NO DEBUGGEARÁS
![Page 2: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/2.jpg)
Debuggear...Consume mucho tiempo
![Page 3: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/3.jpg)
Debuggear...Hace que perdamos el foco
![Page 4: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/4.jpg)
Debuggear...Produce una falsa confianza
![Page 5: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/5.jpg)
Debuggear...Aumenta el riesgo de dejar basura
![Page 6: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/6.jpg)
Debuggear...No asegura NO introducir nuevos bugs
![Page 7: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/7.jpg)
Soluciones?
![Page 8: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/8.jpg)
![Page 9: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/9.jpg)
Niveles de TestUnitarioIntegracionFuncionalSistemaAceptacion
![Page 10: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/10.jpg)
Unit Tests
Unit = UnidadTests = Pruebas
![Page 11: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/11.jpg)
Unit Tests
![Page 12: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/12.jpg)
Unit Tests
![Page 13: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/13.jpg)
Unit Testsclass Calculator(object):
def add(self, a, b): return a + b def sub(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): return a / b def square(self, a): return a * a
![Page 14: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/14.jpg)
Cajas
![Page 15: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/15.jpg)
Algunas reglasLos tests unitarios deben ser:
Repetibles
Independientes
Automatizables
![Page 16: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/16.jpg)
La importanciaLos tests unitarios:
Facilitan el cambio
![Page 17: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/17.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
![Page 18: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/18.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrollo
![Page 19: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/19.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
![Page 20: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/20.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
![Page 21: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/21.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
![Page 22: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/22.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
![Page 23: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/23.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
![Page 24: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/24.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
Facilitan la migracion
![Page 25: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/25.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
Facilitan la migracion
Son documentacion que nunca pasa de moda
![Page 26: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/26.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
Facilitan la migracion
Son documentacion que nunca pasa de moda
Reducen el tiempo de testeo manual
![Page 27: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/27.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
Facilitan la migracion
Son documentacion que nunca pasa de moda
Reducen el tiempo de testeo manual
Permiten la integracion continua
![Page 28: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/28.jpg)
La importanciaLos tests unitarios:
Facilitan el cambioSimplifican la integracion
Aunque no lo crean, aceleran el desarrolloValidan funcionalidad
Evitan regresiones
Verifican interfaces
Testean bugs dedicadamente
Fuerza la modularizacion
Facilitan la migracion
Son documentacion que nunca pasa de moda
Reducen el tiempo de testeo manual
Permiten la integracion continua
Reducen la necesidad de debugging
![Page 29: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/29.jpg)
LimitacionesLos tests unitarios:
● No van a asegurar un programa libre de bugs● Solo testean la funcionalidad de las unidades en si● No pueden testear algoritmos no-deterministicos● Tambien pueden tener bugs● Necesitan mantenerse actualizados
![Page 30: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/30.jpg)
FrameworksLo basico que un framework xUnit nos debe ofrecer
● Test Runner● Test Case● Test Suites● Test Fixtures● Test Result Formatter● Assertions
Y...
![Page 31: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/31.jpg)
FrameworksLo basico que un framework xUnit nos debe ofrecer
● Test Execution
setup();.../* * Cuerpo de la prueba */...teardown();
![Page 32: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/32.jpg)
![Page 33: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/33.jpg)
Talibanismo
Tocar el filesystem
Los tests unitarios NO deben
Interactuar con la DB
Ni con la Red
![Page 34: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/34.jpg)
Mock and Roll
![Page 35: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/35.jpg)
Mock and RollUsamos mocks para:
● Aislar la unidad que testeamos
● Escenarios dificiles de reproducir● Error de red, DB,
Filesystem● Algoritmos no-
deterministicos● Fecha/Hora● Ambientes costosos
de crear● Objetos que todavia
no existen
![Page 36: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/36.jpg)
Mock and RollLo que un framework de mock basico deberia tener:
● Crear Mocks● Definirles stub methods● Definirles expectativas● Verificar las expectativas
![Page 37: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/37.jpg)
TDD
![Page 38: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/38.jpg)
TDD
![Page 39: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/39.jpg)
2 Reglas
1 – Nada de codigo sin un test que falle
![Page 40: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/40.jpg)
2 Reglas2 – 0% de codigo repetido
2 – 0% de codigo repetido
![Page 41: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/41.jpg)
Coverage
![Page 42: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/42.jpg)
Complejidad Ciclomatica
![Page 43: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/43.jpg)
Build Continuo
![Page 44: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/44.jpg)
Conclusiones
![Page 45: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/45.jpg)
Conclusiones
![Page 46: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/46.jpg)
Ejercicio
![Page 47: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/47.jpg)
![Page 48: No debuggearás - Introducción al Unit Testing y TDD](https://reader034.fdocuments.ec/reader034/viewer/2022052600/557cf817d8b42a071b8b49c0/html5/thumbnails/48.jpg)
Autor: Sergio [email protected]
Licencia Creative Commons Reconocimiento – CompartirIgual (by-sa): Se permite el uso comercial de la obra y de las posibles obras
derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.
Ejemplo de código:https://github.com/reyiyo/vending-machine