Pruebas y QA · 6 min de lectura

Datos de prueba sintéticos en 2026: con semilla, seguros y reproducibles

Datos de prueba sintéticos bien hechos: generación con semilla, rangos reservados, integridad referencial, volumen y los identificadores que un generador debería negarse a inventar.

Por Charlie Simmon ·

Los datos de prueba sintéticos son datos fabricados en lugar de recopilados. No describen a nadie, se pueden regenerar a demanda y nunca hay que enmascararlos, purgarlos ni reclamarlos por vía judicial. Para los equipos que prueban formularios de dirección, flujos de pago o canalizaciones de importación, es el único tipo de datos que se puede usar libremente en CI, capturas de pantalla y demostraciones.

El problema es que los datos sintéticos solo son útiles cuando son a la vez verosímiles y seguros. Los datos inverosímiles dejan pasar los errores. Los datos inseguros los crean. Esta guía cubre el camino intermedio: generación con semilla para la reproducibilidad, rangos de valores reservados que no pueden colisionar con la realidad, integridad referencial entre entidades y los identificadores concretos que un generador debería negarse a producir.

Qué cuenta realmente como datos sintéticos

Los datos sintéticos se generan a partir de reglas, no se muestrean de personas. Un nombre compuesto a partir de una lista de nombres, una dirección compuesta a partir de un fixture de país, un número de teléfono de un bloque reservado, un correo electrónico en un dominio reservado: cada uno está fabricado y ninguno se refiere a un sujeto real. La reproducibilidad es lo que los separa del ruido aleatorio, porque una salida sin semilla no se puede revisar, comparar ni reproducir.

Los datos de producción anonimizados no son sintéticos. Enmascarar una fila real deja la misma distribución y a menudo el mismo riesgo de reidentificación, y una columna EMAIL enmascarada que conserva el dominio sigue filtrando el empleador. Si una prueba necesita datos con forma de producción, esa es una conversación aparte sobre agregación y acceso, no algo que un generador pueda proporcionar honestamente.

  • Generados a partir de reglas, no muestreados de personas
  • Reproducibles a partir de una semilla
  • Revisables: un diff te dice qué cambió
  • Nunca derivados de una fila de producción

Generación con semilla frente a archivos de fixture versionados

Un archivo de fixture versionado tiene una ventaja: es fácil de inspeccionar. Tiene varios problemas. Se desvía, porque nadie lo actualiza cuando cambia el esquema. Hincha el repositorio. Se copia entre proyectos hasta que nadie sabe qué versión es la actual. Y poco a poco se convierte en los únicos datos contra los que alguien prueba, así que la suite cubre exactamente los valores que alguien escribió en 2021.

La generación con semilla mantiene la entrada diminuta y la salida grande. La semilla más la versión del generador son el fixture. Regenera a demanda, guarda solo el primer y el último registro para revisión, y trata cualquier cambio en la salida del generador como un cambio deliberado que requiere una nueva línea base. El único requisito es que el generador esté fijado, porque un generador actualizado con un algoritmo cambiado es un conjunto de datos nuevo incluso con la misma semilla.

EnfoqueCoste en el repositorioReproducibleRiesgo de desviación
Fixtures JSON versionadosAltoSí, pero congeladosAumenta con la antigüedad
Generador con semilla en tiempo de pruebaBajoSí, con una versión fijadaBajo
Datos aleatorios sin semillaBajoNoAlto, e inestable
Volcado de producción enmascaradoAltoNoAlto, más riesgo de privacidad

Rangos reservados que no pueden colisionar con la realidad

Varios estándares reservan valores para documentación y pruebas. Usarlos no es una preferencia de estilo; es la diferencia entre un fixture garantizado como inofensivo y uno que podría pertenecer a alguien. Los bloques reservados son estables, están ampliamente documentados y la mayoría de los validadores los aceptan como sintácticamente normales.

Para el correo electrónico, usa un dominio bajo .test, como example.test, que está reservado y no se puede registrar. Para los números de teléfono del Plan de Numeración de América del Norte, el bloque 555-0100 a 555-0199 está reservado para uso ficticio. Para las direcciones IP, los rangos de documentación son 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24 en IPv4 y 2001:db8::/32 en IPv6. Para las direcciones MAC, el rango de documentación es 00-00-5E-00-53-00 a 00-00-5E-00-53-FF, y las direcciones administradas localmente con el bit U/L activado también son seguras para fixtures.

