SlideShare a Scribd company logo
1 of 25
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 (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() } 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 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) ,[object Object]
Los pasos ya están implementados =)
De manera tabular puedes probar tantos escenarios como necesites.,[object Object]
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

More Related Content

What's hot

[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 TechniquesEduardo Turiño
 
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 JavaCésar Hernández
 
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)Javier_J
 
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioCas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioEduardo Riol
 
Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Javier_J
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID RefactorAgile Spain
 
Introducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric MignotIntroducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric MignotPablo Lischinsky
 

What's hot (17)

TDD
TDDTDD
TDD
 
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
 
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
 
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)
 
Day01
Day01Day01
Day01
 
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioCas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocio
 
Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014Cómo aplicar TDD. Almería 13/05/2014
Cómo aplicar TDD. Almería 13/05/2014
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
Workshop Calabash Appium
Workshop Calabash AppiumWorkshop Calabash Appium
Workshop Calabash Appium
 
Prácticas de Desarrollo Ágil
Prácticas de Desarrollo ÁgilPrácticas de Desarrollo Ágil
Prácticas de Desarrollo Ágil
 
Kata tdd
Kata tddKata tdd
Kata tdd
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID Refactor
 
Introducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric MignotIntroducción al Test-Driven Development (TDD) por Eric Mignot
Introducción al Test-Driven Development (TDD) por Eric Mignot
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
 
Java Fundamentos 01 - Introducción
Java Fundamentos 01 - IntroducciónJava Fundamentos 01 - Introducción
Java Fundamentos 01 - Introducción
 
TDD Code Retreat
TDD Code RetreatTDD Code Retreat
TDD Code Retreat
 

Viewers also liked

Eliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDDEliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDDJorge Gamba
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven DevelopmentAlberto Perdomo
 
Exactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in KostromaExactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in KostromaIosif Itkin
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsIosif Itkin
 
BDD en 5 minutos
BDD en 5 minutosBDD en 5 minutos
BDD en 5 minutosAdrian Moya
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bddlsajrf
 

Viewers also liked (10)

Introducción a gherkin
Introducción a gherkinIntroducción a gherkin
Introducción a gherkin
 
BDD para la mejora de la calidad software
BDD para la mejora de la calidad softwareBDD para la mejora de la calidad software
BDD para la mejora de la calidad software
 
Eliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDDEliminando la brecha entre clientes y desarrolladores mediante BDD
Eliminando la brecha entre clientes y desarrolladores mediante BDD
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD
BDD TDD ATDD
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven Development
 
Selenium
SeleniumSelenium
Selenium
 
Exactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in KostromaExactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in Kostroma
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Cons
 
BDD en 5 minutos
BDD en 5 minutosBDD en 5 minutos
BDD en 5 minutos
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bdd
 

Similar to BDD - Desarrollo dirigido por comportamiento

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 agilesJobsket
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 
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'AulaDeVideojuegos
 
Clase 1 Itinerario
Clase 1 ItinerarioClase 1 Itinerario
Clase 1 Itinerariovbalda
 
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 bddJorge Ortiz
 
El_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptxEl_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptxKarinaLeticiaKovvali
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swingLCA
 
Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Rodrigo Branas
 
Mda Para Dummies
Mda Para DummiesMda Para Dummies
Mda Para Dummiessolnatec
 
No estaba muerto... cleanroom software engineering
No estaba muerto... cleanroom software engineeringNo estaba muerto... cleanroom software engineering
No estaba muerto... cleanroom software engineeringSoftware Guru
 
Actividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tareaActividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tareajenny21071
 
Utp pds_lab1 introduccion a mat_lab
 Utp pds_lab1 introduccion a mat_lab Utp pds_lab1 introduccion a mat_lab
Utp pds_lab1 introduccion a mat_labjcbenitezp
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDDAlfredo Chavez
 
¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticasjaespinmora
 

Similar to BDD - Desarrollo dirigido por comportamiento (20)

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
 
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'
 
Clase 1 Itinerario
Clase 1 ItinerarioClase 1 Itinerario
Clase 1 Itinerario
 
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
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
 
ZWCad
ZWCadZWCad
ZWCad
 
El_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptxEl_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptx
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swing
 
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?
 
Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)
 
Mda Para Dummies
Mda Para DummiesMda Para Dummies
Mda Para Dummies
 
No estaba muerto... cleanroom software engineering
No estaba muerto... cleanroom software engineeringNo estaba muerto... cleanroom software engineering
No estaba muerto... cleanroom software engineering
 
Actividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tareaActividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tarea
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
Utp pds_lab1 introduccion a mat_lab
 Utp pds_lab1 introduccion a mat_lab Utp pds_lab1 introduccion a mat_lab
Utp pds_lab1 introduccion a mat_lab
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas
 
Diseno dealgoritmos
Diseno dealgoritmosDiseno dealgoritmos
Diseno dealgoritmos
 

More from Agustin Ramos

Exploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerExploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerAgustin Ramos
 
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 2017Agustin Ramos
 
Pairwise and property based testing
Pairwise and property based testingPairwise and property based testing
Pairwise and property based testingAgustin Ramos
 
Sistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasSistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasAgustin Ramos
 
¿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?Agustin Ramos
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellAgustin Ramos
 
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ñoAgustin Ramos
 
Acercándose a la entrega continua
Acercándose a la entrega continuaAcercándose a la entrega continua
Acercándose a la entrega continuaAgustin Ramos
 
Modelos de paralelismo y concurrencia
Modelos de paralelismo y concurrenciaModelos de paralelismo y concurrencia
Modelos de paralelismo y concurrenciaAgustin Ramos
 
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 noAgustin Ramos
 
Arqueología de software
Arqueología de softwareArqueología de software
Arqueología de softwareAgustin Ramos
 
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 ingenieroAgustin Ramos
 
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 hidraAgustin Ramos
 

More from 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
 

Recently uploaded

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 

Recently uploaded (10)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

BDD - Desarrollo dirigido por comportamiento

  • 2. ¿Qué significa BDD? BeerDrivenDevelopment
  • 3. ¿Qué significa BDD? BehaviorDrivenDevelopment … de preferencia sin cervezas
  • 4. 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
  • 5. DesarrolloDirigidoporPruebas (TDD) En TDD, las pruebas SON LA ESPECIFICACIÓN DEL SISTEMA La cual es ejecutable. Diseñay Codificaprueba EjecutaPrueba Codifica EjecutaPrueba Refactor
  • 6. 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.
  • 7. Ejemplo de prueba en JUnit
  • 8. 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
  • 9. 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.
  • 10. Ejemplo simple de BDD 1. Escribe un escenario (parte de un feature)
  • 11. 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
  • 12. 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.
  • 14.
  • 15. 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
  • 16. 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
  • 17. Definición de pasos (groovy) 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() } 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 }
  • 18. 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 |
  • 19.
  • 20. Los pasos ya están implementados =)
  • 21.
  • 22. 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
  • 23. 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.
  • 25. 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
  • 26. ¡Gracias! Twitter Agustín: @MachinesAreUs Christian: @chrix2