Crowdar - Introducción a BDD

40
Introducción al desarrollo guiado por comportamiento (BDD) Mascheroni, Maximiliano Agustin Contact me at LinkedIn [email protected] www.crowdar.com.ar

Transcript of Crowdar - Introducción a BDD

Page 1: Crowdar - Introducción a BDD

Introducción al desarrollo guiado por comportamiento (BDD)

Mascheroni, Maximiliano AgustinContact me at [email protected]

www.crowdar.com.ar

Page 2: Crowdar - Introducción a BDD

Antes de comenzar

● Requerimientos:◦ Conocimiento en pruebas de software.◦ Conocimientos mínimos en pruebas

automatizadas de software.◦ Conocimientos mínimos de metodologías

ágiles● BDD = TDD + DDD

Page 3: Crowdar - Introducción a BDD
Page 4: Crowdar - Introducción a BDD

Introducción

● Nace como una buena práctica en la metodología XP (Programación Extrema)

● Hoy se la usa en muchas otras metodologías como:◦ Proceso Unificado de Rational◦ Scrum

Page 5: Crowdar - Introducción a BDD

TDD

Page 6: Crowdar - Introducción a BDD

Definición

● Desarrollo guiado por pruebas de software

● Surge de la fusión de otras dos prácticas:◦ TFD (Test First Development)◦ Refactoring (Refactorización)

Page 7: Crowdar - Introducción a BDD

Definición

● TFD:◦ Consiste en escribir el test antes que el código

fuente.● Refactorización:◦ Consiste en limpiar o mejorar el código (en

este caso el test).◦ Puede implicar arreglar un test que dejó de

funcionar.

Page 8: Crowdar - Introducción a BDD
Page 9: Crowdar - Introducción a BDD
Page 10: Crowdar - Introducción a BDD

Ventajas

● Mayor Calidad.● Diseño enfocado en las necesidades● Mayor simplicidad en el diseño.● Mayor productividad.● Menos tiempo invertido en debugging.

Page 11: Crowdar - Introducción a BDD

Desventajas

● Difícil de implementar en la capa de Interfaz de Usuario.

● Estado de la Base de Datos.● Errores no identificados (exceso de

confianza).● Curva de aprendizaje pronunciada.

Page 12: Crowdar - Introducción a BDD
Page 13: Crowdar - Introducción a BDD
Page 14: Crowdar - Introducción a BDD

Introducción

● Enfoque para el desarrollo de software con necesidades complejas.

● Realiza una profunda conexión entre la implementación y los conceptos del modelo y núcleo del negocio.

Page 15: Crowdar - Introducción a BDD
Page 16: Crowdar - Introducción a BDD

Premisas

● Enfocarse en el dominio y la necesidad, y no en la implementación.

● Apuntar hacia la colaboración entre los expertos del dominio, el negocio y los desarrolladores.

● Sistemas complejos deben ser modelados para su entendimiento.

Page 17: Crowdar - Introducción a BDD

Premisas

● Utilizar el lenguaje ubicuo◦ Expresar el dominio del problema en términos

de negocio.◦ Ejemplo:Como un doctorQuiero tener una planilla online con la historia clínica de mis pacientesDe manera de consultarla desde cualquier lugar con conección a Internet

Page 18: Crowdar - Introducción a BDD
Page 19: Crowdar - Introducción a BDD

Introducción

● Es un proceso de desarrollo de software.

● Surge a partir del desarrollo guiado por pruebas (TDD), fusionado con DDD.

● Es una técnica para desarrollar software, pero puede utilizarse muy eficazmente en el desarrollo de pruebas automatizadas.

Page 20: Crowdar - Introducción a BDD

“BDD es una práctica ágil”

Page 21: Crowdar - Introducción a BDD

Agile Manifesto

Page 22: Crowdar - Introducción a BDD

BDD is about having conversations

Page 23: Crowdar - Introducción a BDD

BDD should make it easyto create software

Page 24: Crowdar - Introducción a BDD

A scenario is an idea, not a promise

Page 25: Crowdar - Introducción a BDD

A scenario is an idea, not a promise

Page 26: Crowdar - Introducción a BDD

Pruebas automatizadas

●Ágil

◦Velocidad

⚫Reducir tiempos

⚫Tiempos de pruebas

Page 27: Crowdar - Introducción a BDD

BDD

Page 28: Crowdar - Introducción a BDD

Test sin BDD

Page 29: Crowdar - Introducción a BDD

Test sin BDD

Page 30: Crowdar - Introducción a BDD

Test con BDD

Scenario: Verificar que la página discografía se muestre

Dado un usuario navegando en la página Mi BandaCuando hace click en el botón discografíaEntonces puede ver la página discrografía

Page 31: Crowdar - Introducción a BDD

Test con BDD

Scenario: Verificar que la página discografía se muestre

Dado un usuario navegando en la página Mi Banda (PASS)Cuando hace click en el botón discografía (PASS)

Entonces puede ver la página discografía (FAIL)Assertion error: La página discografía no fue abierta

Page 32: Crowdar - Introducción a BDD

Componentes de BDD

● Característica (Feature)◦Historia (Story)⚫ Escenario (Scenario)⚫ Paso (Step)

● Cada historia tiene una narración, descrita utilizando lenguaje ubicuo

● Los pasos se escriben utilizando GWT⚫ Given (dado) – When (cuando) – Then (entonces)

Page 33: Crowdar - Introducción a BDD

Historias de Usuario

User stories are short, simple descriptions of a feature told from the perspective of the person who desires the new capability, usually a user or customer of the system. They typically follow a simple template:

As a <type of user>I want <some goal>so that <some reason>.

Page 34: Crowdar - Introducción a BDD
Page 35: Crowdar - Introducción a BDD
Page 36: Crowdar - Introducción a BDD
Page 37: Crowdar - Introducción a BDD

Herramientas para BDD

● Jbehave (Java)● Concordion (Java)● Jasmine (JavaScript)● Cucumber (Ruby)● Behat (PHP)● Behave (Python)● Specflow (C#)● Squish GUI Tester (Generic)

Page 38: Crowdar - Introducción a BDD

Conclusiones

● Permiten a las personas no técnicas involucrarse en el ciclo de pruebas.

● Comprensión del dominio.

● Pruebas automatizadas.

● Agilidad.

Page 39: Crowdar - Introducción a BDD

Bibliografía

● Kent Beck - Test Driven Development: By Example● Mike Cohn – Mountain Go At Software. User Stories [Online]

https://www.mountaingoatsoftware.com/agile/user-stories● John Ferguson Smart - BDD in Action: Behavior-driven

development for the whole software lifecycle● Mike Cohn – Suceeding with Agile.● Liz Keogh – Behavior Driven Development course at

slide-share

Page 40: Crowdar - Introducción a BDD

Contacto

Si está interesado en implementar una solución como esta contáctenos a

[email protected]