Tipo de valorReservado para pruebasAutoridad
Dominio de correo electrónicoexample.test, example.com, example.orgRFC 2606 y RFC 6761
Dominio web.test, .invalid, .localhostRFC 2606
Teléfono de EE. UU. y CanadáNANP 555-0100 a 555-0199Rango de ficción NANP
Documentación IPv4192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24RFC 5737
Documentación IPv62001:db8::/32RFC 3849
Documentación MAC00-00-5E-00-53-xxRFC 7042
MAC administrada localmentePrimer octeto 0x02, bit I/G desactivadoBit U/L de IEEE 802

Integridad referencial entre entidades generadas

La mayoría de los sistemas necesitan más de una entidad. Un pedido tiene un cliente, una dirección de envío y una dirección de facturación, y las tres deben concordar de formas que el esquema impone. Si la dirección de facturación está en Estados Unidos y la de envío en Japón, el cálculo de impuestos y la selección de transportista tienen que aceptar esa combinación, o la prueba falla por un motivo ajeno al comportamiento bajo prueba.

Genera relaciones, no filas. Deriva semillas hijas de la semilla padre para que el pedido y sus direcciones sean reproducibles como una unidad. Decide deliberadamente qué campos deben concordar: el país entre envío y facturación suele ser el mismo, el código postal debe coincidir con la ciudad del fixture, la moneda debe coincidir con el país. Codifica esas restricciones en la factoría para que un fixture roto falle en el momento de la generación en lugar de en una aserción tres capas más abajo.

  • Deriva semillas hijas de la semilla padre, no del reloj
  • Mantén el país coherente entre facturación, envío e impuestos
  • Mantén el código postal coherente con el fixture de ciudad
  • Mantén la moneda coherente con el país
  • Falla en el momento de la generación cuando se viola una restricción

Lo que este sitio se niega a generar

El sitio no genera números de Seguridad Social, números de tarjetas de pago, valores IMEI o IMSI, direcciones de dispositivos Bluetooth ni números de serie. Cada negativa tiene un motivo. Los SSN son identificadores legalmente restringidos en Estados Unidos. Los números de tarjeta llevan una suma de verificación Luhn, así que uno verosímil puede pasar un validador ingenuo y luego pegarse en un ticket de soporte. Los IMEI tienen un dígito de control y un registro de asignación. Las direcciones Bluetooth comparten el formato MAC pero no llevan significado de fabricante, y una generada invita exactamente a la confusión que las herramientas MAC están diseñadas para evitar.

El mismo razonamiento se aplica a cualquier identificador con una suma de verificación o un registro. Si una prueba realmente necesita uno, usa los valores de prueba publicados oficialmente por el procesador o la autoridad emisora, no un generador. Eso mantiene el valor obviamente falso para cualquiera que reconozca el patrón de prueba, y mantiene tu captura de pantalla fuera de una revisión de cumplimiento.

IdentificadorGenerado aquíAlternativa correcta
Número de Seguridad SocialNoNunca uses un SSN real o realista
Número de tarjeta de pagoNoTarjetas de prueba del procesador para el sandbox
IMEI o IMSINoValores de prueba del fabricante, si existen
Dirección BluetoothNoNo se necesita para pruebas de formularios de dirección
Número de serie del dispositivoNoUn id de fixture opaco que tú controles
Dirección de correo electrónicoSí, solo example.testDominio seguro y no resolutivo
Número de teléfonoSí, NANP 555-0100 a 555-0199Rango de ficción reservado

Volumen, determinismo y rendimiento

Generar cien registros en tiempo de prueba es barato. Generar diez millones no lo es, y hacerlo dentro de la configuración de una prueba dominará el tiempo de ejecución. Precalcula grandes volúmenes una vez en un almacén aislado, con la semilla registrada en el manifiesto, y mantén el generador fuera de la ruta crítica. Para volúmenes medianos, genera en un solo lote en lugar de fila por fila, porque la configuración por fila suele ser el coste real.

