9. Preparación del ambiente de pruebas End-to-End

9.1 Introducción

Las pruebas End-to-End dependen mucho del ambiente donde se ejecutan. Como recorren varias partes del sistema, necesitan que la aplicación, la base de datos, los servicios y la configuración estén en un estado adecuado.

Un escenario E2E puede estar bien diseñado y aun así fallar si el ambiente no está preparado: datos faltantes, usuarios bloqueados, servicios externos caídos, configuraciones incorrectas o versiones mezcladas pueden generar resultados confusos.

En este tema veremos qué significa preparar un ambiente E2E y qué aspectos conviene controlar para obtener pruebas confiables.

9.2 Qué es un ambiente de pruebas

Un ambiente de pruebas es un conjunto de recursos donde se ejecuta la aplicación para verificar su comportamiento sin afectar a usuarios reales. Puede incluir servidores, base de datos, frontend, backend, servicios externos, configuración, usuarios y datos.

Un ambiente E2E debe parecerse lo suficiente al ambiente real para validar flujos importantes, pero debe estar controlado para poder preparar datos, ejecutar pruebas y analizar fallas.

No siempre se necesita una copia exacta de producción, pero sí un entorno que represente las partes relevantes del flujo que queremos probar.

9.3 Por qué el ambiente es tan importante en E2E

En pruebas pequeñas, como unitarias, muchas dependencias pueden aislarse. En E2E, en cambio, el flujo atraviesa varias capas. Por eso el ambiente influye directamente en el resultado.

Un ambiente mal preparado puede provocar:

  • Fallas que no son defectos del producto.
  • Resultados distintos entre una ejecución y otra.
  • Pruebas que dependen de datos usados previamente.
  • Dificultad para reproducir errores.
  • Pérdida de confianza en la suite de pruebas.

Cuando las pruebas fallan por el ambiente, el equipo pierde tiempo investigando problemas que no representan fallas reales del sistema.

9.4 Componentes habituales del ambiente

Un ambiente de pruebas E2E puede incluir varios componentes:

Componente Función en el ambiente
Frontend Interfaz donde el usuario realiza acciones y observa resultados.
Backend Procesa reglas, validaciones, permisos y operaciones internas.
Base de datos Guarda usuarios, estados, operaciones y datos necesarios para los flujos.
Servicios externos Pagos, correos, archivos, identidad, notificaciones u otros sistemas.
Configuración Variables, permisos, endpoints, claves de prueba y opciones del sistema.
Datos de prueba Información inicial necesaria para ejecutar escenarios de forma repetible.

9.5 Ambiente representativo

Un ambiente representativo se comporta de forma similar al ambiente donde se usará el sistema. Esto no significa que deba ser idéntico en tamaño, cantidad de datos o infraestructura, pero sí debe respetar las reglas importantes.

Por ejemplo, si en producción se usa autenticación con roles, el ambiente de pruebas debe permitir validar esos roles. Si el flujo depende de una pasarela de pagos, debe existir un modo de prueba para pagos aprobados y rechazados.

Cuanto más distinto sea el ambiente de pruebas respecto del uso real, más cuidado debemos tener al interpretar los resultados.

9.6 Ambiente controlado

Además de representativo, el ambiente debe ser controlado. Esto significa que el equipo puede preparar el estado inicial, ejecutar pruebas y volver a un estado conocido.

Un ambiente controlado permite:

  • Crear usuarios de prueba.
  • Preparar productos, cursos, turnos o solicitudes.
  • Configurar servicios en modo de prueba.
  • Evitar datos reales o sensibles.
  • Limpiar resultados después de cada ejecución.
  • Repetir escenarios sin depender del azar.

El control del ambiente es una de las claves para reducir pruebas inestables.

9.7 Datos iniciales

Antes de ejecutar una prueba E2E, el sistema debe tener los datos necesarios. Por ejemplo, una prueba de compra requiere un usuario, un producto disponible, stock, precio, medio de pago de prueba y configuración de confirmación.

Los datos iniciales pueden prepararse de distintas formas:

Forma Ventaja Riesgo
Datos cargados manualmente Fáciles al comienzo. Pueden cambiar sin control o quedar desactualizados.
Datos semilla Permiten iniciar el ambiente con información conocida. Requieren mantenimiento cuando cambia el modelo de datos.
Datos creados por la prueba Aumentan aislamiento y repetibilidad. Pueden alargar la ejecución si se crean por interfaz.
Datos creados por APIs o herramientas internas Son rápidos y controlables. Requieren soporte técnico y permisos adecuados.

9.8 Usuarios y permisos de prueba

Muchas pruebas E2E dependen de usuarios con roles específicos. Es importante que estos usuarios sean conocidos, estén activos y tengan permisos adecuados.

Ejemplos:

  • Un usuario comprador para validar compras.
  • Un administrador para aprobar operaciones.
  • Un usuario sin permisos para validar accesos denegados.
  • Un usuario nuevo para probar registro o activación.
  • Un usuario con sesión vencida para probar reautenticación.

Estos usuarios deben ser de prueba. No conviene usar cuentas reales ni compartir credenciales personales.

