TL; DR
Las historias de usuarios son para documentar qué valor se debe agregar al producto y por qué. Los detalles de implementación (por ejemplo, cómo se debe agregar, probar, medir o validar el valor) están limitados por la historia, pero no están contenidos en ellos. Se dejan deliberadamente como artefactos separados para mantener la flexibilidad y la agilidad dentro del marco.
Las especificaciones y los detalles de implementación se capturan con mayor frecuencia en otros artefactos, como los guiones y escenarios de Desarrollo impulsado por pruebas de aceptación (ATDD), Desarrollo guiado por pruebas (TDD) y Desarrollo guiado por comportamiento (BDD). Estos artefactos particulares no están obligados por el marco de Scrum, pero sin duda le darán un buen punto de partida si aún no tiene otros controles de proceso efectivos.
Las historias de los usuarios no son especificaciones
El póster original (OP) hizo la siguiente pregunta :
[Un] cliente quiere un procesamiento diferente para diferentes tarjetas de crédito, hay requisitos estrictos que deben implementarse y conocerse para que se puedan escribir casos de prueba ... ¿DÓNDE DEBO PONERLO SI NO ESTÁ EN LA HISTORIA?
Una historia de usuario es una característica que ofrece valor , proporciona un contexto para guiar las conversaciones sobre la implementación y un punto de vista vinculado a un consumidor de valor que se beneficiará del valor entregado por la característica.
El objetivo de una historia de usuario es que los detalles de implementación no son prescriptivos. El equipo es libre de implementar la función de cualquier manera que entregue el valor identificado al consumidor de valor dentro del contexto apropiado.
Un ejemplo trabajado
Una muestra de historia de usuario
Esto es más fácil de explicar si comienza con un conjunto menos ambiguo de historias de usuarios. Dado que el OP no proporcionó una historia de usuario accionable que sigue la mnemotecnia INVEST , inventaré una por el bien de un ejemplo. Considere la siguiente historia:
Como usuario que prefiere pagar con la tarjeta Discover,
me gustaría tener la opción de realizar mis compras con la tarjeta Discover
para no limitarme a Visa, Mastercard o American Express.
Esto proporciona una característica concreta, proporciona un contexto que puede guiar las decisiones de implementación que debe tomar el equipo e identifica al consumidor de valor como un cliente propietario de la tarjeta Discover. Ese no es un conjunto de especificaciones, pero es lo que necesita para tener las conversaciones correctas con el cliente y con el equipo sobre la mejor manera de implementar la historia durante una iteración de desarrollo.
Análisis e Implementación
La implementación real depende del equipo. El equipo tendrá que hacer un análisis para determinar:
- La forma más fácil de implementar una nueva característica.
- ¿Cuál de las diversas opciones de implementación será más fácil de soportar en el futuro, sin acumular deuda técnica?
- Cómo aplicar los principios abierto-cerrado y YAGNI para garantizar que su nueva característica sea robusta sin ser diseñada en exceso.
Uno de los principios centrales del Manifiesto Ágil es la colaboración con el cliente. Se espera que un equipo interdisciplinario y autoorganizado pueda colaborar con el cliente para resolver los detalles de implementación dentro de las pautas proporcionadas por la historia del usuario.
Si sus historias de usuario no están bien escritas, o si el equipo no tiene las habilidades o la madurez de proceso para hacer el análisis lo suficientemente requerido por su marco ágil, entonces esto obviamente será mucho más difícil de lo necesario. Se han escrito libros completos sobre el tema de cómo crear buenas historias de usuario con el nivel de granularidad adecuado; desafortunadamente no hay una bala de plata, pero es una habilidad que se puede aprender para equipos ágiles.
Diseño basado en pruebas y basado en el comportamiento
La mejor manera de garantizar que el análisis sea sólido y que la implementación sea sensata y compatible es mediante el uso de prácticas TDD y BDD. Por ejemplo, dada la historia anterior, el equipo debe capturar la implementación planificada a través de artefactos como:
Funciones de pepino con escenarios comprobables.
Esto es más útil para impulsar el desarrollo de pruebas de aceptación y para documentar las expectativas del usuario sobre el comportamiento de la aplicación. Por ejemplo, la historia del usuario debe tener una o más funciones de pepino relacionadas que describan cómo el usuario puede pagar con una tarjeta Discover y cómo se ve ese proceso para el usuario.
Pruebas de RSpec que validan el comportamiento (no los detalles de implementación internos) de las nuevas características del código.
Esto es más útil para documentar y validar el comportamiento previsto de la función dentro de la aplicación. Por ejemplo, la historia del usuario impulsará la creación de pruebas unitarias y de integración que aseguran que el uso de una tarjeta Discover invoca cualquier comportamiento específico de la tarjeta que la aplicación requiera para autorizar una venta a través de la pasarela de pago.
Las herramientas específicas no importan. Si no le gusta Cucumber o RSpec, use las herramientas o metodologías que funcionen mejor para su equipo. Sin embargo, el punto es que los detalles de implementación se basan en la historia del usuario , pero no están prescritos por ella . En cambio, la implementación (o especificaciones, si lo prefiere) son detalles que se elaborarán durante el desarrollo de la función de manera colaborativa.