11. Usuarios, permisos y estados iniciales del sistema

11.1 Introducción

Muchas pruebas End-to-End comienzan con una condición previa: un usuario existe, tiene un rol, cuenta con permisos, posee datos asociados o se encuentra en un estado específico. Si esa condición inicial no está controlada, la prueba puede fallar por motivos ajenos al flujo que queremos validar.

Preparar usuarios, permisos y estados iniciales es una parte fundamental del diseño E2E. No basta con ejecutar pasos; necesitamos saber desde qué situación parte el sistema.

En este tema veremos cómo organizar estos elementos para que las pruebas sean repetibles, claras y fáciles de diagnosticar.

11.2 Qué es un estado inicial

El estado inicial es la situación del sistema antes de comenzar el escenario. Incluye los datos existentes, los permisos del usuario, las configuraciones activas y cualquier condición necesaria para que el flujo pueda ejecutarse.

Una prueba E2E confiable comienza desde un estado conocido. Si no sabemos cómo empieza el sistema, será difícil interpretar cómo termina.

Por ejemplo, para probar una reserva de turno, el estado inicial puede incluir: paciente registrado, profesional disponible, agenda abierta, turno libre y servicio de notificación configurado.

11.3 Usuarios de prueba

Un usuario de prueba es una cuenta creada para ejecutar escenarios sin afectar usuarios reales. Debe tener credenciales, datos y estado adecuados para la prueba.

Ejemplos habituales:

  • Usuario comprador.
  • Usuario administrador.
  • Usuario sin permisos especiales.
  • Usuario nuevo sin datos previos.
  • Usuario con perfil incompleto.
  • Usuario bloqueado o inactivo.

Estos usuarios deben estar documentados o crearse automáticamente, según la estrategia de datos del proyecto.

11.4 Roles y permisos

Los roles y permisos definen qué acciones puede realizar cada usuario. En pruebas E2E son importantes porque muchos flujos dependen de autorizaciones.

Rol Permiso esperado Ejemplo de escenario E2E
Alumno Comprar y ver cursos propios. Compra un curso y lo ve en "Mis cursos".
Docente Publicar y editar clases propias. Publica una clase y la visualiza en el curso.
Administrador Gestionar usuarios o aprobar contenidos. Aprueba una solicitud pendiente.
Visitante Solo acceder a páginas públicas. Intenta entrar a una página privada y es redirigido al login.

11.5 Estados del usuario

No alcanza con saber el rol del usuario. También importa su estado. Un mismo rol puede comportarse distinto según la situación de la cuenta.

Estados posibles:

  • Activo: puede usar la aplicación normalmente.
  • Pendiente de activación: necesita confirmar correo o completar registro.
  • Bloqueado: no puede iniciar sesión o ejecutar acciones.
  • Sin perfil completo: debe completar datos antes de avanzar.
  • Con suscripción vencida: tiene acceso restringido.
  • Con sesión expirada: debe autenticarse nuevamente.

Cuando el flujo depende de alguno de estos estados, la prueba debe prepararlo explícitamente.

11.6 Estados de entidades del sistema

Además de usuarios, muchas pruebas dependen del estado de entidades del negocio: productos, cursos, turnos, solicitudes, órdenes, documentos o pagos.

Entidad Estado inicial posible Uso en E2E
Curso Publicado, borrador, agotado, oculto. Validar compra o acceso al contenido.
Turno Disponible, reservado, cancelado. Validar reserva o cancelación.
Solicitud Borrador, pendiente, aprobada, rechazada. Validar flujo de aprobación.
Orden Creada, pagada, anulada, enviada. Validar seguimiento de compra.

Una prueba debe declarar qué estado necesita y qué cambio espera producir.

11.7 Preparar estados iniciales

Existen varias formas de preparar el estado inicial de una prueba E2E:

  • Usar datos semilla cargados al iniciar el ambiente.
  • Crear datos mediante APIs de preparación.
  • Usar herramientas internas de administración.
  • Crear datos desde la interfaz cuando eso forme parte del flujo.
  • Restaurar una base de datos conocida antes de ejecutar la suite.

La preparación debe ser lo más directa posible. Si el objetivo es probar la compra, no conviene gastar demasiado tiempo creando manualmente un curso desde la interfaz, salvo que esa creación también sea parte del riesgo que se quiere validar.

11.8 Evitar dependencias entre pruebas

Una mala práctica es hacer que una prueba dependa del resultado de otra. Por ejemplo: una prueba crea un usuario, otra compra un curso con ese usuario y una tercera verifica el acceso al contenido.

Ese enfoque parece cómodo, pero genera problemas:

  • Si la primera prueba falla, las demás también fallan.
  • No se puede ejecutar un escenario aislado con facilidad.
  • El diagnóstico se vuelve confuso.
  • El orden de ejecución se vuelve obligatorio.
Cada escenario E2E debería preparar o verificar su propio estado inicial, sin depender de que otra prueba haya dejado el sistema listo.

11.9 Usuarios compartidos y usuarios únicos

En algunos casos se reutilizan usuarios de prueba. En otros, conviene crear usuarios únicos por ejecución. Ambas estrategias pueden ser válidas si se aplican con criterio.

