8 min lectura • Guide 791 of 877
Escritura de User Stories
Las user stories son la base del desarrollo ágil. GitScrum proporciona campos estructurados para historias, criterios de aceptación y puntos de historia para ayudar a los equipos a gestionar su backlog efectivamente.
Estructura de Story
Plantilla Básica
ANATOMÍA DE USER STORY:
┌─────────────────────────────────────────────────────────────┐
│ │
│ PLANTILLA ESTÁNDAR: │
│ ──────────────────── │
│ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Como [tipo de usuario] ││
│ │ ││
│ │ Quiero [acción o capacidad] ││
│ │ ││
│ │ Para que [beneficio o valor] ││
│ │ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ EJEMPLO REAL: │
│ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Como líder de equipo de ventas ││
│ │ ││
│ │ Quiero ver el progreso semanal de mi equipo ││
│ │ en un dashboard ││
│ │ ││
│ │ Para que pueda identificar quién necesita ││
│ │ coaching y ajustar objetivos ││
│ │ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ POR QUÉ CADA PARTE IMPORTA: │
│ │
│ "Como [usuario]" → Define quién se beneficia │
│ → Crea empatía │
│ → Aclara la perspectiva │
│ │
│ "Quiero [acción]" → El resultado observable │
│ → Lo que pueden hacer │
│ → No cómo se construye │
│ │
│ "Para que [valor]" → Justificación de negocio │
│ → Impulsa priorización │
│ → Define el éxito │
└─────────────────────────────────────────────────────────────┘
Estructura Completa de Historia
CARD DE USER STORY COMPLETA:
┌─────────────────────────────────────────────────────────────┐
│ │
│ TÍTULO: Exportar Datos de Ventas │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ HISTORIA: │
│ Como analista de ventas, │
│ Quiero exportar datos de ventas a Excel, │
│ Para que pueda crear reportes personalizados │
│ para mi equipo ejecutivo. │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ CRITERIOS DE ACEPTACIÓN: │
│ │
│ ☐ AC1: Puede exportar datos del último mes │
│ Given estoy en la página de ventas │
│ When hago clic en "Exportar a Excel" │
│ Then se descarga un archivo .xlsx │
│ And contiene todas las columnas visibles │
│ │
│ ☐ AC2: Puede seleccionar rango de fechas │
│ Given selecciono fechas personalizadas │
│ When exporto datos │
│ Then el archivo solo contiene datos del rango │
│ │
│ ☐ AC3: Se manejan conjuntos de datos grandes │
│ Given hay más de 10,000 filas │
│ When exporto │
│ Then la exportación se completa en menos de 30 segundos│
│ And todos los datos están incluidos │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ ESTIMACIÓN: 5 Story Points │
│ │
│ ETIQUETAS: exportar, ventas, reportes │
│ │
│ PRIORIDAD: Alta │
│ │
│ NOTAS: │
│ - Solicitado por 12 usuarios en el último mes │
│ - Similar a exportación de marketing existente │
└─────────────────────────────────────────────────────────────┘
Criterios INVEST
Los Seis Criterios
LISTA DE VERIFICACIÓN INVEST:
┌─────────────────────────────────────────────────────────────┐
│ │
│ I - INDEPENDIENTE │
│ ☐ ¿Puede desarrollarse sin esperar otra historia? │
│ ☐ ¿El orden de desarrollo es flexible? │
│ ☐ ¿Sin dependencias duras de bloqueo? │
│ │
│ N - NEGOCIABLE │
│ ☐ ¿Los detalles pueden discutirse con el equipo? │
│ ☐ ¿La historia no está sobre-especificada? │
│ ☐ ¿La implementación es flexible? │
│ │
│ V - VALIOSA │
│ ☐ ¿Entrega valor al usuario o al negocio? │
│ ☐ ¿El "para que" es claro? │
│ ☐ ¿El stakeholder lo quiere? │
│ │
│ E - ESTIMABLE │
│ ☐ ¿El equipo entiende lo suficiente para estimar? │
│ ☐ ¿El alcance está claro? │
│ ☐ ¿No muy vaga? │
│ │
│ S - PEQUEÑA │
│ ☐ ¿Cabe en un sprint? │
│ ☐ ¿Es menor a 8 story points? │
│ ☐ ¿Se puede completar en días? │
│ │
│ T - TESTEABLE │
│ ☐ ¿Tiene criterios de aceptación claros? │
│ ☐ ¿Se puede demostrar como hecha? │
│ ☐ ¿Se puede escribir como test? │
│ │
│ PUNTUACIÓN: ___/6 criterios cumplidos │
│ │
│ GUÍA: 5-6 = Lista para sprint │
│ 3-4 = Necesita refinamiento │
│ 0-2 = Necesita reescritura significativa │
└─────────────────────────────────────────────────────────────┘
Criterios de Aceptación
Formato Gherkin
ESCRIBIENDO BUENOS CRITERIOS DE ACEPTACIÓN:
┌─────────────────────────────────────────────────────────────┐
│ │
│ SINTAXIS GHERKIN: │
│ ───────────────── │
│ │
│ Feature: [Nombre de la Feature] │
│ Scenario: [Escenario Específico] │
│ Given [precondición] │
│ And [otra precondición] │
│ When [acción] │
│ And [otra acción] │
│ Then [resultado esperado] │
│ And [otro resultado] │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ EJEMPLO: Recuperación de Contraseña │
│ │
│ Feature: Recuperación de Contraseña │
│ │
│ Scenario: Solicitud exitosa de reset │
│ Given soy usuario registrado │
│ And estoy en la página de login │
│ When hago clic en "Olvidé mi contraseña" │
│ And ingreso mi email registrado │
│ And hago clic en "Enviar link de reset" │
│ Then veo confirmación de email enviado │
│ And recibo email con enlace de reset │
│ │
│ Scenario: Email no registrado │
│ Given estoy en la página de contraseña olvidada │
│ When ingreso un email no registrado │
│ And hago clic en "Enviar link de reset" │
│ Then veo el mismo mensaje de confirmación │
│ (Por seguridad - no revelar si email existe) │
│ │
│ Scenario: El enlace de reset expira │
│ Given he solicitado reset de contraseña │
│ When hago clic en el enlace después de 24 horas │
│ Then veo mensaje de enlace expirado │
│ And puedo solicitar un nuevo enlace │
└─────────────────────────────────────────────────────────────┘
Cuántos ACs
GUÍA DE CRITERIOS DE ACEPTACIÓN:
┌─────────────────────────────────────────────────────────────┐
│ │
│ NÚMERO IDEAL DE ACs: │
│ │
│ 3-7 criterios por historia │
│ │
│ Menos de 3: │
│ • Probablemente falta casos edge │
│ • Agregar manejo de errores, validación │
│ │
│ Más de 7: │
│ • Historia probablemente muy grande │
│ • Considerar dividir en múltiples historias │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ COBERTURA A INCLUIR: │
│ │
│ ✅ Happy path (caso de éxito) │
│ ✅ Estados de error │
│ ✅ Casos edge │
│ ✅ Validación │
│ ✅ Permisos (si aplica) │
│ ✅ Requisitos de rendimiento (si críticos) │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ EJEMPLO DE CONTEO: │
│ │
│ Historia: Feature de Login │
│ │
│ 1. Login exitoso con credenciales válidas │
│ 2. Manejo de contraseña incorrecta │
│ 3. Manejo de email no encontrado │
│ 4. Bloqueo de cuenta después de 5 intentos fallidos │
│ 5. Opción de "Recordarme" │
│ 6. Redirección a página original después de login │
│ │
│ Total: 6 ACs - ¡buen tamaño! │
└─────────────────────────────────────────────────────────────┘
Técnicas de División
Cuándo Dividir
DIVIDIENDO HISTORIAS GRANDES:
┌─────────────────────────────────────────────────────────────┐
│ │
│ SEÑALES DE QUE UNA HISTORIA ES MUY GRANDE: │
│ │
│ ⚠️ Estimada en 13+ puntos │
│ ⚠️ Toma más de medio sprint │
│ ⚠️ Tiene 10+ criterios de aceptación │
│ ⚠️ El equipo no puede ponerse de acuerdo en el tamaño │
│ ⚠️ Muchos "y" en la descripción │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ PATRONES DE DIVISIÓN: │
│ │
│ POR OPERACIÓN (CRUD): │
│ "Gestionar usuarios" → │
│ • Crear usuario │
│ • Listar usuarios │
│ • Editar usuario │
│ • Eliminar usuario │
│ │
│ POR PERSONA: │
│ "Dashboard" → │
│ • Dashboard para admin │
│ • Dashboard para manager │
│ • Dashboard para usuario │
│ │
│ POR VARIACIÓN DE DATOS: │
│ "Exportar datos" → │
│ • Exportar a CSV │
│ • Exportar a Excel │
│ • Exportar a PDF │
│ │
│ POR COMPLEJIDAD: │
│ "Búsqueda" → │
│ • Búsqueda básica por nombre │
│ • Agregar filtros │
│ • Agregar ordenamiento │
│ • Agregar búsqueda avanzada │
└─────────────────────────────────────────────────────────────┘