SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Demystifying
Development Techniques
@eturino
Eduardo Turiño
¡muerte a los puristas!
el “otro título”
las metodologías son
sólo herramientas
menos errores

más velocidad 

más constancia
mejorar en cada paso
lo que más moleste
•

nivel de Proyecto (Scrum, Kanban…)

•

nivel de Desarrollo!

•

nivel de Productividad (GTD, Pomodoro…)
el camino
1

2

3

4

5

6

1. tradicional

4. TDD

2. tests automáticos

5. BDD

3. Test-First

6. completando BDD
objetivos
del desarrollo de software

1. hace lo que tiene que hacer y no otra cosa!
2. funciona sin fallos!
3. no rompe lo que ya funcionaba!
4. fácil de adaptar a nuevas funcionalidades
1

2

3

4

5

tradicional
¿cómo se hace normalmente?

6
tradicional
•

planificación y estudio de requisitos

•

desarrollo: diseño e implementación

•

pruebas: QA (Quality Assurance)
pruebas (QA)
•

“hace lo que tiene que hacer y no otra cosa”:
Pruebas de Aceptación

•

“funciona sin fallos”:

Pruebas de Exploración

•

“no rompe lo que ya funcionaba”:

Pruebas de Regresión
lo que más molesta
del enfoque tradicional

demasiadas pruebas
(no se hacen)
1

2

3

4

5

tests automáticos
automatizando las pruebas manuales

6
tipos de tests
de Aceptación: 

comprueba funcionalidad
de Regresión: 

nos alerta si hemos roto algo anterior
Unitarios: 

componente (aislado) funciona bien
cuidado

sustituyen a pruebas manuales:
probar comportamiento
lo que más molesta
de los tests automáticos

•

poca motivación para hacerlos

•

“¿y cómo pruebo yo esto?”
1

2

3

4

5

6

Test-First
probando lo que aún no hemos desarrollado
primero el test
!

después el código de producción
ventajas
de Test-First

•

mayor motivación

•

sensación de seguridad: menos fallos tontos

•

código más sencillo y fácil de probar
lo que se echa en falta
de Test-First

no nos sirve de guía
1

2

3

4

5

TDD
Test Driven Development

6
los tests como 

guía del desarrollo
TDD
•

el objetivo es el código de producción, 

los tests son una herramienta para ese objetivo

•

que los tests sirvan como pruebas es
secundario

•

se basa en repetición de un ciclo básico
ciclo básico
de TDD
1. escribir un nuevo test y verificar que falla
2. implementar lo mínimo para que:
A. cambie el mensaje del error
B. pase el test
3. repetir el punto 2 hasta que pase el test
4. refactorizar, sin cambiar comportamiento
Red - Green - Refactor
Green

Red

Refactor
Red - Green - Refactor
Green

⇧ funcionalidad

⇧ diseño

Red

Refactor

seguimos
bases de TDD
•

tests concisos

•

se prueba nuestro código público

•

antes de iniciar algo nuevo, dejar en verde

•

Diseño Emergente: al escribir test y refactorizar
temas a mejorar
de TDD

frágil y tedioso 

muchos test unitarios
1

2

3

4

BDD
Behaviour Driven Development
!

o TDD “bien hecho”

5

6
comportamiento,
comunicación,
y tests de aceptación
BDD a grandes rasgos
•

usar lenguaje de dominio, no técnico

•

escribir tests de aceptación con los clientes
(expertos de dominio)

•

ciclo de desarrollo usando un doble anillo RGR
doble anillo
de BDD
1. se empieza con un ciclo RGR de un test de aceptación
(Anillo Exterior)
2. se va desarrollando hasta que el mensaje de error ya
no nos es útil para seguir (outside in)
3. se baja a hacer un test unitario y se continúa con ese
ciclo RGR (Anillo Interior)
4. anillo Interior refactorizado: se sube al Anillo Exterior
5. repetir 2-4 hasta que el Anillo Exterior esté completado
doble anillo
R

R

Aceptación

G

Unitario

Rf
Rf

G
qué se consigue
con BDD

•

mejor comunicación con clientes y stakeholders

•

menos frágil: tests de aceptación y 

sólo los unitarios necesarios

•

más natural y rápido
limitaciones
de BDD
•

sólo probamos el caso feliz

•

cuando el test es muy difícil de programar

•

cuando se tiene muy claro

•

cuando los tests unitarios se rompen

•

cuando no se tiene ni idea de por dónde tirar
¿y ahora?
completamos con
otras técnicas
1

2

3

4

5

6

solucionando
“probar sólo el caso feliz”
tests unitarios extra
•

tras un ciclo RGR y antes del siguiente

•

¿cómo debería comportarse el sistema ante esta
situación?

•

es diseño

•

ok si el test empieza en Verde lugar de Rojo.
1

2

3

4

5

6

solucionando
“test difícil de programar”
solucionando
“test muy difícil”

sustituye por 

prueba manual
1

2

3

4

5

solucionando
“cuando es muy fácil”

