Post on 18-Jan-2017
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”
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