SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Haciendo realidad la agilidad




               Behavior Driven Development
               Aplicado en Acceptance Test
© flioukas


             Christian Ramírez Arévalo
Agenda


   Introducción
   Behavior Driven Development
   El testing y el BDD
   Herramientas
   El BDD y el usuario
   Beneficios reales
TDD

   Es de las primeras piedras del Agile Development

   Surge TDD como la esperanza para resolver huecos en el
    diseño

   No es un método de pruebas, es una forma de diseño

   No es facil de asimilar el concepto y menos de transmitir, en
    la vida real

   Confusion!!! tener pruebas unitarias no es hacer TDD
TDD y el mundo

   Para el usuario de negocio es como hablar con él en CHINO!!

   Para la gente de QA no tiene mucho valor

   Se enfoca en los metodos no en el comportamiento

   No es reutilizable en el dominio de negocio

   A veces entre desarrolladores no se entiende, o ni siquiera es
    facil de leer
¿Qué hace?

public void testAla()
{
    String address = "ala@missiondata.com";
    boolean expectedResult = true;
 boolean actualResult =
Validator.isValidEmailAddress(address);
  assert( "ntestAla, EXPECTED: " + expectedResult + ", GOT:
" + actualResult,
     (expectedResult==actualResult) );
}
En resumen...
Vamos un poco mas lejos ...




     TDD → BDD
¿Beer Driven Development?
Behavior Driven Development

   BDD original por Dan North

   BDD gira entorno al comportamiento del sistema

   Todo tiene comportamiento

   BDD ayuda a incrementar el testability
Behavior Driven Development

   Utiliza un DSL para plantear el comportamiento de las
    aplicaciones

   Domain-Specific Language (DSL)

   DSL, entre lenguaje de programación y lenguaje de script

   DSL permite que la solución(requerimiento) sea expresada en
    el idioma y nivel de abstraccion del dominio del problema
Behavior Driven Development

   La convencion Given/When/Then es la idea central

   Humanos    causa → efecto

   Software Engineering Entrada → Proceso → Salida

   Cambia tu forma de pensar

   If/And/Then ¿te parece conocido?
Behavior Driven Development

   Se puede ver como una FSM

   Matemáticamente, es posible demostrar que esta completo y
    es consistente nuestro requerimiento

   Mejor DSL, mejor automatización, mejores requerimientos

   Uso de un muy específico y pequeño vocabulario, para evitar
    malos entendidos
Behavior Driven Development

   Tambien describe: rol, característica y beneficio

   Utiliza las historias como unidad minima de funcionalidad y
    por lo tanto tambien de entrega

   Las historias deben ser producto de conversaciones

   Ayuda a delimitar el alcance
Estructura de una historia
Title (one line describing the story)


Narrative:
As a [role]
I want [feature]
So that [benefit]


Acceptance Criteria: (presented as Scenarios)


Scenario 1: Title
Given [context]
 And [some more context]...
When [event]
Then [outcome]
 And [another outcome]...
BDD y el testing

   Requerimientos no son ambigüos

   Se define el criterio de aceptación de forma inherente en las
    historias

   Diseño reutilizable en el dominio

   Documentación de la aplicación

   Visibilidad, solo se puede probar lo que se ve
BDD y el testing

   Automatización sencilla

   Código de pruebas automatizadas reutilizable

   Mejor feedback en Continuous Testing

   E2E claro para el usuario

   Funciona para web, cliente-servidor y escritorio

   Caso y escenario de pruebas en texto plano → pruebas
    automatizadas
BDD y el testing

   Solo hay errores de programación no de entendimiento

   Las pruebas de aceptación se acortan en tiempo

   Pruebas de usuario guíadas

   El usuario puede probar con todos los datos con que siempre
    soño hacerlo

   Diseño y código de pruebas automatizadas más facil de
    mantener
BDD y el usuario

   Expertos del dominio pueden por si mismos entender, validar,
    modificar, incluso hasta escribir los requerimientos en el DSL
    especificado

   Negocio y TI se refieren al mismo sistema de la misma forma

   Ve exactamente lo que pidio
Pruebas de aceptación

   Propiedad de los clientes
   Escrito en conjunto con los clientes, desarrolladores y
    analistas de prueba
   Enfoque en el Qué y no sobre el Cómo
   Expresada en lenguaje de dominio del problema
   Conciso, preciso y sin ambiguedades

   BDD se vislumbra como la solución natural
Pruebas de aceptación

   Aplicación
       Crear la historia de la característica (Requerimiento)
       Traducir empleando el DSL especificado
       Automatizar la prueba funcional
       Codificar la funcionalidad que pase la prueba
