SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Test Driven
Development
Jesús López
jesuslc.com
PHPSevilla - Noviembre 2017
Test Driven Development
JesusLC.com
@jeslopcru
La comunidad
www.phpsevilla.com
Test Driven Development
JesusLC.com
@jeslopcru
Sponsors
Test Driven Development
JesusLC.com
@jeslopcru
Comunidad
Test Driven Development
JesusLC.com
@jeslopcru
jesuslc.com
@jeslopcru
github.com/jeslopcru
Jesús López
Ingeniero en Informática
Software Engineer
Professional Scrum Master & ITIL Certified
Test Driven Development
Test Driven Development
JesusLC.com
@jeslopcru
Test Driven Development
"Testing is a process of executing a program with the
intent of finding errors... This definition of testing has many
implications... it implies that testing is a destructive
process, even sadistic process, which explains why most
people find it difficult"
Glendford J. Myers (1979)
Test Driven Development
JesusLC.com
@jeslopcru
¿Qué hacemos?
Nunca mezclar
CODIGO
TEST
REFACTOR
Test Driven Development
JesusLC.com
@jeslopcru
Por qué hacer TDD
• Hacer software que funciona
• Hace más estable estable la aplicación
• Tener test nos proporciona un arnés de seguridad
• Sabemos cuando hemos terminado
Test Driven Development
JesusLC.com
@jeslopcru
Fuentes recomendadas
Test Driven Development
JesusLC.com
@jeslopcru
¿Por dónde empezamos?
Shuhari
Test Driven Development
JesusLC.com
@jeslopcru
¿Por dónde empezamos?
★ shu (守?) "Proteger", "obedecer"
★ ha (破?) "desapego", “desprendimiento
★ "ri (離?) "Dejar", "separar", "trascender"
Test Driven Development
JesusLC.com
@jeslopcru
¿Por dónde empezamos?
★ Las katas son para aprender
★ Elige un objetivo
★ Ejercicio previo de análisis
★ Empieza por lo sencillo
★ Haz pair programing si puedes
Baby
Steps
Katas
Test Driven Development
JesusLC.com
@jeslopcru
¿Por dónde empezamos?
Katas
No es necesario
terminar
Lista de tests
Paso a paso
No acapares el
teclado
Follow rules
Baby
Steps
★ Las katas son para aprender
★ Elige un objetivo
★ Ejercicio previo de análisis
★ Empieza por lo sencillo
★ Haz pair programing si puedes
Test Driven Development
JesusLC.com
@jeslopcru
Herramientas
• IDE
• Git
• Tests
• Paciencia
Sin test no hay
código
Commits
pequeños
Test en Verde
para refactorizar
Test Driven Development
JesusLC.com
@jeslopcru
Pasos para TDD
1. Lista de tests
2. Escoger un test de la lista
3. Escribir Test que falle
4. Mínima funcionalidad para pasar el test
5. Comprobar los test
6. Refactor: ¡FUNCIONA!
Test Driven Development
JesusLC.com
@jeslopcru
Pasos para TDD
Nunca mezclar
ESCRIBIR
CODIGO
ESCRIBIR
TEST
REFACTOR VER FALLA
EJECUTAR
TEST
Test Driven Development
JesusLC.com
@jeslopcru
En resumen
• Baby steps
• Minima funcionalidad para que funcione
• Refactor en verde
• Una tarea cada vez
• Iterar
CODIGO
TEST
REFACTOR
Test Driven Development
JesusLC.com
@jeslopcru
Kata FizzBuzz
Escribe un programa que imprima los números del 1 al 100, pero
aplicando las siguientes normas:
• Devuelve Fizz si el número es divisible por 3.
• Devuelve Buzz si el número es divisible por 5.
• Devuelve FizzBuzz si el número es divisible por 3 y por 5.
https://github.com/jeslopcru/php-bootstrap-kata
1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,16,17,Fizz,19,Buzz... etc hasta el
100
CODI
GO
TEST
REFA
CTOR
Test Driven Development
JesusLC.com
@jeslopcru
Kata Password Validator
https://github.com/jeslopcru/php-bootstrap-kata
We want to ensure that our users' passwords have the following rules:
- Have more than 8 characters
- Contains a capital letter
- Contains a lowercase
- Contains a number
- Contains an underscore
CODI
GO
TEST
REFA
CTOR

Más contenido relacionado

