References
• BDD in Action (http://www.manning.com/smart/)
• Bridging the communication gap
(http://www.acceptancetesting....
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Bdd beyond testing
Upcoming SlideShare
Loading in …5
×

Bdd beyond testing

1,145 views

Published on

Talk about BDD given at Bilbostack (http://bilbostack.com/) conference in Bilbao.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,145
On SlideShare
0
From Embeds
0
Number of Embeds
192
Actions
Shares
0
Downloads
14
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Vamos a ver un poco de historia. Todo esto empezó en 2003 gracias a Dan North. Dan siempre se encontraba con los mismos problemas planteados por sus alumnos de cursos de TDD: - Por donde empiezo? - Qué testeo? - Como llamo a mis tests? - Como entiendo pq un test ha fallado?Su respuesta a todo esto fue BDD.
  • Lo primero que vio Dan es que estaban probando una herramienta que generaba una especie de documentación a partir de los proyectos de test (como el reporter de Jasmine). Vio que si los tests tenía como nombre una sentencia realizada con el lenguaje del dominio, les podía servir de documentación.
  • Lo segundo que se dio cuenta es que empezar los tests con la palabra should, ayudaba a mantenerse focalizado, ya que esa clase o método solo podía testear eso.
  • Un nombre expresivo es importante cuando un test falla. Al igual que un buen mensaje en el assert. Podemos saber pq ha fallado y lo que tenemos que arreglar con solo ver el nombre y el error.
  • La palabra comportamiento es más útil que la palabra test. Si nuestros métodos de test no están definiendo el comportamiento de nuestro sistema, tendremos una falsa sensación de seguridad. Centrarnos en el comportamiento nos ayuda muchísimo en el desarrollo. Y de aquí nació el término BDD y jBehave, el primer framework basado en jUnit.
  • Dan charló de todo esto con Chris Matts (el autor del libro Commitment) y le hizo ver la importancia del valor de negocio en BDD. Cuando estamos desarrollando nos tenemos que preguntar: qué es lo siguiente más importante que el sistema no hace? Y eso es lo que tenemos que implementar. Eso es lo que nos hará entregar el mayor valor.
  • Explicando todo esto a Chris Matts (el lenguaje utilizado en BDD) Chris le hizo ver que era lo mismo que un análisis. Lo que estaban describiendo los tests de Dan eran los requisitos del sistema. Se podían utilizar estos comportamientos para definir los requisitos de un sistema. Solo se necesitaba encontrar un vocabulario que todo el mundo pudiera utilizar y que eliminara las ambigüedades y faltas de entendimiento entre la gente de negocio y los desarrolladores.
  • BDD da un lenguaje ubícuo para la fase de análisis. Un lenguaje que puede entender la gente de negocio, los desarrolladores, testers, etc. Se desarrolla el patrón Given, When, Then.
  • Los criterios de aceptación tienen que ser ejecutables. Nos da velocidad, tests de regresión, etc.
  • Es como las histórias de usuario: CardConversationConfirmation
  • Pq hacemos todo esto?
  • Lo hacemos por dinero! En el 2012, la fuerza armada estadounidense pago 1 billón de dólares por un proyecto para mejorar el abastecimiento de las tropas. 7 años de desarrollo después todavía era utilizable y llevaba un coste de 1.1 billones de dólares extra.Obama healthcare costó 618 millones de euros y el dia que se lanzó no funcionaba.En lo que más pierde la industria del software es por no saber lo que necesitamos hacer.Obviamente antes de todo esto hay una etapa de descubrir estos requisitos. Real options, deliberate Discovery, featureinjection, impactmapping, etc.
  • Hacer este tipo de técnicas nos permites saltar el agujero que hay entre lo que unos y otros entienden de un proyecto. Esto viene de dar cosas por supuestas, de no preguntar, etc.“The single biggest problema in communicationistheillusionthatit has taken place” – George Bernard Shaw (Founder of London School of Echonomics)Como podemos salvar estas diferencias?
  • Con ejemplos. Si os paráis a pensar, siempre hemos trabajado con ejemplos. Pero estos ejemplos no se comunican.
  • Necesitamos diversidad cognitiva. Los grupos sin diversidad cognitiva tienden a llegar a consensos rápidos. Si yo me rehúno con unos amigos muy culés, llegaré a la conclusión que el Espanyol se va a dejar ganar contra el Madrid (y el campo aplaudirá) y que el Levante jugó primado (y mucho). Esto es cierto, pero podría no serlo.Si me reuno con gente que sepa de futbol y que sea de diferentes equipos, haré un estudio mucho más pormenorizado de los partidos.Cada uno es bueno sacando ejemplos de su área (happypath, cosas de desarrollo, testing, etc).
  • Living documentation. Una de las ventajas que nos da BDD es el de tener como resultado una documentación viva, que se modifica asiduamente, que se va a mirar siempre que hay dudas y que es ejecutable.
  • Ganamos en entendimiento compartido. Todas las partes saben de que están hablando.
  • Este es el patrón típico de BDD. Estas especificaciones hay que tratarlas como el código: - Que sean fáciles de leer y mantener. - Eliminar la duplicidad - tablas - scenariooutline + example
  • Y sobretodo ser expresivo. Centrarnos en el qué y no en el como. Un escenario no debe ser un script de test, on debe meterse en UI ni especificar los pasos que hay que hacer. Debe centrarse en temas de negocio. Si hace falta automatizar la UI tenemos que utilizar page objects.
  • Ciclo de BDD
  • Bdd beyond testing

    1. 1. References • BDD in Action (http://www.manning.com/smart/) • Bridging the communication gap (http://www.acceptancetesting.info/the-book/) • Specification by example (http://specificationbyexample.com/) • http://lizkeogh.com/2013/10/24/bdd-before-thetools/ • http://dannorth.net/introducing-bdd/

    ×