Estrategia Cuándo conviene Riesgo
Usuario compartido Para roles estables que no cambian durante la prueba. Puede acumular estado o generar interferencias.
Usuario único Para flujos que modifican datos personales, compras, reservas o estados. Requiere creación y limpieza.

Si una prueba modifica el estado del usuario, suele ser más seguro usar un usuario único o restaurar el estado antes de cada ejecución.

11.10 Pruebas de permisos

Los permisos son buenos candidatos para pruebas E2E cuando el riesgo está en el acceso completo al flujo. No se trata solo de verificar que un botón no aparezca, sino que el sistema impida acciones no autorizadas.

Ejemplos de verificaciones:

  • Un visitante que intenta acceder a una página privada es redirigido al login.
  • Un usuario común no puede aprobar una solicitud.
  • Un administrador puede aprobar la solicitud y el estado cambia correctamente.
  • Un usuario solo puede ver sus propias órdenes, no las de otros usuarios.

En permisos, es importante verificar tanto la interfaz como el resultado final. Ocultar un botón no alcanza si la acción todavía puede ejecutarse por otra vía.

11.11 Estados iniciales inválidos

También conviene pensar en estados iniciales inválidos o bloqueantes. Estos escenarios ayudan a validar que el sistema responda correctamente cuando el usuario no debería avanzar.

Ejemplos:

  • Usuario sin correo confirmado intenta comprar.
  • Alumno intenta acceder a un curso que no compró.
  • Paciente intenta cancelar un turno ya finalizado.
  • Administrador intenta aprobar una solicitud ya rechazada.
  • Usuario con sesión vencida intenta enviar un formulario.

No todos estos casos deben ser E2E, pero los de mayor impacto pueden formar parte de la suite.

11.12 Ejemplo: plataforma de cursos

Para una plataforma de cursos, podríamos preparar distintos usuarios y estados:

Escenario Usuario necesario Estado inicial Resultado esperado
Comprar curso Alumno activo. Curso publicado y no comprado. El curso aparece en "Mis cursos".
Acceder a curso no comprado Alumno activo. Curso publicado, pero no asociado al alumno. El sistema bloquea el acceso al contenido.
Publicar clase Docente autorizado. Curso asignado al docente. La clase queda visible en el curso.
Aprobar contenido Administrador. Clase pendiente de revisión. La clase cambia a estado aprobada.

11.13 Documentar usuarios y estados

Para mantener una suite E2E clara, conviene documentar qué usuarios y estados necesita cada escenario. Esta documentación evita suposiciones y facilita el mantenimiento.

Una ficha simple puede incluir:

  • Nombre del escenario.
  • Rol del usuario.
  • Estado de la cuenta.
  • Datos asociados necesarios.
  • Permisos esperados.
  • Estado inicial de las entidades involucradas.
  • Estado final esperado después del flujo.

Si el escenario falla, esta información ayuda a comprobar rápidamente si el ambiente estaba preparado como correspondía.

11.14 Errores comunes

Al preparar usuarios, permisos y estados iniciales, son comunes estos errores:

  • Usar cuentas reales o personales para pruebas.
  • No saber qué permisos tiene realmente el usuario usado.
  • Compartir un usuario entre pruebas que modifican su estado.
  • No preparar el estado inicial de entidades como cursos, turnos u órdenes.
  • Hacer que una prueba dependa de otra.
  • Verificar solo la interfaz y no el resultado del permiso.
  • No limpiar o restaurar estados modificados por la prueba.

11.15 Lista de verificación

Antes de ejecutar un escenario E2E, podemos revisar:

  • ¿Qué usuario ejecuta el flujo?
  • ¿Qué rol y permisos necesita?
  • ¿La cuenta está activa, bloqueada, pendiente o en otro estado?
  • ¿Qué entidades deben existir antes de comenzar?
  • ¿En qué estado deben estar esas entidades?
  • ¿La prueba modifica datos del usuario o del sistema?
  • ¿Los datos usados son únicos o compartidos?
  • ¿Cómo se limpiará o restaurará el estado final?

11.16 Qué debes recordar de este tema

  • Una prueba E2E debe comenzar desde un estado inicial conocido.
  • Los usuarios de prueba deben tener roles, permisos y estados adecuados.
  • No conviene usar cuentas reales ni credenciales personales.
  • Las entidades del negocio también tienen estados que deben prepararse.
  • Las pruebas no deberían depender del resultado de otras pruebas.
  • Los permisos deben verificarse por comportamiento, no solo por elementos visibles.
  • Documentar usuarios y estados facilita mantenimiento y diagnóstico.

11.17 Conclusión

Usuarios, permisos y estados iniciales determinan desde dónde parte una prueba End-to-End. Si esos elementos no están definidos, la prueba puede volverse inestable o difícil de interpretar.

Una buena preparación permite que el escenario valide el flujo que realmente interesa, sin fallar por cuentas mal configuradas, permisos incorrectos o datos en estados inesperados.

En el próximo tema veremos la interacción con interfaces de usuario: formularios, navegación y validaciones.