Ir al contenido
wannacode

Documentación viva

En resumen: Un documento de Word se queda anticuado en silencio. Los escenarios se ejecutan con cada cambio y fallan en cuanto el sistema deja de hacer lo que dicen: eso es documentación viva. Se escriben antes del trabajo, por los tres amigos: negocio, programador y QA. BDD es esa conversación. Los escenarios escritos solo por QA después del código son simplemente pruebas con más trabajo.

Problema

El documento que miente en silencio

Una persona nueva del equipo abre la especificación del envío. Un documento de Word de hace dos años. Dice: «envío gratis para más de 40 €».

La tienda da el envío gratis desde 50 €. Alguien cambió la regla, pero no el documento. Nadie lo notó, porque el documento no hace nada: está ahí sin más.

Ahora la persona nueva no sabe cuál tiene razón: ¿el documento o el sistema?

La idea

Documentación que se ejecuta

Los escenarios de este módulo son a la vez un documento y una prueba. Si la regla cambia en el sistema pero no en el escenario, el escenario falla en la siguiente ejecución. Si cambia en el escenario pero no en el sistema, también falla. Los dos no pueden separarse en silencio.

Esto se llama documentación viva. Está viva con una condición: los escenarios se ejecutan con cada cambio, normalmente de forma automática. Los escenarios que nadie ejecuta se quedan anticuados igual que el documento de Word.

Para ser documentación, el archivo debe además leerse como tal:

  • Característica dice qué describe el archivo, y la propia historia puede ir debajo;
  • Regla es cada regla de negocio, con las palabras del dueño;
  • debajo de cada regla están los ejemplos: escenarios y esquemas con números concretos.
# language: es
Característica: Envío gratis
Como cliente
quiero envío gratis en un pedido mayor
para no pagar 4,90 € de envío.
Regla: Un carrito vacío no se puede pedir
Ejemplo: Un carrito sin productos
Dado un carrito vacío
Cuando hago el pedido
Entonces el pedido se rechaza

El texto bajo «Característica» no es un paso. Es una descripción: Gherkin lo salta al ejecutar, y las personas lo leen.

La idea

Quién los escribe y cuándo

Los escenarios no los escribe una sola persona. Salen de una conversación entre tres personas que ya conociste en el Example Mapping. Se llaman los tres amigos (three amigos):

  • el negocio (el dueño o el analista) expone las reglas y lo que importa;
  • el programador pregunta cómo se construirá y qué es difícil en ello;
  • QA pregunta «¿y si…?»: los límites, el carrito vacío, el rechazo.

¿Y cuándo? Antes del trabajo. Un escenario escrito antes del código dice lo que se quiere. Un escenario escrito después del código describe lo que se construyó, errores incluidos.

La documentación de Cucumber llama a los tres pasos descubrimiento (discovery, una conversación sobre ejemplos concretos), formulación (formulation, los ejemplos se escriben de modo que puedan ejecutarse y el negocio los confirma) y automatización (automation, el programador enlaza los pasos con el sistema). El tercer paso tiene más adelante su propio módulo.

Pruébalo

De la historia al documento

Ordena el camino desde la historia hasta la documentación viva.

  1. En cada cambio posterior los escenarios se ejecutan de nuevo
  2. El negocio lee los escenarios y dice «sí, es esto»
  3. Los tres amigos exponen reglas, ejemplos y preguntas
  4. El programador enlaza los pasos y construye la característica
  5. Los ejemplos se escriben como escenarios de Gherkin
  6. El dueño trae la historia
  7. Los escenarios pasan y la historia está terminada

La idea

BDD frente a «pruebas de Gherkin»

Todo esto tiene un nombre: BDD (behaviour-driven development, desarrollo guiado por el comportamiento). Lo importante de BDD no es Gherkin. Es este orden: conversación, ejemplos, después código.

Muchos equipos toman solo la sintaxis. QA escribe los escenarios solo, después del código, con «haz clic en el botón». El negocio nunca los lee. Son pruebas de Gherkin: pruebas automáticas corrientes con una capa más encima que hay que mantener. Se paga el coste de BDD y falta el beneficio.

Señales de que esto está pasando:

  • nadie del negocio ha leído los escenarios;
  • los escenarios se escriben después del código;
  • los pasos hablan de botones y campos, no de reglas;
  • los escenarios se arreglan cuando fallan, sin preguntar si se equivocó el sistema.

Si no hay conversación, la opción honesta es una prueba de componente normal. Es más rápida y más barata. Gherkin compensa cuando el negocio lee de verdad los escenarios.

Pruébalo

¿BDD o no?

1. QA escribe los escenarios solo, después de que el programador haya terminado. Nadie del negocio los lee.
2. El dueño, el programador y QA discuten los ejemplos antes del trabajo. Los escenarios salen de la sesión y el dueño los confirma.
3. El equipo escribe escenarios antes del código, pero todos son «haz clic en el botón» y «abre la página».
4. Los escenarios se ejecutan solo a mano, una vez al año.

Ejercicio

El documento del envío

Toda la característica. La historia y las reglas están escritas.

Bajo cada regla, pon los ejemplos que la muestran: alrededor del límite, lejos de él y el carrito vacío. El documento tiene que cazar los seis errores.

GherkinEnvío gratis
Más precisamente, para curiosos

ISTQB CTFL v4.0.1. La sección 2.1.3 («Testing as a Driver for Software Development») pone juntos TDD, ATDD y BDD: los tres definen las pruebas antes del código y aplican el principio de las pruebas tempranas. Sobre BDD dice que los casos de prueba se escriben en una forma sencilla de lenguaje natural que entienden las partes interesadas, normalmente Given/When/Then, y después se convierten en pruebas automáticas. La sección 4.5.3 describe ATDD (acceptance test-driven development, desarrollo guiado por pruebas de aceptación): un taller de especificación donde se discuten juntos la historia y sus criterios (cliente, programador, tester), después los casos de prueba, primero los positivos, luego los negativos y luego los no funcionales. Cuando están en un formato que entiende un marco de automatización de pruebas, las pruebas de aceptación se convierten en requisitos ejecutables.

ISTQB CT-AcT v1.0 (pruebas de aceptación) tiene un capítulo sobre las pruebas de aceptación colaborativas y trata los criterios de aceptación y las pruebas de aceptación como trabajo compartido del análisis de negocio y las pruebas.

Dan North describe BDD en el artículo «Introducing BDD», publicado por primera vez en la revista Better Software en marzo de 2006. En él, él y Chris Matts crean una plantilla para los criterios de aceptación como escenarios: Given (el contexto), When (el evento), Then (los resultados).

Los tres amigos. El nombre se usa mucho en la comunidad ágil. A menudo se vincula con George Dinwiddie, pero no encontramos una fuente primaria que lo confirme.

La documentación de Cucumber («Behaviour-Driven Development») describe las tres prácticas: Discovery, Formulation y Automation.

Test

Ponte a prueba

1. ¿Qué hace que los escenarios sean documentación «viva»?
2. ¿Quiénes son los tres amigos?
3. ¿Cuándo se escriben los escenarios en BDD?
4. ¿Qué es ATDD según ISTQB CTFL v4.0.1?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·