Últimamente hemos estado desarrollando nuevas aplicaciones con ILE RPG para IBM para nuestros clientes. En la mayoría de los casos, estas aplicaciones de RPG proporcionan el back-end de un front-end de Mobile RPG para uso en dispositivos móviles de Apple y Android. En casi todos los casos, estamos creando nuevas aplicaciones que necesitan nuevos archivos de datos (o al menos algunos archivos nuevos).

Frente a la necesidad de completar rápidamente varios archivos de prueba para un proyecto el otro día, hicimos lo que los programadores inteligentes hacen; empezamos a buscar en Google. Una consulta "generar datos de prueba" nos introdujo rápidamente en un gran sitio generador de pruebas en mockaroo.com. Hay un plan de pago disponible para generar grandes conjuntos de datos de prueba, pero encontramos que el plan gratis hizo todo lo que necesitamos. El plan gratis permite generar hasta 1000 filas de datos de prueba por esquema. También hay planes anuales de $ 50 y $ 500. El plan gratis también está limitado en el  rendimiento, pero no encontramos que eso sea un problema en absoluto.

Los datos que Mockaroo crea son muy buenos para el desarrollo de nuevas aplicaciones. Más allá de escribir el código, hacer una buena representación de los datos contribuye a una presentación mucho mejor de la aplicación. Además, con SQL Mockaroo para rellenar datos de prueba, es fácil escribir secuencias de comandos SQL que le permiten restablecer fácilmente los datos de prueba a un estado conocido con el fin de hacer pruebas de integración.

Este artículo puede parecer un poco centrado en SQL, pero los datos generados funcionan muy bien en RPG, ya sea con SQL incorporado o con acceso a nivel de registro.

Considerando este fichero con formato definido en la DDS:

A          R RCUSTOMER                                                   
	A            CMCUSTNO       9P 0                              
	A            CMNAME        40                                  
	A            CMADDR        35                        
	A            CMCITY        30                                   
	A            CMSTATE        2                                  
	A            CMPOSTCODE    10                          
	A            CMACTIVE       1                           
	A            CMFAX         10P 0                         
	A            CMPHONE       20 
	A            CMEMAIL       80                       
	A         K CMCUSTNO 

O, si se prefiere, como hacemos nosotros, definido con SQL

CREATE TABLE doctor (                           
	    CMCUSTNO    Dec(9,0),
	    CMNAME      Char(40),
	    CMADDR      Char(35),
	    CMCITY      Char(30),
	    CMSTATE     Char(2),
	    CMPOSTCODE  Char(10),
	    CMACTIVE    Char(1),
	    CMFAX       Dec(10,0),
	    CMPHONE     Char(20),
	    CMEMAIL     Char(80), 
	                                                        
	    Primary Key(CMCUSTNO)                                   
	);

Necesitábamos rellenar este archivo DOCTOR con 50 o más filas con datos de prueba, así como crear varias otras tablas relacionadas. En la mayoría de los casos, estas tablas de prueba necesitaban relaciones de trabajo definidas (es decir, la tabla CLINIC necesitaba filas con una clave externa que enlazaba una clínica con un DOCTOR).

Usando Mockaroo para crear datos de test

Mockaroo permite crear rápidamente un esquema físico. Para cada columna se especifica uno de los 141 tipos de valores de datos de Mockaroo. Por ejemplo, el tipo de "Nombre Completo" genera nombres aleatorios y el tipo "SSN" genera Números aleatorios de Seguridad Social de los Estados Unidos. La siguiente captura de pantalla muestra el panel de ayuda del tipo de datos de Mockaroo.

Mockaroo types

Nuestra tabla DOCTOR se creo con tipos específicos como muestra la imagen 1a:

Imagen 1a. La tabla DOCTOR definida con tipos de  Mockaroo

Mockaroo puede hacer una previsualización de los datos creados. La previsualización de la imagen 1b corresponde a la tabla DOCTOR que se muestra en la imagen 1a.

Imagen 1b. Panel de previsualizacion de Mockaroo

