atdd - desarrollo dirigido por test de aceptación

21
ATDD Desarrollo Dirigido por Tests de Aceptación Paulo Clavijo Esteban - Marzo 2013

Upload: paulo-clavijo

Post on 05-Dec-2014

2.272 views

Category:

Technology


1 download

DESCRIPTION

Presentación utilizada en charla introductoria a ATDD. Paulo Clavijo 2013

TRANSCRIPT

Page 1: ATDD - Desarrollo Dirigido por Test de Aceptación

ATDDDesarrollo Dirigido por Tests de Aceptación

Paulo Clavijo Esteban - Marzo 2013

Page 2: ATDD - Desarrollo Dirigido por Test de Aceptación

Agenda

● Specification by Example● ATDD● Cucumber

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 3: ATDD - Desarrollo Dirigido por Test de Aceptación

Specification by Example

"Desarrollar sin pruebas unitarias automatizadas y sin pruebas de aceptación

es simplemente, construir código legado desde el momento cero!"

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 4: ATDD - Desarrollo Dirigido por Test de Aceptación

Specification by Example

● Los test unitarios aseguran que la aplicación se ha construido correctamente.

● Los test de aceptación aseguran que se ha desarrollado la funcionalidad esperada.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 5: ATDD - Desarrollo Dirigido por Test de Aceptación

Specification by Example

Los requerimientos son testsLos tests son requerimientos

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 6: ATDD - Desarrollo Dirigido por Test de Aceptación

Specification by Example

● Diferentes modelos:

● BDD - Behavior Driven Development (Desarrollo Guiado por el Comportamiento)

● ATDD - Acceptance Test Driven Development (Desarrollo Guiado por pruebas de aceptación)

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 7: ATDD - Desarrollo Dirigido por Test de Aceptación

ATDD"Acceptance Test Driven Development (ATDD) is a practice in which the whole team collaboratively discusses acceptance criteria, with examples, and then distills them into a set of concrete acceptance tests before development begins. It’s the best way I know to ensure that we all have the same shared understanding of what it is we’re actually building. It’s also the best way I know to ensure we have a shared definition of Done.

Obviously I think this is an important Agile development practice. In fact, it’s one of the core pieces of my Agile Testing class. Yet somehow I have neglected to write about it much on this blog. Time to rectify that."

Elisabeth Hendrickson.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 8: ATDD - Desarrollo Dirigido por Test de Aceptación

ATDD

● TDD y ATDD no son técnicas de test son herramientas de diseño para escribir código limpio, código que hace lo esperado por el cliente, etc.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 9: ATDD - Desarrollo Dirigido por Test de Aceptación

ATDDLas pruebas de aceptación son escritas ANTES de la funcionalidad. Siguiendo los siguientes pasos:

● Tome una historia de usuario

● Escriba las pruebas de aceptación en el lenguaje de dominio del cliente

● Automatice las pruebas de aceptación

● Implemente la funcionalidad.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 10: ATDD - Desarrollo Dirigido por Test de Aceptación
Page 11: ATDD - Desarrollo Dirigido por Test de Aceptación

Beneficios de ATDD● Ejemplos reales y un lenguaje común para entender el

dominio.

● Permite identificar correctamente las reglas de negocio.

● Los flujos de trabajo funcionan desde el primer momento.

● Criterio visible para dar por finalizadas las historias de usuario.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 12: ATDD - Desarrollo Dirigido por Test de Aceptación

Beneficios de ATDD● No implementamos nada hasta tener definidos los tests.

Se reduce el tiempo perdido reprogramando.

● Living Documentation: Documentación y test de aceptación siempre actualizados.

● Validación automática.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 13: ATDD - Desarrollo Dirigido por Test de Aceptación

Quién

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 14: ATDD - Desarrollo Dirigido por Test de Aceptación

Especificaciones ejecutables

● JUnit, Selenium, etc.(Lenguaje entendido solo por desarrolladores)

● Aceptance Test Framework○ Cucumber○ Concordion○ Fitnesee○ Robot Framework

Page 15: ATDD - Desarrollo Dirigido por Test de Aceptación

Cucumber - Features

● Feature (Historia de Usuario)○ Como○ Quiero○ Para

● Escenario 1○ step○ step

● Escenario 2○ step

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 16: ATDD - Desarrollo Dirigido por Test de Aceptación

Cucumber - Steps

● Given, Dado un contexto inicial

● When, Cuando un evento se produce

● Then, Entonces asegure algunos resultados.

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 17: ATDD - Desarrollo Dirigido por Test de Aceptación

Cucumber - EjemploFeature: Adición Para evitar hacer errores tontos

Como un matemático idiota

Quiero saber la suma de los números

Scenario: Sumar dos números Dado que he introducido <entrada_1> en la calculadora Y que he introducido <entrada_2> en la calculadora Cuando pulso el <botón> Entonces el resultado debe ser <resultado> en la pantalla

Ejemplos: | entrada_1 | entrada_2 | botón | resultado |

| 20 | 30 | add | 50 |

| 2 | 5 | add | 7 |

| 0 | 40 | add | 40 |

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 18: ATDD - Desarrollo Dirigido por Test de Aceptación
Page 19: ATDD - Desarrollo Dirigido por Test de Aceptación

SMART User Stories

● Specific● Measurable● Achievable● Relevant (5 Whys)

● Timeboxed

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 20: ATDD - Desarrollo Dirigido por Test de Aceptación

Referencias● Specification By Example - Gojko Adzic

● http://dannorth.net/introducing-bdd/● http://weblogs.java.net/blog/johnsmart/archive/2012/09/12/does-atdd-

really-save-you-time● http://testobsessed.com/2008/12/acceptance-test-driven-development-

atdd-an-overview/

Introducción ATDDPaulo Clavijo Esteban - Marzo 2013

Page 21: ATDD - Desarrollo Dirigido por Test de Aceptación

Sobre el Autor:

Paulo Clavijo EstebanSoftware Developer

Blog: www.lintips.comEmail: [email protected]