ATDD (Acceptance Test Driven Development) o Desarrollo orientado a Pruebas de Aceptación es una metodología de trabajo que pone el foco en la colaboración entre usuarios, desarrolladores y testers, con el fin de entregar un producto de mayor calidad y en menos tiempo.
La calidad es algo que cualquier persona involucrada en un proyecto de desarrollo de software cuida y valora. Sin embargo, en ocasiones lo implementado no cumple las expectativas del cliente; la manera tradicional de planificar proyectos (intentar documentarlo «todo» antes de comenzar, realizar estimaciones a muy largo plazo…) suele traducirse en retrasos en entregas y un producto de baja calidad.
Además, como dice Jeff Sutherland, uno de los creadores de Scrum:
«Los usuarios no saben lo que quieren hasta que lo ven y siempre se reservan el derecho a cambiar de opinión».
Para solucionar esto, ATDD fomenta la comunicación entre cliente, testers y desarrolladores en ciclos rápidos de desarrollo, reemplazando la documentación monolítica por historias de usuario (User Stories) que sirven como base para la toma de requisitos. Mediante conversaciones frecuentes acerca del alcance de las User Stories, se establecen sus criterios de aceptación, es decir, qué requisitos ha de cumplir el desarrollo para ser aceptado por el usuario.
Estas sesiones colaborativas son conocidas como «los tres amigos» («the three amigos»), por las tres perspectivas aportadas a la hora de analizar las User Stories:
– Cliente: ¿Qué problema queremos resolver?
– Desarrollo: ¿Cómo lo podemos resolver?
– Calidad: ¿Qué pasa si…?
Al delimitar el alcance de cada User Story mediante los criterios de aceptación, es posible estimar mejor el tiempo y la complejidad de las tareas. Al mismo tiempo que se consigue encontrar detalles y casos no previstos. Además, estas conversaciones ayudan a que el equipo comprenda realmente las necesidades de los usuarios, adoptando su punto de vista y comunicándose con el cliente en su «idioma».
Las especificaciones en lenguaje natural son tomadas como Pruebas de Aceptación antes de escribir el código. Mediante las Pruebas de Aceptación es posible definir con ejemplos los criterios de aceptación de un desarrollo (lo que se conoce como «especificación mediante ejemplos»), de modo que los desarrolladores saben qué desarrollar y los usuarios saben qué tendrán.
Las Pruebas de Aceptación sirven también como documentación viva del proyecto (eliminando la documentación duplicada), a la vez que permiten automatizar Tests de Regresión (con herramientas de BDD como Cucumber) y sirven de puente entre el equipo de desarrollo y la parte de negocio implicada, mediante un entendimiento común de los requisitos del desarrollo.
Enfocar un producto con la metodología ATDD desde el comienzo del ciclo de vida del proyecto ahorrará esfuerzo, evitando el desperdicio (‘Muda’) que supone que el equipo de Desarrollo esté centrado en cualquier otra cosa que no sea lo que añadirá un mayor valor a la próxima entrega.
A medida que el proyecto madura y la colaboración con los usuarios se vuelve más fluida, la aproximación que nos ofrece ATDD ayuda a consolidar el cambio de cultura y la transformación digital que toda organización busca, dando como resultado un proceso de desarrollo más ágil y una mejor calidad del producto, previniendo errores, reduciendo el TTM y aumentando la satisfacción del cliente.