10. Datos de prueba: creación, aislamiento, limpieza y reutilización

10.1 Introducción

Los datos de prueba son una parte central de las pruebas End-to-End. Un escenario E2E casi siempre necesita datos previos: usuarios, productos, permisos, turnos disponibles, solicitudes, estados, medios de pago o configuraciones.

Si los datos no están bien preparados, la prueba puede fallar aunque la aplicación funcione correctamente. También puede pasar lo contrario: la prueba puede pasar por casualidad porque encontró datos que quedaron de una ejecución anterior.

En este tema veremos cómo crear, aislar, limpiar y reutilizar datos para que las pruebas E2E sean más confiables.

10.2 Qué son los datos de prueba

Los datos de prueba son los datos que usamos para preparar, ejecutar y verificar un escenario. Pueden existir antes de comenzar la prueba, generarse durante la ejecución o comprobarse al final.

Tipo de dato Ejemplo Uso en la prueba
Dato inicial Usuario registrado. Permite iniciar sesión antes de ejecutar el flujo.
Dato de entrada Dirección de envío. Se ingresa durante el escenario.
Dato generado Número de orden. Se crea como resultado del flujo.
Dato esperado Curso visible en "Mis cursos". Sirve para verificar que el resultado fue correcto.

10.3 Por qué los datos son difíciles en E2E

En pruebas End-to-End, los datos suelen atravesar muchas partes del sistema. Un usuario puede tener permisos, historial, estados previos, operaciones asociadas y restricciones. Un producto puede tener stock, precio, categoría, disponibilidad y reglas de compra.

Esto genera desafíos:

  • Los datos pueden quedar modificados después de una prueba.
  • Dos pruebas pueden intentar usar el mismo dato al mismo tiempo.
  • Un dato puede depender de otro dato que no fue creado.
  • El estado inicial puede no ser el que la prueba espera.
  • Los datos pueden quedar obsoletos cuando cambia la aplicación.

Por eso, la gestión de datos debe diseñarse junto con la prueba, no improvisarse al final.

10.4 Datos fijos

Los datos fijos son datos que ya existen en el ambiente y que muchas pruebas pueden usar. Por ejemplo, un usuario administrador, una categoría de productos o una configuración básica.

Ventajas:

  • Son fáciles de usar.
  • Reducen tiempo de preparación.
  • Pueden ser útiles para datos globales del sistema.

Riesgos:

  • Si alguien los modifica, muchas pruebas pueden fallar.
  • Pueden generar dependencia entre pruebas.
  • Pueden ocultar problemas si acumulan estado de ejecuciones anteriores.

Los datos fijos son útiles, pero deben estar controlados y documentados.

10.5 Datos creados por la prueba

Otra estrategia es que cada prueba cree los datos que necesita. Esto mejora el aislamiento porque el escenario no depende tanto de datos existentes.

Por ejemplo, antes de probar una compra, la prueba puede crear un producto de prueba, un usuario y un medio de pago simulado. Luego ejecuta el flujo con esos datos.

Una prueba E2E es más confiable cuando controla los datos que necesita para comenzar y sabe qué datos espera al terminar.

Crear datos por prueba puede aumentar el tiempo de ejecución, pero suele mejorar la repetibilidad y reducir fallas por estado desconocido.

10.6 Formas de crear datos

Los datos de prueba pueden crearse de varias maneras. La elección depende del sistema, del nivel de control y del costo aceptable.

Forma Ventaja Limitación
Desde la interfaz Muy realista. Puede ser lenta y agregar pasos no relacionados con el objetivo.
Por API Rápida y controlable. Requiere endpoints disponibles y permisos adecuados.
Con scripts o herramientas internas Permite preparar datos complejos. Requiere mantenimiento técnico.
Mediante datos semilla Deja el ambiente listo desde el inicio. Puede volverse rígida si los escenarios cambian mucho.
Directamente en base de datos Puede ser rápida. Riesgosa si evita reglas del sistema o rompe consistencia.

10.7 Aislamiento de datos

Aislar datos significa evitar que una prueba dependa de datos modificados por otra prueba o por otra persona. El aislamiento es clave para ejecutar pruebas de forma repetible.

Prácticas comunes:

  • Crear datos únicos para cada ejecución.
  • Usar nombres, correos o identificadores con marcas de prueba.
  • No compartir entidades modificables entre escenarios.
  • Separar usuarios por rol y por tipo de prueba.
  • Evitar que una prueba dependa del resultado de otra.

Si una prueba necesita que otra se ejecute antes, la suite se vuelve más frágil. Cada escenario debería preparar lo necesario para sí mismo.

10.8 Datos únicos

Muchas fallas aparecen porque dos ejecuciones intentan usar el mismo dato. Por ejemplo, registrar dos veces el mismo correo electrónico o reservar dos veces el mismo turno.

Para evitarlo, se pueden crear datos únicos por ejecución:

  • Correos como alumno+prueba123@ejemplo.com.
  • Nombres con fecha, hora o identificador de ejecución.
  • Códigos de producto generados para la prueba.
  • Turnos o recursos exclusivos del escenario.