La actualidad más candente

Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Gustavo Veliz
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónKleer Agile Coaching & Training
 
048 Deployment De Aplicaciones Gene Xus
048 Deployment De Aplicaciones Gene Xus048 Deployment De Aplicaciones Gene Xus
048 Deployment De Aplicaciones Gene XusGeneXus
 
Introducción a GXtest
Introducción a GXtest Introducción a GXtest
Introducción a GXtest GeneXus
 
20080628 Gerencia Proyectos Software Libre Campus Party2008
20080628 Gerencia Proyectos Software Libre Campus Party200820080628 Gerencia Proyectos Software Libre Campus Party2008
20080628 Gerencia Proyectos Software Libre Campus Party2008César Trujillo
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion ContinuaLenin Lozano
 
Compartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de KanbanCompartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de Kanban233 Grados de TI
 
Cómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCMCómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCM233 Grados de TI
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoHernan Wilkinson
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasMiguel Angel
 
Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...César Hernández
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentJavier Novoa Cataño
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasOrlando Bustos Mateluna
 
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)233 Grados de TI
 

La actualidad más candente (20)

BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
TDD en java script
TDD en java scriptTDD en java script
TDD en java script
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producción
 
048 Deployment De Aplicaciones Gene Xus
048 Deployment De Aplicaciones Gene Xus048 Deployment De Aplicaciones Gene Xus
048 Deployment De Aplicaciones Gene Xus
 
Introducción a GXtest
Introducción a GXtest Introducción a GXtest
Introducción a GXtest
 
20080628 Gerencia Proyectos Software Libre Campus Party2008
20080628 Gerencia Proyectos Software Libre Campus Party200820080628 Gerencia Proyectos Software Libre Campus Party2008
20080628 Gerencia Proyectos Software Libre Campus Party2008
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion Continua
 
Compartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de KanbanCompartiendo cómo trabajamos haciendo uso de Kanban
Compartiendo cómo trabajamos haciendo uso de Kanban
 
Cómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCMCómo trabajamos en Plastic SCM
Cómo trabajamos en Plastic SCM
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intento
 
Calidad en Agile - EducacionIT
Calidad en Agile - EducacionITCalidad en Agile - EducacionIT
Calidad en Agile - EducacionIT
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por Pruebas
 
Diseñando y operando al estilo DevOps
Diseñando y operando al estilo DevOpsDiseñando y operando al estilo DevOps
Diseñando y operando al estilo DevOps
 
Creando rascacielos con tdd
Creando rascacielos con tddCreando rascacielos con tdd
Creando rascacielos con tdd
 
Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
 

Similar a Introducción a Test Driven Development en PHPSevilla

Taller TestingUy 2019 - Pruebas Unitarias con TDD desde cero
Taller TestingUy 2019 - Pruebas Unitarias con TDD desde ceroTaller TestingUy 2019 - Pruebas Unitarias con TDD desde cero
Taller TestingUy 2019 - Pruebas Unitarias con TDD desde ceroTestingUy
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
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 TDDHernan Wilkinson
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDDAlfredo Chavez
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDDAlfredo Chavez
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareDomingo Suarez Torres
 
[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 TechniquesEduardo Turiño
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Javier Morales
 
Sleep well driven development
Sleep well driven developmentSleep well driven development
Sleep well driven developmentJavier de Arcos
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme ProgrammingNoretSarted
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)Juan Avendaño
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozjoseluisseijo
 

Similar a Introducción a Test Driven Development en PHPSevilla (20)

Taller TestingUy 2019 - Pruebas Unitarias con TDD desde cero
Taller TestingUy 2019 - Pruebas Unitarias con TDD desde ceroTaller TestingUy 2019 - Pruebas Unitarias con TDD desde cero
Taller TestingUy 2019 - Pruebas Unitarias con TDD desde cero
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Si no testeo no me lo creo
Si no testeo no me lo creoSi no testeo no me lo creo
Si no testeo no me lo creo
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
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
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar software
 
[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
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
 
TDD
TDDTDD
TDD
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
Sleep well driven development
Sleep well driven developmentSleep well driven development
Sleep well driven development
 
Metodologias clase 6 - mejora continua xp
Metodologias   clase 6 - mejora continua xpMetodologias   clase 6 - mejora continua xp
Metodologias clase 6 - mejora continua xp
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 

Introducción a Test Driven Development en PHPSevilla