¡Que cantidad de tipos!

Con 141 tipos, Mockaroo cubre un amplio espectro de clases de datos que es probable que necesite. Más allá de la ciudad, estado, cp, tipos de país, etc. tiene una gran cantidad de tipos de especialidad para salud, ubicación, TI y muchos otros. Más allá de sus tipos definidos, puede personalizar tipos Mockaroo con fórmulas, expresiones regulares e incluso código Ruby. Puedes ver a Mockaroo en acción con el siguiente enlace.

Vea nuestro ejemplo con DOCTOR online.

La mayoría de los tipos de datos en el ejemplo DOCTOR son auto-explicativos, pero el campo CMActive merece una atención especial. Ese campo es un valor de un carácter que indica si el médico está activo. Los valores válidos son 'O', 'C' y 'X', para Abrir, Cerrado y Suspendido. El desafío con un tipo de datos como este es que, para hacernos eco del mundo real, los datos deben incluir principalmente registros 'O', con sólo unos pocos registros 'C' y 'X'. Mockaroo guarda algunos trucos en la manga para ayudar a la asignación directa de datos "al azar", pero en el caso del código CMActive, usamos una lista personalizada con un valor de O, O, O, O, O, C, O, O, O, O, O, O, O, O, O, X ', asignados secuencialmente. Esto significa que para cada cinco filas 'O' hay una fila 'C', y para cada diez filas 'O' hay una fila 'X'.

Si necesita más sofisticación en la distribución de datos, la función "Escenarios" de Mockaroo le permite configurar los datos de prueba de acuerdo con las distribuciones numéricas basadas en otras columnas de su esquema. Si necesita garantizar la integridad de las claves extranjeras, la respuesta simple se encuentra  en un práctico video de cuatro minutos. También hay otros videos disponibles.

Mockaroo tiene una facilidad de importación para arrancar el esquema de construcción, pero a diferencia del resto de las características de Mocharoo, no está muy bien implementado y no proporciona mucha ayuda. Requiere un formato específico de Json y prácticamente necesita más esfuerzo de lo que vale la pena. Dicho esto, si necesitábamos crear datos de prueba para uno de esos formatos de grabación de monstruos similares a JD Edwards, probablemente usaríamos la facilidad de importación de Mockaroo con un pequeño esfuerzo de Python.

Generando los datos

Mockaroo puede generar una gran variedad de salidas de datos de prueba, incluyendo CSV, Json, Excel, XML y SQL. El SQL generado funciona muy bien con el IBM i. Los saltos de línea se agregan para publicaciones,  de otro modo, el SQL siguiente es lo que Mockaroo genera para una sola fila de datos de prueba:
 
insert into Doctor 
	     (CMCustNo, 
	      CMName, 
	      CMAddr, 
	      CMCity, 
	      CMState, 
	      CMPostCode, 
	      CMActive, 
	      CMFax, 
	      CMPhone, 
	      CMEmail) 
	     values 
	     (1, 
	      'Ellen Dorbin', 
	      '0308 John Wall Lane', 
	      'Pittsburgh', 
	      'PA', 
	      '15220', 
	      'O', 
	      '4127569156', 
	      '706-479-2186', 
	      'edorbin0@github.com');

Imagen 2. SQL usando la declaración generada con Mockaroo

La salida SQL se conecta directamente a la IBM i's Navigator SQL console y funciona muy bien. Desafortunadamente, a excepción de los formatos de registro más pequeños, la línea es demasiado larga para usarse en el panel de pantalla verde de IBM i STRSQL sin modificaciones. (Para usarlo allí es necesario poner el SQL generado en un editor de texto y reemplazar todas las comas con una coma y un retorno de carro).
 
Después de ejecutar las instrucciones SQL proporcionadas, puede ver los datos en el panel del Navigator SQL:

o también en pantalla verde:

Si está desarrollando nuevas aplicacione de un vistazo a Mockaroo. Nosotros lo hacemos muy a menudo para el desarrollo de aplicaciones para el IBM i.