SlideShare ist ein Scribd-Unternehmen logo
1 von 28
¿Qué significa BDD?
  Beer Driven Development
¿Qué significa BDD?
      ¡ No !
¿Qué significa BDD?
Behavior Driven Development
                     … ¡y sin cervezas!
Agenda

Desmitificando TDD
Introducción a BDD
Lenguajes específicos de dominio (DSL)
Ejemplo simple de BDD
Ejemplos „en vivo‟: Ajedrez
Beneficios de BDD
Desarrollo Dirigido por Pruebas
                   (TDD)
Solo hay 3 reglas:

  1. No se permite escribir código de producción al menos
     que sea con el objetivo de escribir una prueba que
     esta fallando.
  2. No se permite escribir más código de prueba del que
     sea necesario para que la prueba falle.
  3. No se permite escribir más código de producción del
     que es suficiente para pasar la prueba que falla.
Desarrollo Dirigido por Pruebas
               (TDD)
¡TDD funciona!

  No, es broma.
  Es broma, ¡en serio!

  De manera más precisa:
     Es muy difícil de hacer TDD de manera correcta.
     Para la mayoría no es posible.
     Muchos terminan conformándose con hacer
   pruebas unitarias, pero no TDD.
Obstáculos para implementar TDD (1/2)
 Tiempos comprometidos.

 Requiere conocer más técnicas/herramientas.
   jUnit y derivados
   TestNG y derivados
   Mocks
   etc

  Desconocimiento de los criterios sobre qué constituye una
buena prueba unitaria.
     ATRIP
   (Automated, Thorough, Repeteable, Independent, Professi
   onal).
Obstáculos para implementar TDD (2/2)

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 mediante la codificación de
 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 específico 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 sola cosa
     Mas expresivo, mas eficiente, pero limitado


Ejemplos muy conocidos:
 SQL, Wiki Markup, Mathematica, etc.
Ejemplo simple (1/2)
1. Escribe un escenario (parte de un feature)
  Feature: Search
   In order to learn more
   As an information seeker
   I want to find more information when I need it

  Scenario: Find what I‟ looking for
   Given I am on the Kvasir search page
   When I search for “cucumber github”
   Then I should see
     “””
     Behavior Driven Development
     “””
Ejemplo simple (1/2)
2. Escribe el código que ejercita el feature
   Given /^I am on the Kvasir search page$/ do
     visit(„http://www.kvasir.mx/‟)
    end

    When /^I search for “cucumber github”$/ do
     fill_in(„q‟, :with => query)
     click_button(„go‟)
    end

    Then /^I should see $/ do |text|
     response_body.should contain(text)
    end

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.


               Cliente     Analista/     Tester
                         Desarrollador
Leer

Escribir
Desarrollo Políglota en la JVM


Java    Groovy   JRuby   Jython   Scala   Clojure   ???




           Máquina Virtual Java
Aplicación Ejemplo

            Desarrollada en un curso de
           capacitación
           2 módulos: motor y ui
           2 interfaces de usuario:
                Linea de comandos
                Swing
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 en groovy (1/2)
Given(~"a board with a (w+) (w+) in (w)(d+)") { 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()
}
Definición de pasos en groovy (2/2)

When(~"I choose to move the (w+) to (w+)(d+)") { String type, column, row ->
 this."${type}".move(column, row)
}|

Then(~"the (w+) should be in (w+)(d+)") { String type, column, row ->
  assert column == this."${type}".getColumn()
  assert row == this."${type}".row
}
Plantilla de escenarios
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

    Ejecutables, sin ambigüedades, útiles.
    En pequeños fragmentos


 En la Administración de proyectos

    Las historias pueden ser estimadas (pequeños
     fragmentos de información)
Pero hay más …
 Automatizando las pruebas de aceptación
 tenemos…

    Capacidad de realizar pruebas de regresión.

    Proceso de “release” mas confiable.

    Encontramos más bugs con menos esfuerzo.
¿Preguntas?
Referencias…
Artículo de Dan North (creador de BDD).
   http://bit.ly/ay8sjI

Libro: The Rspec Book

Reflección sobre BDD y TDD
   http://bit.ly/dkDcG2

cuke4duke
   http://bit.ly/95XUtc
¡Gracias!

Twitter: @MachinesAreUs
Blog: http://machinesareus.blogspot.com
e-mail: aramos@certum.com

Weitere ähnliche Inhalte

Was ist angesagt?

Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Agile Spain
 

Was ist angesagt? (20)

Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
 
[Meetup] Code Quality
[Meetup] Code Quality[Meetup] Code Quality
[Meetup] Code Quality
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
TDD talk
TDD talkTDD talk
TDD talk
 
(Behavior driven development (bdd ) [sólo lectura])
(Behavior driven development  (bdd ) [sólo lectura])(Behavior driven development  (bdd ) [sólo lectura])
(Behavior driven development (bdd ) [sólo lectura])
 
TDD
TDDTDD
TDD
 
TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de CompostelaIntroduccion a TDD y XP en la Universidad de Santiago de Compostela
Introduccion a TDD y XP en la Universidad de Santiago de Compostela
 
Kata tdd
Kata tddKata tdd
Kata tdd
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poder
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Creando rascacielos con tdd
Creando rascacielos con tddCreando rascacielos con tdd
Creando rascacielos con tdd
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
Las Claves del Desarrollo Dirigido por Pruebas (o TDD)
 
15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009
 
Automatización de interfaces e introducción a bdd
Automatización de interfaces e introducción a bddAutomatización de interfaces e introducción a bdd
Automatización de interfaces e introducción a bdd
 
Buenas practicas desarrollando software
Buenas practicas desarrollando softwareBuenas practicas desarrollando software
Buenas practicas desarrollando software
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en Java
 
Day01
Day01Day01
Day01
 

Ähnlich wie Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)

Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDK
Fe
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
Alfredo Chavez
 

