SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
1
Alejandro Hernández (@aleherse)
Desarrollador de aplicaciones web, consultor y formador.
Cuando no trabajo para un cliente desarrollo un bot de
Telegram para gestionar clubs de juegos de mesa.
+info: http://about.me/aleherse
2
Agile Manifesto
Individuos e interacciones sobre procesos y herramientas
Software funcionando sobre documentación extensiva
Colaboración con el cliente sobre negociación contractual
Respuesta ante el cambio sobre seguir un plan
Esto es, aunque valoramos los elementos de la derecha,
valoramos más los de la izquierda.
3
¿Qué es?
Test Driven Development
Técnica de diseño e implementación de software.
4
5
¿Cómo funciona? (fail)
Escribe una prueba (test)
function it_converts_from_arabic_1_to_roman_numeral_I()
{
$this->fromArabic(1)->shouldReturn('I');
}
6
¿Cómo funciona? (fail)
Ejecuta la prueba y mira como falla
7
¿Cómo funciona? (pass)
Escribe suficiente código
public function fromArabic(int $arabic): string
{
return 'I';
}
8
¿Cómo funciona? (pass)
Ejecuta la prueba y mira como pasa
9
¿Cómo funciona? (refactor)
Mejora la calidad del código
• Extraer código a un método, clase, colaborador...
• Eliminar repeticiones
• Generalizar la lógica
• Renombrar variables, métodos, clases..
refactoring.guru
10
Tipos de pruebas
Aceptación
Funcionalidad desde el punto de vista del usuario
11
Tipos de pruebas
Aceptación
Integración
Nuestro código al interactuar con algo externo
12
Tipos de pruebas
Aceptación
Integración
Unitarias
Nuestros objetos hacen lo que se espera de ellos
13
Pilares fundamentales
• Implementar únicamente lo que el cliente necesita
14
Pilares fundamentales
• Implementar únicamente lo que el cliente necesita
• Minimizar el número de errores que llegan a producción
15
Pilares fundamentales
• Implementar únicamente lo que el cliente necesita
• Minimizar el número de errores que llegan a producción
• Implementar código modular, reutilizable y adaptable
16
Pilares fundamentales
• Implementar únicamente lo que el cliente necesita
• Minimizar el número de errores que llegan a producción
• Implementar código modular, reutilizable y adaptable
• Aumentar la confianza del equipo en el código
17
TDD es una
herramienta más
18
Desarrollo guiado por
comportamiento (BDD)
19
Desarrollo guiado por
comportamiento (BDD)
Scenario: Some determinable business situation
Given some precondition
And some other precondition
When some action by the actor
And some other action
And yet another action
Then some testable outcome is achieved
And something else we can check happens too
20
Event Storming
eventstorming.com
21
Cynefin
Cynefin for devs by Liz Keogh
22
Algunos consejos útiles
• Busca ejemplos relevantes
23
Algunos consejos útiles
• Busca ejemplos relevantes
• Escribe pruebas específicas
24
Algunos consejos útiles
• Busca ejemplos relevantes
• Escribe pruebas específicas
• Escribe código que sea cada vez más genérico
25
Algunos consejos útiles
• Busca ejemplos relevantes
• Escribe pruebas específicas
• Escribe código que sea cada vez más genérico
• Refactoriza pensando como un diseñador/arquitecto
26
Algunos consejos útiles
• Busca ejemplos relevantes
• Escribe pruebas específicas
• Escribe código que sea cada vez más genérico
• Refactoriza pensando como un diseñador/arquitecto
• No tengas miedo a borrar/mover/modificar código
27
Algunos consejos útiles
• Busca ejemplos relevantes
• Escribe pruebas específicas
• Escribe código que sea cada vez más genérico
• Refactoriza pensando como un diseñador/arquitecto
• No tengas miedo a borrar/mover/modificar código
• Las pruebas son código también, cuídalo
28
Algunos consejos útiles
"Act locally. Think Globally."
— Ron Jeffries
"Something that is hard to test is badly designed."
— Uncle Bob
29
Algunos consejos útiles
Demeter Law
Habla únicamente con los colaboradores más próximos
$this->getPerson()->getCar()->ignite();
30
Algunos consejos útiles
Demeter Law
Habla únicamente con los colaboradores más próximos
$this->getPerson()->getCar()->ignite();
debería ser
$this->person->startCar();
31
Algunos consejos útiles
Tell don't Ask
• Comportamiento donde la información reside
• Minimiza las interacciones entre objetos
if ($user.isAuthenticated()) {
echo “hola de nuevo “ . $user.getName();
} else {
echo “bienvenido!”;
}
32
Algunos consejos útiles
Tell don't Ask
• Comportamiento donde la información reside
• Minimiza las interacciones entre objetos
echo $user->welcomeMessage();
33
Algunos consejos útiles
The Transformation Priority Premise
null to constant unconditional to if
constant to constant+ if to while
constant to scalar expression to function
statement to statements
34
Kata de los números romanos
ej: 148 => CXLVIII
35
Kata de los números romanos
ej: 148 => CXLVIII
5 => V
1 => I 6 => VI 10 => X
2 => II 7 => VII 20 => XX
3 => III 8 => VIII 30 => XXX
4 => IV 9 => IX 40 => XL
100 => C 500 => D 1000 => M
36
Conclusiones
• Ten en cuenta la curva de aprendizaje
37
Conclusiones
• Ten en cuenta la curva de aprendizaje
• Más tiempo al inicio del proyecto
38
Conclusiones
• Ten en cuenta la curva de aprendizaje
• Más tiempo al inicio del proyecto
• Menos tiempo al modificar/añadir funcionalidad
39
Conclusiones
• Ten en cuenta la curva de aprendizaje
• Más tiempo al inicio del proyecto
• Menos tiempo al modificar/añadir funcionalidad
• Aporta confianza al equipo de desarrollo
40
Conclusiones
• Ten en cuenta la curva de aprendizaje
• Más tiempo al inicio del proyecto
• Menos tiempo al modificar/añadir funcionalidad
• Aporta confianza al equipo de desarrollo
• No necesitas el 100% de cobertura
41
Enlaces de interés
• Test Driven Development: By Example
• Growing Object-Oriented Software, Guided by Tests
• Refactoring: Improving the Design of Existing Code
• The Transformation Priority Premise
• Giving up on TDD
• phpspec
42