Herramientas

   Interpretan scripts en lenguaje natural

   Core en la definición de los pasos

   API

   Data-driven mediante tablas
Herramientas
   Pionera
       Jbehave
   La más completa
       Cucumber → Mundo ruby
       DSL → Gherkin
       Más de 30 idiomas
       Funciona con ruby, Java, .Net, Python, etc.
       Pensada para desarrollo pero la usamos para testing
   Enfocada a testing
       Twist
       Thoughtworks
       Entorno colaborativo
       Pensada para testing
       IDE
Beneficios

   Mejora la calidad, productividad, confiabilidad, mantenibilidad,
    portabilidad y reutilizacion

   Validación a nivel de dominio

   Ahorros de tiempo en UAT
Desventajas

   Proliferación de DSL similares no estandarizados

   Es necesario aprender un nuevo lenguaje

   Limitado en su aplicación, pruebas funcionales

   No es recomendable para pruebas no funcionales
       Requerimiento ambigüo
       Technical story


   Equipos TDD renuentes
¿Preguntas?
Contacto

   Ing. Christian Ramírez
   CERTUM, México D.F.
   www.certum.com
   Email: chramirez@certum.com
   Twitter: @chrix2
   Telefono: 52-55-55-57-53-70

Weitere ähnliche Inhalte

Was ist angesagt?

BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoAgustin Ramos
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderEduardo Riol
 
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ónPaulo Clavijo
 
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
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009Pepe
 
FACCI METODOLOGIAS AGILES
FACCI METODOLOGIAS AGILESFACCI METODOLOGIAS AGILES
FACCI METODOLOGIAS AGILESafrancoing
 

Was ist angesagt? (12)

BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamiento
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poder
 
TDD
TDDTDD
TDD
 
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
 
BDD para la mejora de la calidad software
BDD para la mejora de la calidad softwareBDD para la mejora de la calidad software
BDD para la mejora de la calidad software
 
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
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009
 
Manual 02
Manual 02Manual 02
Manual 02
 
TDD talk
TDD talkTDD talk
TDD talk
 
Desarrollo de Software
Desarrollo de SoftwareDesarrollo de Software
Desarrollo de Software
 
FACCI METODOLOGIAS AGILES
FACCI METODOLOGIAS AGILESFACCI METODOLOGIAS AGILES
FACCI METODOLOGIAS AGILES
 
Manual01
Manual01Manual01
Manual01
 

Ähnlich wie Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation

Behavior1
Behavior1Behavior1
Behavior1arajar
 
Behavior Driven Development(Abraham Infante).pdf
Behavior Driven Development(Abraham Infante).pdfBehavior Driven Development(Abraham Infante).pdf
Behavior Driven Development(Abraham Infante).pdfAbrahamWilfredoInfan
 
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Software Guru
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberSoftware Guru
 
Crowdar - Introducción a BDD
Crowdar - Introducción a BDDCrowdar - Introducción a BDD
Crowdar - Introducción a BDDJavier Re
 
Meetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignMeetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignOsvaldo Mercado Coss
 
Integrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones ReactIntegrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones ReactBelatrix Software
 
Bedomax - Campus Party 2013
Bedomax - Campus Party 2013Bedomax - Campus Party 2013
Bedomax - Campus Party 2013bedomax
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasRodrigo Corral
 
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
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweekCarlos Ble
 
Cruzando el abismo educativo de la ingeniería de software utilizando Software...
Cruzando el abismo educativo de la ingeniería de software utilizando Software...Cruzando el abismo educativo de la ingeniería de software utilizando Software...
Cruzando el abismo educativo de la ingeniería de software utilizando Software...Applied Computing Group
 
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_seleniumTech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_seleniumEduardo Riol
 

Ähnlich wie Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation (20)

Behavior1
Behavior1Behavior1
Behavior1
 
Behavior Driven Development(Abraham Infante).pdf
Behavior Driven Development(Abraham Infante).pdfBehavior Driven Development(Abraham Infante).pdf
Behavior Driven Development(Abraham Infante).pdf
 
Domain driven desing
Domain driven desingDomain driven desing
Domain driven desing
 
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
Bddtddatdd
BddtddatddBddtddatdd
Bddtddatdd
 
Crowdar - Introducción a BDD
Crowdar - Introducción a BDDCrowdar - Introducción a BDD
Crowdar - Introducción a BDD
 
Metodologías de Desarrollo de Software
Metodologías de Desarrollo de SoftwareMetodologías de Desarrollo de Software
Metodologías de Desarrollo de Software
 
