• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
BDD - Desarrollo dirigido por comportamiento
 

BDD - Desarrollo dirigido por comportamiento

on

  • 3,170 views

 

Statistics

Views

Total Views
3,170
Views on SlideShare
2,865
Embed Views
305

Actions

Likes
1
Downloads
5
Comments
0

12 Embeds 305

http://machinesareus.blogspot.com 186
http://machinesareus.blogspot.mx 85
http://www.slideshare.net 16
http://machinesareus.blogspot.com.es 5
http://www.linkedin.com 3
http://machinesareus.blogspot.de 3
http://machinesareus.blogspot.co.il 2
http://machinesareus.blogspot.fi 1
http://machinesareus.blogspot.dk 1
http://machinesareus.blogspot.com.au 1
http://machinesareus.blogspot.ca 1
http://machinesareus.blogspot.be 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    BDD - Desarrollo dirigido por comportamiento BDD - Desarrollo dirigido por comportamiento Presentation Transcript

    • BDDAgustín RamosChristian Ramírezcertum
    • ¿Qué significa BDD?
      BeerDrivenDevelopment
    • ¿Qué significa BDD?
      BehaviorDrivenDevelopment
      … de preferencia sin cervezas
    • 4
      Agenda
      Desarrollo Dirigido por Pruebas (TDD)
      Obstáculos al implementar TDD
      Descripción de BDD
      Lenguajes específicos de dominio (DSL)
      Ejemplo simple de BDD
      Ejemplos ‘en vivo’: Chess
      Beneficios de BDD
    • DesarrolloDirigidoporPruebas (TDD)
      En TDD, las pruebas SON LA ESPECIFICACIÓN DEL SISTEMA
      La cual es ejecutable.
      Diseñay Codificaprueba
      EjecutaPrueba
      Codifica
      EjecutaPrueba
      Refactor
    • Obstáculosparaimplementar TDD
      Tiempos comprometidos.
      Requiere conocer más técnicas/herramientas.
      Criterios sobre qué constituye una buena prueba unitaria.
      ATRIP (Automated, Thorough, Repeteable, Independent, Professional)
      Malentendidos
      Aunque involucra la palabra ‘test’…
      TDD no es una técnica de pruebas
      Es una técnica de diseño y codificación!
      Las herramientas
      no ayudan a asimilar la idea de diseñar con pruebas.
    • Ejemplo de prueba en JUnit
    • Descripción de BDD
      ¿Qué es?
      Método de diseño y codificación
      Que integra pruebas.
      De aceptación
      Unitarias
      Orienta a un desarrollo “outside -> In”
      Define el uso de un DSL para pruebas
      Un subconjunto del lenguaje natural
    • Lenguaje especifico de dominio (DSL)
      ¿Qué es?
      “Un lenguaje de programación o especificación
      dedicado a un dominio de problema particular”
      Características:
      Especializado en una cosa, pero bien hecha
      Mas expresivo, mas eficiente, pero limitado
      Muy alto nivel de descripción
      Ejemplos muy conocidos:
      SQL, Wiki Markup, Mathematica, etc.
    • Ejemplo simple de BDD
      1. Escribe un escenario (parte de un feature)
    • Ejemplo simple de BDD
      2. Escribe el código que ejercita el feature (el código de prueba)
      3. Escribe el código que implementa la funcionalidad
    • DSL para pruebas de aceptación
      Enfoque del DSL en pruebas de aceptación.
      Describe las pruebas en el lenguaje del negocio.
      Aprovecha el interés reciente en la especificación del escenario.
    • DesarrolloPolíglota en la JVM
    • AplicaciónEjemplo
      Desarrollada en un curso de capacitación
      Estudiantes que no sabían POO
      Mucho menos Java!
      2 módulos: motor y ui
      2 interfaces de usuario:
      Linea de comandos
      Swing
      Tiene algunas pruebas unitarias
    • Escenario simple (motor)
      Feature: pawns can make only valid movements
      We want to be sure a pawn can only move
      from a given initial position to a valid final position
      Scenario: advance 1 position
      Given a board with a black Pawn in A7
      And no other piece in the board
      When I choose to move the Pawn to A6
      Then the Pawn should be in A6
    • Definición de pasos (groovy)
      Given(~"a board with a (+) (+) in ()(+)") { String color, type, column, row ->
      this.board = new Board()
      def clazz = "com.certum.training.chess.pieces.${type}" as Class
      this."${type}" = clazz.newInstance(board, column, row,
      ChessPiece."${color.toUpperCase()}")
      board.set(this."${type}", column, row)
      }
      Given(~"no other piece in the board") {
      board.gameStarted()
      }
      When(~"I choose to move the (+) to (+)(+)") { String type, column, row ->
      this."${type}".move(column, row)
      }
      Then(~"the (+) should be in (+)(+)") { String type, column, row ->
      assert column == this."${type}".getColumn()
      assert row == this."${type}".row
      }
    • Plantilla de escenario simple
      Scenario Outline: advance 2 positions
      Given a board with a <color> Pawn in <init_column><init_row>
      And no other piece in the board
      When I choose to move the Pawn to <final_column><final_row>
      Then the Pawn should be in <final_column><final_row>
      Scenarios: All valid 2 position movements
      | color | init_column | init_row | final_column | final_row |
      | white | A | 2 | A | 4 |
      | white | B | 2 | B | 4 |
      | white | C | 2 | C | 4 |

      | black | E | 7 | E | 5 |
      | black | F | 7 | F | 5 |
      | black | G | 7 | G | 5 |
      | black | H | 7 | H | 5 |
    • Definición de pasos (groovy)
      • ¡Ninguno nuevo!
      • Los pasos ya están implementados =)
      • De manera tabular puedes probar tantos escenarios como necesites.
    • Beneficios de BDD
      En cuanto a requerimientos
      Los tienes cuando los necesitas
      En pequeños fragmentos
      Puestos en practica, sin ambigüedades, útiles
      Te da la oportunidad de saber como se hace en la vida real
    • Beneficios de BDD
      En la Administración de proyectos
      Las historias pueden ser estimadas (pequeños fragmentos de información)
      Se puede medir el “velocity”
      Se puede medir la eficiencia
    • Pero hay mas …
      Automatizando las pruebas de aceptación tenemos…
      Requerimientos ejecutables (y menos ambiguos)
      Capacidad de realizar pruebas de regresión
      Proceso de “release” mas confiable
      Encontramos más bugs.
    • ¿Preguntas?
    • Referencias…
      Artículo de Dan North (creador de BDD).
      http://bit.ly/ay8sjI
      Libro: TheRspecBook
      Reflección sobre BDD y TDD
      http://bit.ly/dkDcG2
      cuke4duke
      http://bit.ly/95XUtc
    • ¡Gracias!
      Twitter
      Agustín: @MachinesAreUs
      Christian: @chrix2