Generar información para una base de datos de pruebas



Cuando estamos desarrollando un sistema, usualmente tenemos una base de datos con solo “algunos” registros, esto sucede porque no tenemos tiempo para ingresar suficientes registros (o es muy aburrido). En este artículo te mostraré como llenar una base de datos con miles de registros de forma casi automática y prácticamente sin ningún esfuerzo.

¿Por que es necesario tener suficientes datos de prueba?

En muchas ocasiones sucede que alguien desarrolla un sistema y el cliente final lo prueba y todo es perfecto, el sistema se instala en producción y todo funciona bien, pero después de algunos meses o incluso semanas de uso, el sistema ya no funciona tan bien, los reportes se tardan cada vez más en generarse, los procesos que antes duraban segundos ahora duran minutos y todos comienzan a quejarse.

El problema es que cualquier sistema es rápido cuando hay poca información, para detectar bloques de código defectuosos se necesitan grandes cantidades de información. De esa forma puede detectarse en las pruebas los problemas de rendimiento que deben ser corregidos.

También es necesario tener suficiente información para poder generar muchos casos de pruebas.

Instalar Faker

NOTA: Antes de instalar cualquier cosa, debemos crear una carpeta de trabajo, y todos los comandos los vamos a instalar estando dentro de esa carpeta.

Faker es una librería de PHP que genera información aleatoria que puedes almacenar en una base de datos. Vamos a instalarla utilizando composer. El comando de composer para instalarlo es este:

composer require fzaninotto/faker

Instalar RedBeanPHP

RedBeanPHP es una librería ORM, que nos ayudará a almacenar la información generada por Faker, en nuestra base de datos. Para instalarla vamos a utilizar este comando de composer:

composer require gabordemooij/redbean

Crear un script de PHP para llenar la base de datos de pruebas

Ahora vamos a crear un archivo para generar la información y guardarla en la base de datos.

NOTA: También tienes que crear la base de datos, puedes hacer en phpMyAdmin o donde tú lo prefieras.

Ahora debes crear un archivo llamado index.php (o como desees) en la carpeta que creaste y colocar este código:

<?php
require './vendor/autoload.php'; //Carga las librerias que instalaste con composer
use RedBeanPHP\R as r; //Genera un alias para redbean

$faker = Faker\Factory::create(); //Crea un objeto para generar los datos aleatorios
//Conexión a la base de datos: cambia demobd al nombre de tu base de datos
//cambia root por el usuario de tu base datos
//cambia las comillas vacias, por la clave para la base de datos
r::setup('mysql:host=localhost;dbname=demobd', 'root', '');

for ($i=0; $i < 1000; $i++) {
  $post = r::dispense('post'); //Nombre de la tabla (post)
   //Ahora llenas cada campo de tu tabla, por ejemplo 'title', 'content', etc
  $post['title'] = $faker->text($maxNbChars = 85); //Texto de hasta 85 letras
  $post['content'] = $faker->text($maxNbChars = 1500);
  $post['status'] = $faker->randomElement($array = array ('borrador','publicado'));
  $post['fechaCreacion'] = $faker->dateTime($max = 'now', $timezone = null);

  r::store($post); //Guardar registro en base de datos
}
?>

Como ves es un código muy sencillo, he colocado comentarios para que sepas que hace cada línea de código que quizá no conozcas.

Si vas a generar grandes cantidades de registros, quizá prefieras ejecutar la página PHP desde la consola, por ejemplo si estás en la carpeta que creaste puedes ejecutar este código:

php index.php

Faker tiene funciones para generar textos, nombres, fechas, etc. Si quieres una lista completa de lo que puede hacer, puedes hacer clic en este enlace.

Si te gusto este artículo, puedes comentar o enviarme algún mensaje para decirme sobre que otros temas te gustaría que escriba.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *