Ú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.
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.
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
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
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.