6
solucionando
“cuando es muy fácil”

pasos largos
1

2

3

4

5

solucionando
“tests se rompen”

6
solucionando
“tests se rompen”

arreglarlos o tirarlos
1

2

3

4

5

6

solucionando
“cuando es muy difícil”
solucionando
“cuando es muy difícil”

REPLs y Spikes
REPL
•

Read Eval Print Loop

•

consola de javascript, irb/pry…

•

ir ejecutando lo que se programa en el momento

•

muy bueno para pruebas, bugfixing, 

y para “¿cómo se usaba esto?”

•

REPL Driven Development
Spike
experimento rápido para:
A. disminuir riesgo técnico
B. pruebas de concepto
Spike
cuando se termina:
•

si es muy horrible:

se tira

•

si se puede refactorizar y “no está tan mal”:

se usa y se le añade un test de regresión
concluyendo…
mi proceso al principio

•

diseño y desarrollo tradicional

•

pruebas al final (bastante escasas), 

apoyado por un buen equipo de QA
mi proceso ahora
•

por defecto: 

BDD con Outside-In

•

“¿cómo era esto?” y “¿cómo se usaba tal?”:

REPLs!

•

“ni idea” o “peligroso”:

Spikes!

•

“trillado”: 

Pasos largos!

•

“test difícil”:

Prueba manual
¿qué he ganado?
•

muchos menos errores

•

más constante

•

más seguro

•

más rápido
buscando 

las mejores herramientas
para cada ocasión
el objetivo es el software
!

complementar tu metodología 

con otras técnicas

está bien

Más contenido relacionado

La actualidad más candente

Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bdd
lsajrf
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamiento
Agustin Ramos
 

La actualidad más candente (20)

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
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Desarrollo Guiado Por Pruebas
Desarrollo Guiado Por PruebasDesarrollo Guiado Por Pruebas
Desarrollo Guiado Por Pruebas
 
TDD talk
TDD talkTDD talk
TDD talk
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en Java
 
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
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
TDD
TDDTDD
TDD
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Agile Testing - Software Testing Club
Agile Testing - Software Testing ClubAgile Testing - Software Testing Club
Agile Testing - Software Testing Club
 
BDD y tests automatizados
BDD y tests automatizadosBDD y tests automatizados
BDD y tests automatizados
 
TDD Code Retreat
TDD Code RetreatTDD Code Retreat
TDD Code Retreat
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bdd
 
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
 
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
 
Software Performance Testing: Conceptos y metodología
Software Performance Testing: Conceptos y metodologíaSoftware Performance Testing: Conceptos y metodología
Software Performance Testing: Conceptos y metodología
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamiento
 

Similar a [ES] webcat 2014-03 Demystifying Development Techniques

Be agile my friend - Cómo gestionar proyectos y dormir por las noches
Be agile my friend - Cómo gestionar proyectos y dormir por las nochesBe agile my friend - Cómo gestionar proyectos y dormir por las noches
Be agile my friend - Cómo gestionar proyectos y dormir por las noches
Álvaro Agea Herradón
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Jordi Llonch
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Jordi Llonch
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Akamon Engineering
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
Alfredo Chavez
 

Similar a [ES] webcat 2014-03 Demystifying Development Techniques (20)

"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
 
Clean code 9
Clean code 9Clean code 9
Clean code 9
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mock
 
Be agile my friend - Cómo gestionar proyectos y dormir por las noches
Be agile my friend - Cómo gestionar proyectos y dormir por las nochesBe agile my friend - Cómo gestionar proyectos y dormir por las noches
Be agile my friend - Cómo gestionar proyectos y dormir por las noches
 
Qualitytest
QualitytestQualitytest
Qualitytest
 
Introducción a Test Driven Development en PHPSevilla
Introducción a Test Driven Development en PHPSevillaIntroducción a Test Driven Development en PHPSevilla
Introducción a Test Driven Development en PHPSevilla
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticas
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Testing en proyectos Grails del día a día. Greach 2013
Testing en proyectos Grails del día a día. Greach 2013Testing en proyectos Grails del día a día. Greach 2013
Testing en proyectos Grails del día a día. Greach 2013
 
Scrum à la Pablo (Español)
Scrum à la Pablo (Español)Scrum à la Pablo (Español)
Scrum à la Pablo (Español)
 
Mitos y leyendas de la gestión ágil y scrum
Mitos y leyendas de la gestión ágil y scrumMitos y leyendas de la gestión ágil y scrum
Mitos y leyendas de la gestión ágil y scrum
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Conceptos de desarrollo ágil
Conceptos de desarrollo ágilConceptos de desarrollo ágil
Conceptos de desarrollo ágil
 

Último

DOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptx
DOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptxDOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptx
DOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptx
JOSE VILLARROEL
 
Tema 8 LA DICTADURA FRANQUISTA (1939-1975).pdf
Tema 8     LA DICTADURA FRANQUISTA (1939-1975).pdfTema 8     LA DICTADURA FRANQUISTA (1939-1975).pdf
Tema 8 LA DICTADURA FRANQUISTA (1939-1975).pdf
anagc806
 