Ähnlich wie Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy) (20)

Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)
 
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
 
Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDK
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndk
 
TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
HTML5
HTML5HTML5
HTML5
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'
 

Mehr von Agustin Ramos

Exploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerExploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with Archeometer
Agustin Ramos
 

Mehr von Agustin Ramos (14)

Exploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerExploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with Archeometer
 
From Elixir to Akka (and back) - ElixirConf Mx 2017
From Elixir to Akka (and back) - ElixirConf Mx 2017From Elixir to Akka (and back) - ElixirConf Mx 2017
From Elixir to Akka (and back) - ElixirConf Mx 2017
 
Pairwise and property based testing
Pairwise and property based testingPairwise and property based testing
Pairwise and property based testing
 
Sistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasSistemas Tolerantes a Fallas
Sistemas Tolerantes a Fallas
 
¿En qué la estamos regando en pruebas de software?
¿En qué la estamos regando en pruebas de software?¿En qué la estamos regando en pruebas de software?
¿En qué la estamos regando en pruebas de software?
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Técnicas basadas en matriz de estructura de diseño
Técnicas basadas en matriz de estructura de diseñoTécnicas basadas en matriz de estructura de diseño
Técnicas basadas en matriz de estructura de diseño
 
Acercándose a la entrega continua
Acercándose a la entrega continuaAcercándose a la entrega continua
Acercándose a la entrega continua
 
Modelos de paralelismo y concurrencia
Modelos de paralelismo y concurrenciaModelos de paralelismo y concurrencia
Modelos de paralelismo y concurrencia
 
Arquitecturas que crecen y arquitecturas que no
Arquitecturas que crecen y arquitecturas que noArquitecturas que crecen y arquitecturas que no
Arquitecturas que crecen y arquitecturas que no
 
Arqueología de software
Arqueología de softwareArqueología de software
Arqueología de software
 
Hola OSGi
Hola OSGiHola OSGi
Hola OSGi
 
La nueva imagen del gurú - El maestro artesano dentro del ingeniero
La nueva imagen del gurú - El maestro artesano dentro del ingenieroLa nueva imagen del gurú - El maestro artesano dentro del ingeniero
La nueva imagen del gurú - El maestro artesano dentro del ingeniero
 
Modularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraModularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidra
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (11)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)

  • 1.
  • 2. ¿Qué significa BDD? Beer Driven Development
  • 4. ¿Qué significa BDD? Behavior Driven Development … ¡y sin cervezas!
  • 5. Agenda Desmitificando TDD Introducción a BDD Lenguajes específicos de dominio (DSL) Ejemplo simple de BDD Ejemplos „en vivo‟: Ajedrez Beneficios de BDD
  • 6. Desarrollo Dirigido por Pruebas (TDD) Solo hay 3 reglas: 1. No se permite escribir código de producción al menos que sea con el objetivo de escribir una prueba que esta fallando. 2. No se permite escribir más código de prueba del que sea necesario para que la prueba falle. 3. No se permite escribir más código de producción del que es suficiente para pasar la prueba que falla.
  • 7. Desarrollo Dirigido por Pruebas (TDD) ¡TDD funciona! No, es broma. Es broma, ¡en serio! De manera más precisa: Es muy difícil de hacer TDD de manera correcta. Para la mayoría no es posible. Muchos terminan conformándose con hacer pruebas unitarias, pero no TDD.
  • 8. Obstáculos para implementar TDD (1/2) Tiempos comprometidos. Requiere conocer más técnicas/herramientas. jUnit y derivados TestNG y derivados Mocks etc Desconocimiento de los criterios sobre qué constituye una buena prueba unitaria. ATRIP (Automated, Thorough, Repeteable, Independent, Professi onal).
  • 9. Obstáculos para implementar TDD (2/2) 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 mediante la codificación de pruebas.
  • 10. Ejemplo de prueba en JUnit
  • 11. 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
  • 12. Lenguaje específico 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 sola cosa  Mas expresivo, mas eficiente, pero limitado Ejemplos muy conocidos:  SQL, Wiki Markup, Mathematica, etc.
  • 13. Ejemplo simple (1/2) 1. Escribe un escenario (parte de un feature) Feature: Search In order to learn more As an information seeker I want to find more information when I need it Scenario: Find what I‟ looking for Given I am on the Kvasir search page When I search for “cucumber github” Then I should see “”” Behavior Driven Development “””
  • 14. Ejemplo simple (1/2) 2. Escribe el código que ejercita el feature Given /^I am on the Kvasir search page$/ do visit(„http://www.kvasir.mx/‟) end When /^I search for “cucumber github”$/ do fill_in(„q‟, :with => query) click_button(„go‟) end Then /^I should see $/ do |text| response_body.should contain(text) end 3. Escribe el código que implementa la funcionalidad
  • 15. DSL para pruebas de aceptación  Enfoque del DSL en pruebas de aceptación.  Describe las pruebas en el lenguaje del negocio. Cliente Analista/ Tester Desarrollador Leer Escribir
  • 16. Desarrollo Políglota en la JVM Java Groovy JRuby Jython Scala Clojure ??? Máquina Virtual Java
  • 17.
  • 18. Aplicación Ejemplo Desarrollada en un curso de capacitación 2 módulos: motor y ui 2 interfaces de usuario: Linea de comandos Swing
  • 19. 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
  • 20. Definición de pasos en groovy (1/2) Given(~"a board with a (w+) (w+) in (w)(d+)") { 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() }
  • 21. Definición de pasos en groovy (2/2) When(~"I choose to move the (w+) to (w+)(d+)") { String type, column, row -> this."${type}".move(column, row) }| Then(~"the (w+) should be in (w+)(d+)") { String type, column, row -> assert column == this."${type}".getColumn() assert row == this."${type}".row }
  • 22. Plantilla de escenarios 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 |
  • 23. Definición de pasos (groovy)  ¡ Ninguno nuevo!  Los pasos ya están implementados =)  De manera tabular puedes probar tantos escenarios como necesites.
  • 24. Beneficios de BDD  En cuanto a requerimientos  Ejecutables, sin ambigüedades, útiles.  En pequeños fragmentos  En la Administración de proyectos  Las historias pueden ser estimadas (pequeños fragmentos de información)
  • 25. Pero hay más …  Automatizando las pruebas de aceptación tenemos…  Capacidad de realizar pruebas de regresión.  Proceso de “release” mas confiable.  Encontramos más bugs con menos esfuerzo.
  • 27. Referencias… Artículo de Dan North (creador de BDD). http://bit.ly/ay8sjI Libro: The Rspec Book Reflección sobre BDD y TDD http://bit.ly/dkDcG2 cuke4duke http://bit.ly/95XUtc