El determinismo también tiene una dimensión de rendimiento. Los trabajadores en paralelo no deben compartir un único generador secuencial, porque el entrelazado cambia qué trabajador recibe qué registro. Da a cada trabajador su propia semilla derivada de la semilla de ejecución y del índice del trabajador, para que el conjunto de datos sea estable independientemente de la planificación. Eso también hace que un fallo en el trabajador tres sea reproducible sin volver a ejecutar toda la suite.

  • Volúmenes pequeños: genera en línea, con semilla
  • Volúmenes grandes: precalcula en un almacén aislado con un manifiesto
  • Trabajadores en paralelo: deriva una semilla por índice de trabajador
  • Nunca compartas una única instancia de generador entre hilos
  • Registra la versión del generador junto con la semilla

Mantener los datos sintéticos fuera de las canalizaciones reales

El peligro de los buenos datos sintéticos es que parecen reales. Pon un marcador en cada registro generado: una marca de fixture, un inquilino dedicado, un correo electrónico en example.test, un teléfono en el rango 555-01xx. Bloquea esos registros para que no envíen correo, capturen pagos ni entren en analítica. Un cliente de demostración que llega a un CRM de producción es un incidente de soporte esperando a que un comercial lo note.

También mantén los datos generados fuera de los registros que se conservan por cumplimiento y de las capturas de pantalla que se van a publicar. Aunque los valores no describen a nadie, un lector no puede saberlo a partir de la imagen, y explicarlo después es más caro que etiquetarlo ahora. Si una captura de pantalla debe mostrar una dirección realista, usa un valor del rango de documentación y añade un pie de foto visible de "datos de muestra".

  • Etiqueta cada fila generada con una marca de fixture o inquilino
  • Bloquea los inquilinos de fixture para correo, pagos y analítica
  • Usa example.test y 555-01xx, nunca un dominio real verosímil
  • Pon pie de foto en las capturas que muestren valores generados
  • Purga los fixtures del staging compartido de forma programada

Una lista de verificación previa al uso

Antes de usar un conjunto de datos generado en un entorno compartido, hay que responder cuatro preguntas. ¿De dónde salió y se puede regenerar? ¿Está cada valor en un rango reservado o administrado localmente? ¿Satisface las restricciones del esquema y las reglas referenciales? ¿Y está etiquetado de modo que un lector humano no pueda confundirlo con un cliente?

Si alguna respuesta es no, el conjunto de datos no está listo. Esto es deliberadamente estricto, porque el coste de una respuesta incorrecta es asimétrico: regenerar lleva minutos, mientras que un cliente sintético en un informe de ingresos puede distorsionar decisiones durante un trimestre. Ejecuta la lista de verificación como parte de la revisión, no como un comentario en una wiki.

PreguntaCondición de aprobaciónEvidencia
OrigenSemilla y versión del generador registradasArchivo de manifiesto
SeguridadTodos los valores en rangos reservados o localesValidador ejecutado sobre el conjunto de datos
IntegridadEsquema y reglas entre entidades satisfechosPruebas de factoría en verde
EtiquetadoMarca de fixture en cada filaLa consulta devuelve cero filas sin etiquetar

Preguntas

¿Es seguro versionar datos de prueba sintéticos?+
Sí, cuando cada valor es sintético y reservado, por ejemplo correos example.test y teléfonos NANP 555-01xx. Es preferible regenerar a partir de una semilla que versionar grandes conjuntos de datos.
¿Por qué el generador se niega a producir valores de tarjeta o SSN?+
Esos identificadores están regulados o llevan suma de verificación, y un falso realista puede pasar una validación ingenua y acabar en una captura de pantalla o un ticket. Usa en su lugar valores de prueba oficiales del procesador o la autoridad.
¿Cómo mantengo reproducibles las pruebas en paralelo?+
Deriva una semilla por trabajador a partir de la semilla de ejecución y el índice del trabajador. Un único generador compartido produce una secuencia distinta según la planificación.
¿Los datos de producción enmascarados son lo mismo?+
No. El enmascaramiento conserva la distribución original y a menudo el riesgo de reidentificación. Los datos sintéticos se generan a partir de reglas y no describen a ningún sujeto real.
¿Cuántos países cubren los datos de direcciones sintéticas?+
38 países con cinco fixtures de ciudad cada uno. Hong Kong y los Emiratos Árabes Unidos no devuelven código postal, porque ninguno tiene.

Los ejemplos son sintéticos. No utilices una dirección generada para verificaciones de identidad, registro de cuentas ni entregas.

Estándares de referencia

Leer a continuación

Todas las guías