6 min lectura • Guide 141 of 877
Creando Historias Usuario Efectivas con Criterios Aceptación
Historias usuario deben comunicar qué necesitan usuarios y por qué, permitiendo equipos desarrollo implementar soluciones mientras testers verifican que se construyó lo correcto. Historias mal escritas crean confusión, retrabajo, y features entregadas que fallan el objetivo. Historias claras con criterios aceptación precisos eliminan ambigüedad y aceleran entrega.
Fundamentos Historia Usuario
El Formato Estándar
ESTRUCTURA HISTORIA USUARIO:
┌─────────────────────────────────────────────────────────────┐
│ ANATOMÍA BUENA HISTORIA USUARIO │
├─────────────────────────────────────────────────────────────┤
│ │
│ FORMATO CLÁSICO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Como [tipo de usuario] ││
│ │ Quiero [alguna capacidad] ││
│ │ Para que [valor negocio/beneficio] ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ POR QUÉ IMPORTA CADA PARTE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ "Como [usuario]": ││
│ │ • Clarifica perspectiva (admin ≠ cliente) ││
│ │ • Habilita empatía durante implementación ││
│ │ • Ayuda identificar edge cases diferentes usuarios ││
│ │ ││
│ │ "Quiero [capacidad]": ││
│ │ • Describe necesidad, no solución ││
│ │ • Permite implementación creativa ││
│ │ • Enfoca en resultado, no mecanismo ││
│ │ ││
│ │ "Para que [beneficio]": ││
│ │ • Explica POR QUÉ (frecuentemente olvidado) ││
│ │ • Habilita mejores soluciones ││
│ │ • Ayuda discusiones priorización ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ EJEMPLOS BUENOS vs MALOS: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ❌ Malo: "Agregar botón exportar a página reportes" ││
│ │ (Especifica solución, sin usuario, sin por qué) ││
│ │ ││
│ │ ✅ Bueno: "Como gerente marketing, quiero exportar ││
│ │ reportes campaña a CSV para que pueda analizar ││
│ │ rendimiento en nuestra herramienta BI sin copiar ││
│ │ manualmente" ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Escribiendo Criterios Aceptación
Definiendo "Terminado" Precisamente
PATRONES CRITERIOS ACEPTACIÓN:
┌─────────────────────────────────────────────────────────────┐
│ FORMATO DADO-CUANDO-ENTONCES │
├─────────────────────────────────────────────────────────────┤
│ │
│ ESTRUCTURA: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Dado [precondición/contexto] ││
│ │ Cuando [acción/trigger] ││
│ │ Entonces [resultado esperado] ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ EJEMPLO PARA HISTORIA EXPORTAR: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Criterio 1: Exportación básica ││
│ │ Dado que estoy viendo un reporte campaña ││
│ │ Cuando hago clic "Exportar a CSV" ││
│ │ Entonces un archivo CSV descarga con todos datos visibles││
│ │ ││
│ │ Criterio 2: Manejo rango fechas ││
│ │ Dado que filtré reporte por rango fechas ││
│ │ Cuando exporto a CSV ││
│ │ Entonces solo datos filtrados están incluidos ││
│ │ ││
│ │ Criterio 3: Manejo datos grandes ││
│ │ Dado que reporte tiene más de 10,000 filas ││
│ │ Cuando exporto a CSV ││
│ │ Entonces recibo link por email en vez de descarga directa││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Templates Tareas GitScrum
Estandarizando Estructura Historia
SETUP TEMPLATE TAREA:
┌─────────────────────────────────────────────────────────────┐
│ CREANDO TEMPLATES HISTORIA REUTILIZABLES │
├─────────────────────────────────────────────────────────────┤
│ │
│ TEMPLATE HISTORIA USUARIO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Título: [Feature] - [Descripción breve] ││
│ │ ││
│ │ Descripción: ││
│ │ ## Historia Usuario ││
│ │ Como [tipo usuario] ││
│ │ Quiero [capacidad] ││
│ │ Para que [beneficio] ││
│ │ ││
│ │ ## Contexto ││
│ │ [Cualquier contexto que ayude entendimiento] ││
│ │ ││
│ │ ## Criterios Aceptación ││
│ │ ### Criterio 1: [Nombre] ││
│ │ Dado [contexto] ││
│ │ Cuando [acción] ││
│ │ Entonces [resultado] ││
│ │ ││
│ │ ## Fuera de Scope ││
│ │ [Explícitamente qué NO incluye esta historia] ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ITEMS CHECKLIST: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Definición Terminado: ││
│ │ ☐ Todos criterios aceptación cumplidos ││
│ │ ☐ Código revisado y aprobado ││
│ │ ☐ Tests unitarios escritos y pasando ││
│ │ ☐ Documentación actualizada ││
│ │ ☐ Sign-off QA recibido ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Dimensionando Historias
Haciendo Historias Trabajables
DIVIDIENDO HISTORIAS:
┌─────────────────────────────────────────────────────────────┐
│ DIMENSIONANDO HISTORIAS CORRECTAMENTE │
├─────────────────────────────────────────────────────────────┤
│ │
│ GUÍAS TAMAÑO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Muy grande (Épica): ││
│ │ • Toma más de un sprint ││
│ │ • Tiene múltiples resultados usuario distintos ││
│ │ • Contiene "y" en cláusula quiero ││
│ │ ││
│ │ Tamaño correcto (Historia): ││
│ │ • Completable en 1-3 días ││
│ │ • Un solo resultado usuario ││
│ │ • Testeable independientemente ││
│ │ ││
│ │ Muy pequeña (Tarea): ││
│ │ • Sin valor usuario por sí misma ││
│ │ • Detalle implementación puro ││
│ │ • "Crear tabla base datos" ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ TÉCNICAS DIVISIÓN: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Por paso workflow: ││
│ │ Épica: "Usuario puede gestionar perfil" ││
│ │ → Historia 1: Ver perfil ││
│ │ → Historia 2: Editar info básica ││
│ │ → Historia 3: Cambiar contraseña ││
│ │ → Historia 4: Subir avatar ││
│ │ ││
│ │ Por operación (CRUD): ││
│ │ Épica: "Admin gestiona usuarios" ││
│ │ → Historia 1: Crear usuario ││
│ │ → Historia 2: Ver lista usuarios ││
│ │ → Historia 3: Editar usuario ││
│ │ → Historia 4: Desactivar usuario ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