SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
BDD para la mejora de la calidad
software
Enrique Sánchez
Technical Team Lead @ Medianet Software
Más de 3 años de experiencia en empresas como
Evangelista BDD
¿Por qué esta charla?
Hay dos problemas fundamentales en
el desarrollo de software
!
1. Construir el software mal
2. Construir el software incorrecto
Coste de un
cambio
Tiempo
Hay que reducir al máximo
los riesgos
Malentendidos gastan tiempo
Defectos provocan retrasos
Fallos en la planificación dañan tu reputación
“
”
56% of all bugs can be traced to errors made during the
requirement stage.
Tom deMarco
“ ”
68% failed projects
Standish Group Report 2009
“
”
I had a problem (…) Programmers wanted to know where to
start, what to test and what not to test, how much to test in
one go, what to call their tests, and how to understand why a
test fails.
Better Software, March 2006
Dan North
@tastapod
Engineering
Product
Centrémonos en la comunicación
Definamos un lenguaje común
Anticipémonos a los problemas
Mantengamos una buena documentación
Behavior Driven Development
“
”
BDD is a second-generation, outside-in, pull-based, multiple-
stakeholder, multiple-scale, high-automation, agile
methodology. It describes a cycle of interactions with well-
defined outputs, resulting in the delivery of working, tested
software that matters.
Agile specifications, BDD and Testing eXchange, November 2009
Dan North
@tastapod
Definamos lo que el software debe de hacer en términos del
comportamiento deseado
Definamos lo que el software debe de hacer en términos del
comportamiento deseado
BUSINESS
Outside - InDesde negocio a desarrollo
Comunicaciónentre stakeholders, producto, desarrollo, testing…
Gherkin
Creamos una narrativa
¿Por qué?
Para tener un lenguaje común que
todos entendamos
¿Cómo?
Escenarios y Pasos
Narrativa
Ejemplo Describe
ImplementaDiseña
Feature
In	
  order	
  to	
  definir un objetivo
As	
  a	
  Rol/actor
I	
  want	
  to descripción de lo que se va a hacer
Scenario
Given	
  setup
When	
  interacción/cambio/acción
Then comprobamos que todo fue como esperamos
¿Y en la vida real?
¿Qué herramientas usamos?
Nosotros usamos Cucumber
Framework BDD escrito en Ruby
¿Por qué?
Mucha documentación y fácil de
aprender
¿Cómo funciona?
¿Qué proceso seguimos?Que pasos seguir para implementar BDD
Definimos los Acceptance Criteria
Features / Scenarios
Creamos una definición formal de un
escenario
Hacemos algo de magia…
Creamos tests automáticos que hagan
que prueben la funcionalidad
Creamos el entorno del proyecto
Evoluciona y adáptate
Personas antes que herramientas
Adapta las herramientas a tu proceso no al revés
Podemos mejorar la comunicación
Mantenemos a la gente involucrada
Simplificamos el proceso
Tenemos documentación actualizada
Entonces…
Preguntas?
Gracias!
Enrique Sánchez | hola@enrique-sanchez.me | @EnriqueSanchezB

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Programación extrema
Programación extremaProgramación extrema
Programación extrema
 
Programación Extrema (XP)
Programación Extrema (XP)Programación Extrema (XP)
Programación Extrema (XP)
 
Tech Meetup - Agile testing vs Testing in Agile
Tech Meetup - Agile testing vs Testing in AgileTech Meetup - Agile testing vs Testing in Agile
Tech Meetup - Agile testing vs Testing in Agile
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
 
DevDayAr de Junior a Sernior ¿Cual es el camino?
DevDayAr de Junior a Sernior ¿Cual es el camino?DevDayAr de Junior a Sernior ¿Cual es el camino?
DevDayAr de Junior a Sernior ¿Cual es el camino?
 
Creando rascacielos con tdd
Creando rascacielos con tddCreando rascacielos con tdd
Creando rascacielos con tdd
 
Pracicas de Ingenieria de Software
Pracicas de Ingenieria de SoftwarePracicas de Ingenieria de Software
Pracicas de Ingenieria de Software
 
Grupo# 5 problemas en el desarrollo de software
Grupo# 5 problemas en el desarrollo de softwareGrupo# 5 problemas en el desarrollo de software
Grupo# 5 problemas en el desarrollo de software
 
3.desarrollo ágil
3.desarrollo ágil3.desarrollo ágil
3.desarrollo ágil
 
problemas del software
problemas del softwareproblemas del software
problemas del software
 
Programacion extrema_WR
Programacion extrema_WRProgramacion extrema_WR
Programacion extrema_WR
 
ingenieria de software
ingenieria de softwareingenieria de software
ingenieria de software
 
Programacion Extrema
Programacion ExtremaProgramacion Extrema
Programacion Extrema
 
TDD talk
TDD talkTDD talk
TDD talk
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 
Enigma produccion productor
Enigma produccion productorEnigma produccion productor
Enigma produccion productor
 
Manual01
Manual01Manual01
Manual01
 
Ingeniería de software
Ingeniería de software Ingeniería de software
Ingeniería de software
 

Destacado

Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Agustin Ramos
 
Introducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentIntroducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentRicardo Markiewicz
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoAgustin Ramos
 
Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Alexander Calderón
 
Arquitectura de base de datos xpo
Arquitectura de base de datos  xpoArquitectura de base de datos  xpo
Arquitectura de base de datos xpodoc-92
 
Eliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDDEliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDDJorge Gamba
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven DevelopmentAlberto Perdomo
 
Base de datos relacional
Base de datos relacionalBase de datos relacional
Base de datos relacionaldoc-92
 
Ejemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalEjemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalGema López
 
Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacionalAlex Javier
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bddlsajrf
 

