ATDD - Desarrollo Dirigido por Test de Aceptación

7,523 views 21 slides Jun 04, 2013
Slide 1
Slide 1 of 21
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21

About This Presentation

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


Slide Content

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

Agenda
●Specification by Example
●ATDD
●Cucumber
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

Specification by Example
Los requerimientos son tests
Los tests son requerimientos
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

ATDD
Las 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 ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

Quién
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013

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

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

Cucumber - Features
●Feature (Historia de Usuario)
○Como
○Quiero
○Para

●Escenario 1
○step
○step

●Escenario 2
○step
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013

Cucumber - Steps
●Given, Dado un contexto inicial

●When, Cuando un evento se produce

●Then, Entonces asegure algunos
resultados.
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013

Cucumber - Ejemplo
Feature: 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 ATDD
Paulo Clavijo Esteban - Marzo 2013

SMART User Stories
●Specific
●Measurable
●Achievable
●Relevant (5 Whys)
●Timeboxed

Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013

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 ATDD
Paulo Clavijo Esteban - Marzo 2013

Sobre el Autor:

Paulo Clavijo Esteban
Software Developer

Blog: www.lintips.com
Email: [email protected]