La unicidad reduce conflictos y permite ejecutar pruebas repetidas o paralelas con menos interferencia.

10.9 Limpieza de datos

Después de una prueba, pueden quedar datos creados: usuarios, órdenes, reservas, archivos, notificaciones o registros temporales. Si no se limpian, el ambiente se llena de información que puede afectar futuras ejecuciones.

La limpieza puede hacerse de distintas formas:

  • Eliminar los datos creados al finalizar la prueba.
  • Marcar los datos como inactivos o cancelados.
  • Restaurar el ambiente desde una base conocida.
  • Usar ambientes temporales que se destruyen después de la ejecución.
  • Programar tareas periódicas para borrar datos antiguos de prueba.

La limpieza debe ser segura. No debe borrar datos que no pertenecen a la prueba.

10.10 Limpieza antes o después

Una decisión común es limpiar antes de la prueba, después de la prueba o en ambos momentos.

Momento Ventaja Riesgo
Antes Asegura un estado inicial conocido. Puede ocultar problemas si no se revisa qué dejó una prueba anterior.
Después Deja el ambiente preparado para futuras ejecuciones. Si la prueba falla antes de limpiar, pueden quedar datos residuales.
Antes y después Mayor control. Requiere más cuidado para no borrar datos incorrectos.

En la práctica, conviene diseñar pruebas que no dependan de que la limpieza anterior haya sido perfecta.

10.11 Reutilización de datos

Reutilizar datos puede ser conveniente cuando se trata de información estable y común, como roles, categorías, países, monedas o configuraciones básicas.

La reutilización es razonable cuando:

  • El dato no cambia durante la prueba.
  • Está documentado y protegido.
  • No genera dependencia entre escenarios.
  • No contiene información real o sensible.
  • Su estado se puede verificar antes de usarlo.

No conviene reutilizar datos que cambian como parte del flujo, por ejemplo una orden, una reserva disponible o un cupón de un solo uso.

10.12 Datos sensibles

En ambientes de prueba no deberían usarse datos personales reales, tarjetas reales, documentos reales, contraseñas reales ni información confidencial de usuarios.

Buenas prácticas:

  • Usar datos ficticios o anonimizados.
  • Evitar copiar bases productivas sin tratamiento.
  • Usar credenciales específicas para testing.
  • No guardar contraseñas en documentos compartidos sin protección.
  • No enviar correos o notificaciones a usuarios reales.
Los datos de prueba deben permitir validar el sistema sin exponer información real ni provocar efectos no deseados.

10.13 Ejemplo: compra de un curso

Para una prueba E2E de compra de curso, podríamos definir estos datos:

Dato Estrategia Motivo
Alumno Crear o reutilizar usuario de prueba aislado. Debe poder iniciar sesión y comprar.
Curso Crear curso publicado para la ejecución. Evita depender de cursos modificados por otras pruebas.
Medio de pago Usar tarjeta de prueba aprobada. Valida el flujo sin realizar pagos reales.
Orden generada Capturar identificador y verificar resultado. Permite diagnosticar y limpiar datos.

10.14 Errores comunes

Al trabajar con datos de prueba en E2E, conviene evitar estos errores:

  • Usar siempre el mismo usuario para pruebas que modifican su estado.
  • Depender de datos cargados manualmente sin documentarlos.
  • No limpiar órdenes, reservas o archivos generados.
  • Usar datos reales o sensibles.
  • Crear datos directamente en la base sin respetar reglas del sistema.
  • Hacer que una prueba dependa del resultado de otra.
  • No diferenciar datos de prueba de datos comunes del ambiente.

10.15 Lista de verificación

Antes de ejecutar un escenario E2E, conviene revisar:

  • Qué datos iniciales necesita la prueba.
  • Cómo se crearán esos datos.
  • Si los datos son únicos o compartidos.
  • Qué datos serán modificados durante el flujo.
  • Qué resultado se espera verificar.
  • Cómo se limpiarán los datos generados.
  • Si existe riesgo de afectar otras pruebas.
  • Si los datos contienen información sensible.

10.16 Qué debes recordar de este tema

  • Los datos de prueba son esenciales para que una prueba E2E sea repetible.
  • Los datos pueden ser iniciales, de entrada, generados o esperados.
  • Crear datos por prueba mejora el aislamiento, aunque puede aumentar el costo.
  • Los datos compartidos deben ser estables, documentados y protegidos.
  • La limpieza evita que el ambiente acumule estado que afecte futuras ejecuciones.
  • No deben usarse datos reales o sensibles en ambientes de prueba.
  • Una buena estrategia de datos reduce fallas intermitentes y facilita el diagnóstico.

10.17 Conclusión

Gestionar datos de prueba es una de las tareas más importantes en pruebas End-to-End. Sin datos controlados, los escenarios pueden volverse impredecibles y perder valor.

La clave es preparar datos suficientes para validar el flujo, aislarlos para evitar interferencias, limpiarlos cuando corresponda y reutilizar solo aquellos que sean realmente estables.

En el próximo tema veremos usuarios, permisos y estados iniciales del sistema, un tema muy relacionado con la preparación de datos.