Crowdar - Introducción a BDD

Post on 18-Jan-2017

125 views 0 download

Transcript of Crowdar - Introducción a BDD

Introducción al desarrollo guiado por comportamiento (BDD)

Mascheroni, Maximiliano AgustinContact me at LinkedInagustin.mascheroni@gmail.com

www.crowdar.com.ar

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

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

TDD

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)

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.

Ventajas

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

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.

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.

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.

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

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.

“BDD es una práctica ágil”

Agile Manifesto

BDD is about having conversations

BDD should make it easyto create software

A scenario is an idea, not a promise

A scenario is an idea, not a promise

Pruebas automatizadas

●Ágil

◦Velocidad

⚫Reducir tiempos

⚫Tiempos de pruebas

BDD

Test sin BDD

Test sin 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

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

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)

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>.

Herramientas para BDD

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

Conclusiones

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

● Comprensión del dominio.

● Pruebas automatizadas.

● Agilidad.

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

Contacto

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

info@crowdaronline.com