Destacado (16)

Selenium
SeleniumSelenium
Selenium
 
Introducción a gherkin
Introducción a gherkinIntroducción a gherkin
Introducción a gherkin
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
 
Introducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentIntroducción a Behaviour Driven Development
Introducción a Behaviour Driven Development
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamiento
 
Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02
 
Arquitectura de base de datos xpo
Arquitectura de base de datos  xpoArquitectura de base de datos  xpo
Arquitectura de base de datos xpo
 
Eliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDDEliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDD
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD
BDD TDD ATDD
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven Development
 
Base de datos distribuidas
Base de datos distribuidasBase de datos distribuidas
Base de datos distribuidas
 
Base de datos relacional
Base de datos relacionalBase de datos relacional
Base de datos relacional
 
Ejemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalEjemplo de Base de Datos Relacional
Ejemplo de Base de Datos Relacional
 
Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacional
 
BDD y tests automatizados
BDD y tests automatizadosBDD y tests automatizados
BDD y tests automatizados
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bdd
 

Similar a BDD mejora calidad software

Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaManuel Rubio
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderEduardo Riol
 
Bdd, cucumber y gherkin. desarrollo dirigido por comportamiento
Bdd, cucumber y gherkin. desarrollo dirigido por comportamientoBdd, cucumber y gherkin. desarrollo dirigido por comportamiento
Bdd, cucumber y gherkin. desarrollo dirigido por comportamientoRoberto Andres Remonda
 
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioCas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioEduardo Riol
 
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
 
Diferencia entre Viable y Factible
Diferencia entre Viable y FactibleDiferencia entre Viable y Factible
Diferencia entre Viable y Factiblebettyrondon123
 
Construyendo software de clase mundia
Construyendo software de clase mundiaConstruyendo software de clase mundia
Construyendo software de clase mundiaGabriel Oliva
 
Unidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De SoftwareUnidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De SoftwareSergio Sanchez
 
Unidad 1.2 B Metodos Agiles 1
Unidad 1.2 B Metodos Agiles  1Unidad 1.2 B Metodos Agiles  1
Unidad 1.2 B Metodos Agiles 1Sergio Sanchez
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationAgile Spain
 

Similar a BDD mejora calidad software (20)

Scrum y craftsmanship
Scrum y craftsmanshipScrum y craftsmanship
Scrum y craftsmanship
 
Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la Práctica
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poder
 
Bdd, cucumber y gherkin. desarrollo dirigido por comportamiento
Bdd, cucumber y gherkin. desarrollo dirigido por comportamientoBdd, cucumber y gherkin. desarrollo dirigido por comportamiento
Bdd, cucumber y gherkin. desarrollo dirigido por comportamiento
 
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioCas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocio
 
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
 
Diferencia entre Viable y Factible
Diferencia entre Viable y FactibleDiferencia entre Viable y Factible
Diferencia entre Viable y Factible
 
Proceso desarrollo software
Proceso desarrollo softwareProceso desarrollo software
Proceso desarrollo software
 
Metodologías de Desarrollo de Software
Metodologías de Desarrollo de SoftwareMetodologías de Desarrollo de Software
Metodologías de Desarrollo de Software
 
METODOLOGÍAS ÁGILES EN TI
METODOLOGÍAS ÁGILES EN TIMETODOLOGÍAS ÁGILES EN TI
METODOLOGÍAS ÁGILES EN TI
 
METODOLOGÍAS ÁGILES
METODOLOGÍAS ÁGILESMETODOLOGÍAS ÁGILES
METODOLOGÍAS ÁGILES
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Construyendo software de clase mundia
Construyendo software de clase mundiaConstruyendo software de clase mundia
Construyendo software de clase mundia
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
Unidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De SoftwareUnidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De Software
 
Vicky
VickyVicky
Vicky
 
Xp
XpXp
Xp
 
Unidad 1.2 B Metodos Agiles 1
Unidad 1.2 B Metodos Agiles  1Unidad 1.2 B Metodos Agiles  1
Unidad 1.2 B Metodos Agiles 1
 
Roles desarrollo del software
Roles desarrollo del softwareRoles desarrollo del software
Roles desarrollo del software
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 

Más de Enrique Sánchez-Bayuela

Más de Enrique Sánchez-Bayuela (9)

Lecciones aprendidas con appium
Lecciones aprendidas con appiumLecciones aprendidas con appium
Lecciones aprendidas con appium
 
Workshop calabash appium
Workshop calabash appiumWorkshop calabash appium
Workshop calabash appium
 
Capybara vs watir
Capybara vs watirCapybara vs watir
Capybara vs watir
 
Cómo ser un Agile Tester (y no morir intentándolo)
Cómo ser un Agile Tester (y no morir intentándolo)Cómo ser un Agile Tester (y no morir intentándolo)
Cómo ser un Agile Tester (y no morir intentándolo)
 
Workshop Calabash Appium
Workshop Calabash AppiumWorkshop Calabash Appium
Workshop Calabash Appium
 
Seminario Calabash - VLCTesting 2014
Seminario Calabash - VLCTesting 2014Seminario Calabash - VLCTesting 2014
Seminario Calabash - VLCTesting 2014
 
Just Code or How I learned to write code and stop worrying about the environment
Just Code or How I learned to write code and stop worrying about the environmentJust Code or How I learned to write code and stop worrying about the environment
Just Code or How I learned to write code and stop worrying about the environment
 
Why do you say BDD if it is Cucumber?
Why do you say BDD if it is Cucumber?Why do you say BDD if it is Cucumber?
Why do you say BDD if it is Cucumber?
 
Tuenti & QA
Tuenti & QATuenti & QA
Tuenti & QA
 

BDD mejora calidad software