mysqlqa enviromentstest data

5 min read

Cómo generar datos de prueba realistas en MySQL para entornos de QA

Aprende a generar datos de prueba sintéticos y realistas en entornos MySQL. Descubre las herramientas y métodos clave para asegurar la calidad de tu software.

author-image

Sara Codarlupo

Marketing Specialist @Gigantics

Garantizar la calidad del software es un desafío que exige la máxima seguridad de la información sensible. Al manejar datos de prueba en bases de datos como MySQL, este proceso se enmarca dentro de la disciplina de Test Data Management, donde es esencial que los datos no contengan información personal identificable (PII), cumpliendo estrictamente con las normativas de protección de datos vigentes.



Este artículo es una guía técnica y práctica que se enfoca en el uso de scripts de MySQL para generar grandes volúmenes de datos de prueba sintéticos y realistas. Le mostraremos el método exacto, paso a paso, para simular escenarios de prueba en QA, manteniendo la confidencialidad y seguridad de la información sensible a lo largo del proceso.



¿Por qué es importante generar datos de prueba realistas en MySQL?



Los entornos de QA y testing requieren bases de datos que simulen las condiciones de producción, protegiendo siempre la privacidad de los usuarios. La gestión de este riesgo es un pilar fundamental de la Seguridad de Datos. Los datos reales, si no se gestionan adecuadamente, ponen en riesgo la seguridad de los sistemas. Por ello, normativas como el GDPR exigen un tratamiento de datos sujeto a estrictos protocolos de gestión de riesgos.



La generación de datos de prueba realistas en MySQL es la solución. Esto permite a los equipos de QA y DBAs ejecutar pruebas, mientras que facilita a los CIOs y ejecutivos el cumplimiento normativo sin comprometer la privacidad ni infringir la ley, asegurando que los resultados sean lo más fiables posible.




Generación de datos realistas con MySQL



Paso 1: Creación de la base de datos y la tabla de prueba en MySQL



Para comenzar, crearemos el esquema de la tabla test_users en MySQL. Esta estructura define los campos que contienen atributos PII y, en este tutorial, se insertarán datos sintéticos para su uso seguro en pruebas.



-- Define el esquema de la tabla 'test_users' que contendrá atributos PII (como nombre y email).
CREATE TABLE test_users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(150),
    phone VARCHAR(20),
    address VARCHAR(255),
    city VARCHAR(100),
    birthdate DATE
);


Paso 2: Generar datos sintéticos y aleatorios



A continuación, usaremos un procedimiento almacenado en MySQL para generar datos aleatorios que simulan la realidad. Este script genera datos sintéticos usando funciones integradas de MySQL como RAND(), CONCAT() y FLOOR().



DELIMITER $$

-- Crear procedimiento para generar datos de prueba sintéticos
CREATE PROCEDURE generate_test_data(IN num_rows INT)
BEGIN
  DECLARE i INT DEFAULT 0;

  WHILE i < num_rows DO
      -- Insertar datos aleatorios en la tabla
      INSERT INTO test_users (name, email, phone, address, city, birthdate)
      VALUES (
          CONCAT('User_', FLOOR(1 + (RAND() * 9999))), -- Genera un nombre de usuario ficticio.
          CONCAT('user', FLOOR(1 + (RAND() * 9999)), '@example.com'), -- Genera un email ficticio.
          CONCAT('+34 ', FLOOR(600000000 + (RAND() * 100000000))), -- Genera un número de teléfono aleatorio.
          CONCAT(FLOOR(1 + (RAND() * 999)), ' Fake Street'), -- Genera una dirección ficticia.
          CONCAT('City_', FLOOR(1 + (RAND() * 100))), -- Genera una ciudad aleatoria.
          DATE_SUB(CURDATE(), INTERVAL FLOOR(18 + (RAND() * 62)) YEAR) -- Asigna una fecha de nacimiento aleatoria (entre 18 y 80 años).
      );
      SET i = i + 1;
  END WHILE;
END$$

-- Restaurar delimitador
DELIMITER ;


Paso 3: Ejecutar el procedimiento para generar datos



Una vez que el procedimiento esté creado, podemos generar la cantidad de datos que necesitamos. Por ejemplo, si queremos generar 1,000 filas de datos de prueba, simplemente ejecutamos el siguiente comando:


CALL generate_test_data(1000);


Esto insertará 1,000 registros de datos ficticios en la tabla test_users, lo que permitirá a los equipos de QA realizar pruebas sin comprometer la seguridad de los datos reales.



Paso 4: Verificar los datos generados



Para verificar que los datos se han insertado correctamente, podemos realizar una simple consulta SQL:


SELECT * FROM test_users LIMIT 10;

Esto nos mostrará los primeros 10 registros generados, los cuales tendrán nombres, correos electrónicos, teléfonos y otros detalles realistas pero no sensibles.




Enmascaramiento y anonimización de datos en MySQL



Aunque la generación de datos sintéticos es una estrategia eficaz, en muchos casos los equipos de QA también trabajan con subconjuntos de datos reales extraídos de producción. En estos escenarios, aplicar técnicas de enmascaramiento de datos y anonimización es fundamental para proteger la privacidad, reducir riesgos y cumplir con normativas como el RGPD (GDPR) y la directiva NIS2.



El enmascaramiento de datos consiste en transformar elementos sensibles (como nombres, emails o teléfonos) en valores ficticios pero coherentes, que mantienen la estructura y formato original, pero impiden la identificación de las personas.



La anonimización busca eliminar de forma irreversible cualquier vínculo entre los datos y la persona a la que pertenecen, garantizando que no sea posible reconstruir la identidad a partir de los datos anonimizados.



A continuación se muestran algunos ejemplos básicos que pueden aplicarse directamente en MySQL:



Generalización



Reducir el nivel de detalle de ciertos datos es una técnica sencilla para disminuir su sensibilidad. Por ejemplo, almacenar solo el año de nacimiento:


UPDATE test_users
SET birthdate = DATE_FORMAT(birthdate, '%Y-01-01');


Supresión



En algunos casos, conviene eliminar directamente los campos que no sean necesarios para las pruebas:


UPDATE test_users
SET address = NULL;


Pseudonimización



Otra opción es sustituir identificadores directos, como nombres, por seudónimos aleatorios:


UPDATE test_users
SET name = CONCAT('User_', FLOOR(1 + (RAND() * 9999)));



Del Script Manual a la Automatización



¿Buscas automatización real? La generación de datos de prueba con scripts nativos funciona, pero gestionar escenarios complejos (como mantener la integridad referencial entre tablas o la automatización continua) requiere una solución diseñada para entornos de producción.


El Costo de Generación Manual Frena su Desarrollo.

La gestión de datos de prueba con scripts consume recursos de DBAs e Ingenieros. Gigantics elimina la ineficiencia operativa, garantiza la Integridad Referencial en entornos complejos y minimiza el riesgo de incumplimiento normativo.

Solicite una Demo Técnica

Solución API-first • Cumplimiento Normativo (GDPR/NIS2) • Integración CI/CD