PPT Reforma Pensional.pptx...............
PPT Reforma Pensional.pptx...............PPT Reforma Pensional.pptx...............
PPT Reforma Pensional.pptx...............
bercueseb98
 
Nivel-de-Endeudamiento.financiero para las empresas
Nivel-de-Endeudamiento.financiero para las empresasNivel-de-Endeudamiento.financiero para las empresas
Nivel-de-Endeudamiento.financiero para las empresas
POOLQUIMICOSSUMINIST
 
La división azul.pptxkkkkkkkkkkkkkkkkkkjjj
La división azul.pptxkkkkkkkkkkkkkkkkkkjjjLa división azul.pptxkkkkkkkkkkkkkkkkkkjjj
La división azul.pptxkkkkkkkkkkkkkkkkkkjjj
DanielSerranoAlmarch
 
Sensor de Temperatura Automotriz y Vehicularte
Sensor de Temperatura Automotriz y VehicularteSensor de Temperatura Automotriz y Vehicularte
Sensor de Temperatura Automotriz y Vehicularte
Condor Tuyuyo
 
Examen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Examen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnExamen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Examen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
YadiraMarquez8
 

Último (20)

DOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptx
DOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptxDOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptx
DOCUMENTO PROVIDENCIA 003 DEL INSTITUTO VZLANO DEL SEGURO SOCIAL.pptx
 
CONTRATACIONES CON EL ESTADO PERUANO.pptx
CONTRATACIONES CON EL ESTADO PERUANO.pptxCONTRATACIONES CON EL ESTADO PERUANO.pptx
CONTRATACIONES CON EL ESTADO PERUANO.pptx
 
Tema 8 LA DICTADURA FRANQUISTA (1939-1975).pdf
Tema 8     LA DICTADURA FRANQUISTA (1939-1975).pdfTema 8     LA DICTADURA FRANQUISTA (1939-1975).pdf
Tema 8 LA DICTADURA FRANQUISTA (1939-1975).pdf
 
PPT Reforma Pensional.pptx...............
PPT Reforma Pensional.pptx...............PPT Reforma Pensional.pptx...............
PPT Reforma Pensional.pptx...............
 
Contabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contableContabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contable
 
ANÁLISIS DE TERRENOS (2).pdfiydguqdvgjhd
ANÁLISIS DE TERRENOS (2).pdfiydguqdvgjhdANÁLISIS DE TERRENOS (2).pdfiydguqdvgjhd
ANÁLISIS DE TERRENOS (2).pdfiydguqdvgjhd
 
Control estadístico de la calidad en la industria
Control estadístico de la calidad en la industriaControl estadístico de la calidad en la industria
Control estadístico de la calidad en la industria
 
Nivel-de-Endeudamiento.financiero para las empresas
Nivel-de-Endeudamiento.financiero para las empresasNivel-de-Endeudamiento.financiero para las empresas
Nivel-de-Endeudamiento.financiero para las empresas
 
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBREDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
 
Prestaciones sociales y servicios sociales
Prestaciones sociales y servicios socialesPrestaciones sociales y servicios sociales
Prestaciones sociales y servicios sociales
 
Correcion del libro al medio hay sitio.pptx
Correcion del libro al medio hay sitio.pptxCorrecion del libro al medio hay sitio.pptx
Correcion del libro al medio hay sitio.pptx
 
La división azul.pptxkkkkkkkkkkkkkkkkkkjjj
La división azul.pptxkkkkkkkkkkkkkkkkkkjjjLa división azul.pptxkkkkkkkkkkkkkkkkkkjjj
La división azul.pptxkkkkkkkkkkkkkkkkkkjjj
 
Sensor de Temperatura Automotriz y Vehicularte
Sensor de Temperatura Automotriz y VehicularteSensor de Temperatura Automotriz y Vehicularte
Sensor de Temperatura Automotriz y Vehicularte
 
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABACAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
 
DOC-20240503-WA0003. cadena de valor.pdf
DOC-20240503-WA0003. cadena de valor.pdfDOC-20240503-WA0003. cadena de valor.pdf
DOC-20240503-WA0003. cadena de valor.pdf
 
Presentación Gestión Corporativa Azul_20240511_200743_0000.pdf
Presentación Gestión Corporativa Azul_20240511_200743_0000.pdfPresentación Gestión Corporativa Azul_20240511_200743_0000.pdf
Presentación Gestión Corporativa Azul_20240511_200743_0000.pdf
 
Examen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Examen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnExamen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Examen Tribu_removednnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE  INCERTIDUMBREDISEÑO DE ESTRATEGIAS EN MOMENTOS DE  INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
 
Operación y Apilador electrico en el trabajo
Operación y Apilador electrico en el trabajoOperación y Apilador electrico en el trabajo
Operación y Apilador electrico en el trabajo
 

[ES] webcat 2014-03 Demystifying Development Techniques