Tw ¿Por qué elegir ágil?
Tw   ¿Por qué elegir ágil? Tw   ¿Por qué elegir ágil?
Tw ¿Por qué elegir ágil?
 
Meetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignMeetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven Design
 
Integrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones ReactIntegrando Test Driven Development en aplicaciones React
Integrando Test Driven Development en aplicaciones React
 
Bedomax - Campus Party 2013
Bedomax - Campus Party 2013Bedomax - Campus Party 2013
Bedomax - Campus Party 2013
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas Prácticas
 
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
 
Calidad De Codigo
Calidad De CodigoCalidad De Codigo
Calidad De Codigo
 
Desarrollo de Software 2013
Desarrollo de Software 2013Desarrollo de Software 2013
Desarrollo de Software 2013
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Cruzando el abismo educativo de la ingeniería de software utilizando Software...
Cruzando el abismo educativo de la ingeniería de software utilizando Software...Cruzando el abismo educativo de la ingeniería de software utilizando Software...
Cruzando el abismo educativo de la ingeniería de software utilizando Software...
 
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_seleniumTech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
 

Mehr von Agile Spain

Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Agile Spain
 
Visual Scrum - What you see is What you get
Visual Scrum - What you see is What you getVisual Scrum - What you see is What you get
Visual Scrum - What you see is What you getAgile Spain
 
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Agile Spain
 
Análisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en ArgentinaAnálisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en ArgentinaAgile Spain
 
Como cocinar tu contrato ágil
Como cocinar tu contrato ágilComo cocinar tu contrato ágil
Como cocinar tu contrato ágilAgile Spain
 
Introducción a la agilidad
Introducción a la agilidadIntroducción a la agilidad
Introducción a la agilidadAgile Spain
 
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpCas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpAgile Spain
 
Cas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionCas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionAgile Spain
 
Cas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilCas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilAgile Spain
 
Cas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposCas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposAgile Spain
 
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioCas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioAgile Spain
 
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Agile Spain
 
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Agile Spain
 
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionCas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionAgile Spain
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsAgile Spain
 
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipCas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipAgile Spain
 
Cas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesCas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesAgile Spain
 
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesCas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesAgile Spain
 
Ser ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoSer ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoAgile Spain
 
Cuore.js: Una historia de amor
Cuore.js: Una historia de amorCuore.js: Una historia de amor
Cuore.js: Una historia de amorAgile Spain
 

Mehr von Agile Spain (20)

Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...
 
Visual Scrum - What you see is What you get
Visual Scrum - What you see is What you getVisual Scrum - What you see is What you get
Visual Scrum - What you see is What you get
 
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
 
Análisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en ArgentinaAnálisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en Argentina
 
Como cocinar tu contrato ágil
Como cocinar tu contrato ágilComo cocinar tu contrato ágil
Como cocinar tu contrato ágil
 
Introducción a la agilidad
Introducción a la agilidadIntroducción a la agilidad
Introducción a la agilidad
 
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpCas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
 
Cas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionCas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracion
 
Cas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilCas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agil
 
Cas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposCas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equipos
 
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioCas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
 
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
 
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
 
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionCas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projects
 
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipCas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
 
Cas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesCas2010 pair-programming-strategies
Cas2010 pair-programming-strategies
 
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesCas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
 
Ser ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoSer ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remoto
 