9.9 Servicios externos en modo de prueba

Los servicios externos deben manejarse con mucho cuidado. Una prueba E2E no debería enviar pagos reales, correos a usuarios reales o notificaciones productivas.

Cuando sea posible, conviene usar:

  • Pasarelas de pago en modo sandbox.
  • Bandejas de correo de prueba.
  • Proveedores de identidad configurados para testing.
  • Servicios simulados para respuestas controladas.
  • Claves y credenciales específicas del ambiente de pruebas.
Un ambiente E2E debe permitir probar flujos reales sin producir efectos reales no deseados.

9.10 Configuración del ambiente

La configuración define cómo se conectan las partes del sistema y qué comportamiento está habilitado. Errores de configuración pueden producir fallas difíciles de interpretar.

Algunos elementos a revisar son:

  • URLs de frontend y backend.
  • Conexión a base de datos de prueba.
  • Claves de servicios externos en modo testing.
  • Variables de entorno.
  • Permisos y roles iniciales.
  • Feature flags o funcionalidades habilitadas.
  • Configuración de correos, pagos y archivos.

Una prueba puede fallar aunque el código esté correcto si apunta al servicio equivocado o si usa una opción mal configurada.

9.11 Versiones consistentes

En E2E es importante que las versiones de frontend, backend, base de datos y servicios relacionados sean compatibles. Si una parte fue actualizada y otra no, pueden aparecer fallas que no representan el estado real del producto.

Ejemplo: el frontend envía un campo nuevo, pero el backend del ambiente todavía no lo reconoce. La prueba falla, pero el problema no está necesariamente en el flujo, sino en la mezcla de versiones.

Antes de ejecutar una suite E2E importante, conviene confirmar que las partes desplegadas corresponden a la versión que se quiere probar.

9.12 Aislamiento del ambiente

El aislamiento evita que una ejecución afecte a otra. Si varias personas o procesos usan el mismo ambiente y modifican los mismos datos, las pruebas pueden volverse impredecibles.

Algunas prácticas útiles son:

  • Usar datos únicos por ejecución.
  • Crear usuarios o entidades con identificadores diferenciados.
  • Limpiar datos temporales después de cada prueba.
  • Evitar que pruebas distintas dependan del mismo estado mutable.
  • Separar ambientes cuando las pruebas son críticas o frecuentes.

El aislamiento mejora la repetibilidad y reduce fallas intermitentes.

9.13 Evidencias y observabilidad

Preparar el ambiente también implica facilitar el diagnóstico. Cuando una prueba E2E falla, necesitamos evidencia para entender qué ocurrió.

Conviene contar con:

  • Registros del backend accesibles.
  • Capturas o videos de la ejecución.
  • Identificadores de operaciones creadas durante la prueba.
  • Estado de servicios externos o simulados.
  • Información de versión desplegada.
  • Datos de entrada usados por el escenario.

Sin evidencias, una falla E2E puede convertirse en una investigación lenta y poco precisa.

9.14 Lista de verificación del ambiente

Antes de ejecutar pruebas E2E importantes, podemos revisar esta lista:

  • La versión desplegada es la correcta.
  • El frontend y el backend apuntan al ambiente esperado.
  • La base de datos contiene los datos iniciales necesarios.
  • Los usuarios de prueba existen y tienen permisos correctos.
  • Los servicios externos están en modo de prueba o controlados.
  • Las credenciales corresponden al ambiente de testing.
  • Hay forma de limpiar o aislar datos generados.
  • Existen evidencias suficientes para diagnosticar fallas.

9.15 Errores comunes

Al preparar ambientes E2E, son frecuentes estos errores:

  • Usar datos reales o sensibles.
  • Depender de datos cargados manualmente sin control.
  • Ejecutar pruebas contra versiones mezcladas.
  • Usar servicios externos reales sin modo de prueba.
  • No limpiar datos generados por ejecuciones anteriores.
  • Compartir usuarios de prueba entre muchos escenarios sin aislamiento.
  • No tener registros o evidencias para analizar fallas.

9.16 Qué debes recordar de este tema

  • El ambiente influye directamente en la confiabilidad de las pruebas E2E.
  • Debe ser representativo del uso real, pero también controlable.
  • Los datos iniciales, usuarios, permisos y servicios externos deben prepararse con cuidado.
  • No conviene usar datos reales ni credenciales personales.
  • Las versiones de las partes del sistema deben ser compatibles.
  • El aislamiento evita que una prueba afecte a otra.
  • Las evidencias son necesarias para diagnosticar fallas con rapidez.

9.17 Conclusión

Una prueba End-to-End confiable necesita un ambiente preparado. Si el ambiente es inestable, ambiguo o difícil de controlar, los resultados pierden valor y el equipo puede dejar de confiar en la suite.

Preparar el ambiente no es una tarea secundaria: forma parte del diseño de la prueba. Un buen ambiente permite ejecutar escenarios de manera repetible, segura y diagnóstica.

En el próximo tema profundizaremos en los datos de prueba: creación, aislamiento, limpieza y reutilización.