introduccion al desarrollo guiado por comportamiento
DESCRIPTION
Introducción al desarrollo guiado por comportamiento: Un caso práctico en PHP con Behat y phpspec. El desarrollo guiado por comportamiento (BDD) es una técnica de desarrollo ágil de software que nos permite crear una aplicación describiendo su funcionamiento desde la perspectiva de los inversores. Y es que usando BDD podemos establecer los criterios de aceptación de nuestro desarrollo, en un lenguaje muy parecido al natural, y validarlos de manera automatizada. Además podemos crear test unitarios que comprueben funcionalidades concretas de la aplicación. En la primera parte de la charla veremos una introducción sobre el motivo que llevó a la creación de esta metodología, los conceptos en los que se basa y el proceso para llevarla a cabo. A lo largo de la segunda parte revisaremos un ejemplo sencillo en PHP en el que se ha usado BDD apoyándonos en las herramientos Behat y phpspec.TRANSCRIPT
![Page 1: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/1.jpg)
Introducción al desarrollo guiado por comportamiento
Un caso práctico en PHP con Behat y phpspec
![Page 2: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/2.jpg)
Sobre mi
Alejandro Hernández Segura
• Desarrollador PHP y Symfony
• Trabajo para ARK Schools (Londres)
• @aleherse
• github.com/aleherse
• slideshare.net/aleherse
![Page 3: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/3.jpg)
MOTIVACIÓN
![Page 4: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/4.jpg)
Desarrollo en cascada
![Page 5: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/5.jpg)
Hemos desarrollado una compleja ceremonia que nos permite asegurarnos de que hemos pensado todas las posibles repercusiones y
cubierto todos los posibles ángulos y giros lo antes posible de forma que no podamos ser sorprendidos por situaciones inesperadas.
![Page 6: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/6.jpg)
Herencia de la ingeniería civil
![Page 7: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/7.jpg)
“A building goes together with seven billion pieces of connective tissue. The chances of it getting done ever without something colliding or some misstep are small.”
[Frank Gehry]
![Page 8: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/8.jpg)
The agile manifesto
Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar: • Individuos e interacciones sobre procesos y herramientas • Software funcionando sobre documentación extensiva • Colaboración con el cliente sobre negociación contractual • Respuesta ante el cambio sobre seguir un plan
Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.
![Page 9: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/9.jpg)
Idea central
Entregar iterativamente software funcional en una pequeña escala de tiempo
Objetivos
• Evitar entregar tarde o con sobrecoste.
• Evitar entregar algo incorrecto.
• Evitar inestabilidad en producción.
• Evitar altos costes de mantenimiento.
![Page 10: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/10.jpg)
Coste de volverse ágil
• Planificación basada en resultados.
• Flujo continuo de requerimientos.
• Diseño evolutivo.
• Continuos cambios en el código existente.
• Integración frecuente del código.
• Tests regresivos continuos.
• Frecuentes puestas en producción.
• Equipo en la misma localización.
![Page 11: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/11.jpg)
BDD
![Page 12: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/12.jpg)
“Behavior-driven development is about implementing an application by describing its behaviour from the perspective of its stakeholder”
[The RSpec book]
![Page 13: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/13.jpg)
• Necesitamos ver el mundo bajo el punto de vista de nuestros clientes.
• Stakeholder son todos aquellos que puedan tener algún interés en nuestra aplicación.
![Page 14: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/14.jpg)
Principios en los que se basa BDD
• Suficiente es suficiente.
• Desarrollar valor para nuestros clientes.
• Todo es comportamiento.
![Page 15: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/15.jpg)
METODOLOGÍA
![Page 16: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/16.jpg)
Desarrollo guiado por comportamiento
![Page 17: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/17.jpg)
debemos reunirnos con nuestros clientes y establecer la visión o el propósito del proyecto
![Page 18: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/18.jpg)
identificar los resultados o las metas que se deben lograr para conseguir el objetivo
![Page 19: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/19.jpg)
describir el tipo de cosas que el software debe realizar en grupos de características o temáticas
![Page 20: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/20.jpg)
¿En qué consiste una historia?
1. Título
![Page 21: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/21.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
![Page 22: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/22.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
Objetivo: In order to…
Rol: As a…
Qué hacer: I want/need to…
![Page 23: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/23.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
![Page 24: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/24.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
Título
![Page 25: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/25.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
Pasos
![Page 26: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/26.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
Pasos
Qué aceptamos como cierto: Given
![Page 27: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/27.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
Pasos
Qué aceptamos como cierto: Given
Qué eventos se producen: When
![Page 28: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/28.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
Pasos
Qué aceptamos como cierto: Given
Qué eventos se producen: When
Qué resultados se esperan: Then
![Page 29: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/29.jpg)
¿En qué consiste una historia?
1. Título
2. Narrativa
3. Escenarios
Pasos
Qué aceptamos como cierto: Given
Qué eventos se producen: When
Qué resultados se esperan: Then
And y But lo mismo que la línea precedente
![Page 30: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/30.jpg)
1. Título: Students pre-enrollment form
2. Narrativa: In order to be able to apply later to sixth form
As a student
I need to give my personal information
3. Escenarios: Student pre-enrollment from a school page
Given I access “school” frontend “pre-enrollment” page
When I enter all the information asked
And I press the submit button
Then I receive “school pre-enrollment confirmation” email
And I see “a school pre-enrollment confirmation” message
![Page 31: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/31.jpg)
Ventajas de usar este enfoque
• Explorar el dominio del problema.
• Facilitar la conversación con clientes y equipo.
• Escribir los criterios de aceptación.
• Automatizar la comprobación de los criterios.
• Tener documentación de la lógica de negocio.
• Asignar prioridad y estimación a las historias.
![Page 32: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/32.jpg)
![Page 33: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/33.jpg)
UN CASO PRÁCTICO EN PHP CON BEHAT Y PHPSPEC
![Page 34: Introduccion al desarrollo guiado por comportamiento](https://reader033.vdocuments.mx/reader033/viewer/2022052218/559a2e581a28abea758b482b/html5/thumbnails/34.jpg)
¿Preguntas?
• Transparencias (goo.gl/fFbtSw) • Ejemplo (github.com/aleherse/katas-BDD) • Behat (behat.org) • phpspec (phpspec.net) • BDD, Behat, Mink Tutorial (goo.gl/xOjQ4) • Behat by example (youtu.be/QnPmbQbsTV0) • BDD: Busting the myths (vimeo.com/43612884) • The Rspec book (goo.gl/aU6JM) • PhpSpec ilustrated by examples (goo.gl/wOMKH) • @phpspec, @BehatPHP, @everzet, @_md