Cuore.js: Una historia de amor
Cuore.js: Una historia de amorCuore.js: Una historia de amor
Cuore.js: Una historia de amor
 

Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation

  • 1. Haciendo realidad la agilidad Behavior Driven Development Aplicado en Acceptance Test © flioukas Christian Ramírez Arévalo
  • 2. Agenda  Introducción  Behavior Driven Development  El testing y el BDD  Herramientas  El BDD y el usuario  Beneficios reales
  • 3. TDD  Es de las primeras piedras del Agile Development  Surge TDD como la esperanza para resolver huecos en el diseño  No es un método de pruebas, es una forma de diseño  No es facil de asimilar el concepto y menos de transmitir, en la vida real  Confusion!!! tener pruebas unitarias no es hacer TDD
  • 4. TDD y el mundo  Para el usuario de negocio es como hablar con él en CHINO!!  Para la gente de QA no tiene mucho valor  Se enfoca en los metodos no en el comportamiento  No es reutilizable en el dominio de negocio  A veces entre desarrolladores no se entiende, o ni siquiera es facil de leer
  • 5. ¿Qué hace? public void testAla() { String address = "ala@missiondata.com"; boolean expectedResult = true; boolean actualResult = Validator.isValidEmailAddress(address); assert( "ntestAla, EXPECTED: " + expectedResult + ", GOT: " + actualResult, (expectedResult==actualResult) ); }
  • 7. Vamos un poco mas lejos ... TDD → BDD
  • 9. Behavior Driven Development  BDD original por Dan North  BDD gira entorno al comportamiento del sistema  Todo tiene comportamiento  BDD ayuda a incrementar el testability
  • 10. Behavior Driven Development  Utiliza un DSL para plantear el comportamiento de las aplicaciones  Domain-Specific Language (DSL)  DSL, entre lenguaje de programación y lenguaje de script  DSL permite que la solución(requerimiento) sea expresada en el idioma y nivel de abstraccion del dominio del problema
  • 11. Behavior Driven Development  La convencion Given/When/Then es la idea central  Humanos causa → efecto  Software Engineering Entrada → Proceso → Salida  Cambia tu forma de pensar  If/And/Then ¿te parece conocido?
  • 12. Behavior Driven Development  Se puede ver como una FSM  Matemáticamente, es posible demostrar que esta completo y es consistente nuestro requerimiento  Mejor DSL, mejor automatización, mejores requerimientos  Uso de un muy específico y pequeño vocabulario, para evitar malos entendidos
  • 13. Behavior Driven Development  Tambien describe: rol, característica y beneficio  Utiliza las historias como unidad minima de funcionalidad y por lo tanto tambien de entrega  Las historias deben ser producto de conversaciones  Ayuda a delimitar el alcance
  • 14. Estructura de una historia Title (one line describing the story) Narrative: As a [role] I want [feature] So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: Title Given [context] And [some more context]... When [event] Then [outcome] And [another outcome]...
  • 15. BDD y el testing  Requerimientos no son ambigüos  Se define el criterio de aceptación de forma inherente en las historias  Diseño reutilizable en el dominio  Documentación de la aplicación  Visibilidad, solo se puede probar lo que se ve
  • 16. BDD y el testing  Automatización sencilla  Código de pruebas automatizadas reutilizable  Mejor feedback en Continuous Testing  E2E claro para el usuario  Funciona para web, cliente-servidor y escritorio  Caso y escenario de pruebas en texto plano → pruebas automatizadas
  • 17. BDD y el testing  Solo hay errores de programación no de entendimiento  Las pruebas de aceptación se acortan en tiempo  Pruebas de usuario guíadas  El usuario puede probar con todos los datos con que siempre soño hacerlo  Diseño y código de pruebas automatizadas más facil de mantener
  • 18. BDD y el usuario  Expertos del dominio pueden por si mismos entender, validar, modificar, incluso hasta escribir los requerimientos en el DSL especificado  Negocio y TI se refieren al mismo sistema de la misma forma  Ve exactamente lo que pidio
  • 19. Pruebas de aceptación  Propiedad de los clientes  Escrito en conjunto con los clientes, desarrolladores y analistas de prueba  Enfoque en el Qué y no sobre el Cómo  Expresada en lenguaje de dominio del problema  Conciso, preciso y sin ambiguedades  BDD se vislumbra como la solución natural
  • 20. Pruebas de aceptación  Aplicación  Crear la historia de la característica (Requerimiento)  Traducir empleando el DSL especificado  Automatizar la prueba funcional  Codificar la funcionalidad que pase la prueba
  • 21. Herramientas  Interpretan scripts en lenguaje natural  Core en la definición de los pasos  API  Data-driven mediante tablas
  • 22. Herramientas  Pionera  Jbehave  La más completa  Cucumber → Mundo ruby  DSL → Gherkin  Más de 30 idiomas  Funciona con ruby, Java, .Net, Python, etc.  Pensada para desarrollo pero la usamos para testing  Enfocada a testing  Twist  Thoughtworks  Entorno colaborativo  Pensada para testing  IDE
  • 23. Beneficios  Mejora la calidad, productividad, confiabilidad, mantenibilidad, portabilidad y reutilizacion  Validación a nivel de dominio  Ahorros de tiempo en UAT
  • 24. Desventajas  Proliferación de DSL similares no estandarizados  Es necesario aprender un nuevo lenguaje  Limitado en su aplicación, pruebas funcionales  No es recomendable para pruebas no funcionales  Requerimiento ambigüo  Technical story  Equipos TDD renuentes
  • 26. Contacto  Ing. Christian Ramírez  CERTUM, México D.F.  www.certum.com  Email: chramirez@certum.com  Twitter: @chrix2  Telefono: 52-55-55-57-53-70