BDD para la mejora de la calidad software

Preview:

Citation preview

BDD para la mejora de la calidad software

Enrique SánchezTechnical Team Lead @ Medianet Software

Más de 3 años de experiencia en empresas como

Evangelista BDD

¿Por qué esta charla?

Hay dos problemas fundamentales en el desarrollo de software !

1. Construir el software mal 2. Construir el software incorrecto

Coste de un cambio

Tiempo

Hay que reducir al máximo los riesgos

Malentendidos gastan tiempo Defectos provocan retrasos Fallos en la planificación dañan tu reputación

“”

56% of all bugs can be traced to errors made during the requirement stage.

Tom deMarco

“ ”68% failed projects

Standish Group Report 2009

“”

I had a problem (…) Programmers wanted to know where to start, what to test and what not to test, how much to test in one go, what to call their tests, and how to understand why a test fails.

Better Software, March 2006 Dan North @tastapod

Eng

ine

eri

ng Product

Centrémonos en la comunicación Definamos un lenguaje común Anticipémonos a los problemas Mantengamos una buena documentación

Behavior Driven Development

“”

BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.

Agile specifications, BDD and Testing eXchange, November 2009 Dan North @tastapod

Definamos lo que el software debe de hacer en términos del comportamiento deseado

Definamos lo que el software debe de hacer en términos del comportamiento deseado

BUSIN

ESS

Outside - InDesde negocio a desarrollo

Comunicaciónentre stakeholders, producto, desarrollo, testing…

Gherkin

Creamos una narrativa¿Por qué? Para tener un lenguaje común que todos entendamos ¿Cómo? Escenarios y Pasos

Narrativa

Ejemplo Describe

ImplementaDiseña

Feature

In  order  to  definir un objetivo

As  a  Rol/actor

I  want  to descripción de lo que se va a hacer

Scenario

Given  setup

When  interacción/cambio/acción

Then comprobamos que todo fue como esperamos

¿Y en la vida real?

¿Qué herramientas usamos?Nosotros usamos Cucumber Framework BDD escrito en Ruby ¿Por qué? Mucha documentación y fácil de aprender

¿Cómo funciona?

¿Qué proceso seguimos?Que pasos seguir para implementar BDD

Definimos los Acceptance Criteria

Features / Scenarios

Creamos una definición formal de un escenario

Hacemos algo de magia…

Creamos tests automáticos que hagan que prueben la funcionalidad

Creamos el entorno del proyecto

Evoluciona y adáptate

Personas antes que herramientasAdapta las herramientas a tu proceso no al revés

Podemos mejorar la comunicación Mantenemos a la gente involucrada Simplificamos el proceso Tenemos documentación actualizada

Entonces…

Preguntas?Gracias!

Enrique Sánchez | hola@enrique-sanchez.me | @EnriqueSanchezB