SlideShare una empresa de Scribd logo
1 de 22
Cómo hacer TDD
Javier Novoa C.
1
Contenido
●

●

●

●

¿Cómo programamos?
¿Qué buscamos?
Test Driven Development.
Un ejemplo.

2
Cómo solemos programar

3
4
5
¿Qué buscamos?
Estar seguros que lo que programamos
es correcto.

●

•

●

●

●

Evitar bugs innecesarios, si nuestro
código estuviera PROBADO al 100%.
No tener incertidumbre al hacer cambios.
Un 'documento' (útil) que nos explique
el código (a nosotros programadores).
Hacer más y mejor diseño e ingeniería,
y menos burocracia.

6
Test Driven Development
Básicamente consiste en:
●

Probar cada línea de código que escribimos...

●

Probar cada cambio, cada corrección de un bug...

●

Escribir las pruebas antes que el código (¿¿??)

7
8
¡No hagas esto! Haz pruebas.
9
¡Sigue un orden!
Empieza por hacer Pruebas Unitarias

10
Pruebas Unitarias
Normalmente haces estas pruebas:
●

●

●

Cuando te acuerdas (o te recuerdan) que
debes probar
Pero no pruebas TODO tu código, sólo los
escenarios principales.
Terminas siendo laxo para probar
realmente
11
TDD no es Unit Testing a secas

12
Test First Programming
Los que llegan a hacer esto:
●

●

●

'Diseñan' previamente su sistema a través
de todas las pruebas unitarias que debe
pasar
Luego programan para hacer pasar sus
pruebas
Terminan probando solo el diseño inicial,
y no el sistema final
13
TDD no es Test First Programming a secas
14
Qué es TDD

●

Sí es hacer Unit Tests

●

Sí es hacer Test First Programming

●

PERO todo dentro de un ciclo de desarrollo
Extremo (XP): el Test Driven Development
(o TDD)
15
El Ciclo del TDD

16
Las Tres Leyes de TDD
1) No escribir nada de código hasta escribir
una prueba unitaria (que va a fallar porque ni
código hay).
2) No escribir más de una prueba unitaria que
falle.
3) No escribir más código que el necesario
para que la actual prueba que falla, pase.
17
Ventajas del TDD
●

Certeza.

●

Reducción de bugs.

●

Confianza.

●

Documentación.

●

Mejor diseño.
18
Un ejemplo...

https://github.com/jstitch/gift_circle

19
En resumen
●

●

●

●

TDD permite lograr un código probado
muy cercano al 100%.
Para hacer TDD bien, hay que seguir las
3 leyes.
Es un método de trabajo para
programadores con un ciclo de escritura
de código/pruebas muy corto.
Permite un diseño más profesional del
código que escribimos.
20
¿PREGUNTAS?

21
GRACIAS
JAVIER NOVOA CATAÑO
Twitter @JaviStitch
jstitch@gmail.com
https://github.com/jstitch
22

Más contenido relacionado

La actualidad más candente

Argentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágilArgentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágil
Argentesting
 
Argentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatizaciónArgentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatización
Argentesting
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
Fran Grau
 

La actualidad más candente (19)

Como escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDD
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
ATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de AceptaciónATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de Aceptación
 
Pruebas Unitarias
Pruebas UnitariasPruebas Unitarias
Pruebas Unitarias
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
TDD talk
TDD talkTDD talk
TDD talk
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Ciclo De Desarrollo
Ciclo De DesarrolloCiclo De Desarrollo
Ciclo De Desarrollo
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
Kata tdd
Kata tddKata tdd
Kata tdd
 
Argentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágilArgentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágil
 
No debuggearás - Introducción al Unit Testing y TDD
No debuggearás - Introducción al Unit Testing y TDDNo debuggearás - Introducción al Unit Testing y TDD
No debuggearás - Introducción al Unit Testing y TDD
 
Argentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatizaciónArgentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatización
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
 

Similar a Cómo hacer Test Driven Development

Similar a Cómo hacer Test Driven Development (20)

7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
 
Clean code 9
Clean code 9Clean code 9
Clean code 9
 
Unidad ii. tdd
Unidad ii. tddUnidad ii. tdd
Unidad ii. tdd
 
Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014
 
Actividad 07 zsar
Actividad 07 zsarActividad 07 zsar
Actividad 07 zsar
 
TDD
TDDTDD
TDD
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Kata tdd
Kata tddKata tdd
Kata tdd
 
Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -b
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
 
Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 

Cómo hacer Test Driven Development

Notas del editor

  1. Mencionar herramientas: - frameworks para hacer Unit Testing según lenguaje Python: unittest Java: Junit PHP: PHPUnit C++: CppUnit C#: csUnit Javascript/jQuery: Qunit - code coverage tools Python: coverage.py PHP: PHPUnit