Más contenido relacionado

Similar a TDD-Introducción-al-Test-Driven-Development

Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...SolidQ
 
Administración de proyectos de ti unfv 2014 1
Administración de proyectos de ti  unfv 2014 1Administración de proyectos de ti  unfv 2014 1
Administración de proyectos de ti unfv 2014 1Juan Blas Veliz
 
Ingeniería de Calidad -Apunte calidad en las metodologias agiles
Ingeniería de Calidad -Apunte  calidad en las metodologias agilesIngeniería de Calidad -Apunte  calidad en las metodologias agiles
Ingeniería de Calidad -Apunte calidad en las metodologias agilesDaniel Remondegui
 
Introduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamientoIntroduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamientoAlejandro Hernández
 
Agile fundamentals - Campus Party
Agile fundamentals  - Campus Party Agile fundamentals  - Campus Party
Agile fundamentals - Campus Party Tania Silva
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderEduardo Riol
 
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...SolidQ
 
¿Por qué los proyectos híbridos son una realidad para la PMO de toda organiz...
¿Por qué los proyectos híbridos son  una realidad para la PMO de toda organiz...¿Por qué los proyectos híbridos son  una realidad para la PMO de toda organiz...
¿Por qué los proyectos híbridos son una realidad para la PMO de toda organiz...PMOfficers PMOAcademy
 
Scrum en Inteligencia de Negocios
Scrum en Inteligencia de NegociosScrum en Inteligencia de Negocios
Scrum en Inteligencia de NegociosJavier Loria
 
La Práctica : Una visión general
La Práctica : Una visión generalLa Práctica : Una visión general
La Práctica : Una visión generalCinthia Pulla
 
La Práctica : Una visión general
La Práctica : Una visión generalLa Práctica : Una visión general
La Práctica : Una visión generalguest87d127
 
Pracicas de Ingenieria de Software
Pracicas de Ingenieria de SoftwarePracicas de Ingenieria de Software
Pracicas de Ingenieria de Softwareeeencalada
 

Similar a TDD-Introducción-al-Test-Driven-Development (20)

Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
 
Scrum
ScrumScrum
Scrum
 
Flujos de valor
Flujos de valorFlujos de valor
Flujos de valor
 
Administración de proyectos de ti unfv 2014 1
Administración de proyectos de ti  unfv 2014 1Administración de proyectos de ti  unfv 2014 1
Administración de proyectos de ti unfv 2014 1
 
Ingeniería de Calidad -Apunte calidad en las metodologias agiles
Ingeniería de Calidad -Apunte  calidad en las metodologias agilesIngeniería de Calidad -Apunte  calidad en las metodologias agiles
Ingeniería de Calidad -Apunte calidad en las metodologias agiles
 
Introduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamientoIntroduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamiento
 
Agile fundamentals - Campus Party
Agile fundamentals  - Campus Party Agile fundamentals  - Campus Party
Agile fundamentals - Campus Party
 
Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágiles
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poder
 
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
 
¿Por qué los proyectos híbridos son una realidad para la PMO de toda organiz...
¿Por qué los proyectos híbridos son  una realidad para la PMO de toda organiz...¿Por qué los proyectos híbridos son  una realidad para la PMO de toda organiz...
¿Por qué los proyectos híbridos son una realidad para la PMO de toda organiz...
 
Scrum en Inteligencia de Negocios
Scrum en Inteligencia de NegociosScrum en Inteligencia de Negocios
Scrum en Inteligencia de Negocios
 
Software engineeringparte2 (1)
Software engineeringparte2 (1)Software engineeringparte2 (1)
Software engineeringparte2 (1)
 
Software engineeringparte2 (1)
Software engineeringparte2 (1)Software engineeringparte2 (1)
Software engineeringparte2 (1)
 
La Práctica : Una visión general
La Práctica : Una visión generalLa Práctica : Una visión general
La Práctica : Una visión general
 
La Práctica : Una visión general
La Práctica : Una visión generalLa Práctica : Una visión general
La Práctica : Una visión general
 
Algunos Conceptos Claves de DevOps
Algunos Conceptos Claves de DevOpsAlgunos Conceptos Claves de DevOps
Algunos Conceptos Claves de DevOps
 
Pracicas de Ingenieria de Software
Pracicas de Ingenieria de SoftwarePracicas de Ingenieria de Software
Pracicas de Ingenieria de Software
 
5.comprensión de los requerimientos
5.comprensión de los requerimientos5.comprensión de los requerimientos
5.comprensión de los requerimientos
 
Roles y ceremonias agiles
Roles y ceremonias agilesRoles y ceremonias agiles
Roles y ceremonias agiles
 

Último

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
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 JosephBRAYANJOSEPHPEREZGOM
 
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.pptxLolaBunny11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
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íassuserf18419
 
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 JUNITMaricarmen Sánchez Ruiz
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
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 UninoveFagnerLisboa3
 
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 FabricKeyla Dolores Méndez
 
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.pdfJulian Lamprea
 

Último (13)

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
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
 
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
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
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
 
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
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
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
 
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
 
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
 

TDD-Introducción-al-Test-Driven-Development