2. Agenda
● Specification by Example
● ATDD
● Cucumber
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013
3. 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
4. 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
5. Specification by Example
Los requerimientos son tests
Los tests son requerimientos
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013
6. 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
7. 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
8. 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
9. 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
10.
11. 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
12. 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
14. Especificaciones ejecutables
● JUnit, Selenium, etc.
(Lenguaje entendido solo por desarrolladores)
● Aceptance Test Framework
○ Cucumber
○ Concordion
○ Fitnesee
○ Robot Framework
15. Cucumber - Features
● Feature (Historia de Usuario)
○ Como
○ Quiero
○ Para
● Escenario 1
○ step
○ step
● Escenario 2
○ step
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013
16. 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
17. 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
18.
19. SMART User Stories
● Specific
● Measurable
● Achievable
● Relevant (5 Whys)
● Timeboxed
Introducción ATDD
Paulo Clavijo Esteban - Marzo 2013
20. 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
21. Sobre el Autor:
Paulo Clavijo Esteban
Software Developer
Blog: www.lintips.com
Email: paucls@gmail.com