Vai al contenuto
Test data toolkit

Generatore dati fake multi-locale

Genera dati realistici di test per popolare ambienti di sviluppo, seed di database e demo. Multi-locale (italiano, inglese, spagnolo, tedesco, francese) con dataset curati di nomi, cognomi e città. Schema custom: scegli i field e il loro tipo (nome, email, telefono, indirizzo, UUID, integer, float, boolean, date, lorem ipsum). Output esportabile in JSON, CSV e SQL INSERT in batch ottimizzato per seed database.

Schema

Come generare un dataset

  1. 1

    Scegli il locale

    Italiano per dataset di clienti italiani, inglese per dataset internazionali generici, spagnolo / tedesco / francese per mercati specifici. Il locale controlla nomi, cognomi, città, codici telefono. Email e UUID sono locale-independent.

  2. 2

    Definisci lo schema

    Aggiungi una riga per ogni field del dataset. Ogni field ha un nome (es. nome, email) e un tipo (dropdown). Schema tipico utenti: id (UUID) + nome (Nome completo) + email (Email) + creato_il (Data ISO 8601).

  3. 3

    Imposta righe e formato

    Numero di righe: 10-1000 tipicamente per testing locale, fino a 10000 per stress test. Formato: JSON per fixture API, CSV per import in Excel/database, SQL INSERT per direct seed di un DB MySQL/MariaDB/Postgres.

  4. 4

    Genera ed esporta

    Bottone 'Genera': l'output appare nella text-area, copiabile o scaricabile come file (.json, .csv, .sql). La generazione avviene direttamente nel browser, utile quando lo schema simula un dominio applicativo reale e non vuoi che la struttura del modello dati lasci la macchina.

Perché generare in locale

Lo schema dei dati come asset. Quando generi mock per simulare un dominio applicativo realistico (clienti, ordini, transazioni, dipendenti, prodotti), lo schema stesso è informazione di valore: rivela la struttura del tuo modello dati, le relazioni fra entità, i campi sensibili che gestisci. La generazione locale evita che questo schema transiti per servizi terzi che lo logghino insieme all'IP di chi lo richiede.

Multi-locale curato. 60+ nomi e 50+ cognomi italiani reali (Marco, Luca, Giulia, Rossi, Bianchi, Esposito), 30 città principali con CAP coerenti (Milano 20121, Roma 00100, Napoli 80100). Stesso ordine di curation per inglese, spagnolo, tedesco, francese. Sufficiente a generare dataset fino a circa 10.000 righe senza ripetizioni evidenti, con formattazioni telefono e indirizzi conformi alle convenzioni di ciascuna locale.

Output multi-target. JSON pretty-printed per fixture API e blob storage. CSV con header per import in Excel, Google Sheets o database (UTF-8, comma-separated, double-quote escaping). SQL INSERT con table name configurabile, in batch INSERT ... VALUES (...), (...) per seed efficienti, con limite a 1000 row per statement per evitare overflow del packet size lato server SQL.

Tipi di field disponibili

Nome / Cognome / Nome completo
Pesca random dai dataset locale-specific embedded. Italiano: 60+ nomi (Marco, Luca, Giulia...) e 50+ cognomi (Rossi, Bianchi, Esposito...). Idem per altre lingue.
Email
Pattern: [email protected]. Domain pescato da pool generico (gmail.com, libero.it, outlook.com, fastmail.com...). Realistico ma fake.
Telefono
Locale-specific: italiano genera +39 3XX XXXXXXX (mobile) o +39 0XX XXXXXXX (fisso). Inglese genera +1 (XXX) XXX-XXXX US-style. Eccetera.
Città / CAP / Paese / Indirizzo
Locale-specific. Italiano: 30 città con CAP coerenti (Milano 20121, Roma 00100, Napoli 80100...). Indirizzo concatena nome via fittizio + civico.
UUID v4
Generati via crypto.randomUUID() (browser nativo, RFC 4122 compliant).
Integer / Float / Boolean / Date
Random uniformi nei range configurati (intero 1-1000, float 0-100 con 2 decimali, boolean 50/50, date negli ultimi 5 anni).
ISO Date
Date in formato YYYY-MM-DDTHH:mm:ssZ, utile per timestamp di creazione/aggiornamento record.
Lorem ipsum
Frase (5-15 parole) o paragrafo (3-5 frasi). Da pool standard latino.

Glossario

Termini tecnici usati in questa pagina, spiegati in due righe.

Mock data #
Dati sintetici realistici, usati per popolare ambienti di sviluppo, demo, test automatici. Distinto da dati di produzione anonimizzati: i mock data sono generati ex novo senza riferimenti a entita' reali.
Locale #
Combinazione lingua + regione (es. it_IT, en_US, de_DE) che determina convenzioni culturali: nomi tipici, formati telefono/data/numero, indirizzi. Qui semplificato a 5 lingue base.
Faker #
Famiglia di librerie open source di generazione mock data, disponibili in Ruby, JavaScript (sia versione legacy sia fork attivamente mantenuto), Python e PHP. Sono lo standard de facto per fixture e seed in development; questo tool ne implementa il subset più usato per chi vuole un'output one-shot senza installare un toolchain dedicato.
Seed (database) #
File SQL con INSERT di dati base usato per popolare un database in stato iniziale. Distinto da migration (cambia schema) e fixture (per test). Il formato SQL INSERT generato qui è adatto a uso seed.
Batch INSERT #
INSERT SQL con value list multipla: INSERT INTO t VALUES (...), (...), (...). Molto più veloce di N INSERT separati per seed di volume. Limite pratico: max_allowed_packet (4MB default MySQL).
UUID v4 #
Identificatore univoco a 128bit (RFC 4122), variante 4 = random pseudo-randomico. Generato qui via crypto.randomUUID() nativo browser, qualità crittografica.

Domande frequenti

Quanti record posso generare al massimo?
Limite tecnico ~10000 righe (oltre il browser potrebbe rallentare per il render del CSV/SQL). Per dataset più grandi conviene generare in batch e concatenare lato server, oppure usare un generator CLI (faker, mimesis Python). Limite di sicurezza: 50000 righe per evitare freeze del browser.
I dati sono completamente unici?
No, random pesca dal dataset locale. Per 100 record italiani con 60 nomi unici, vedrai ripetizioni statistiche. Per dataset grandi con uniqueness garantita su un field (es. email univoche), aggiungi un suffix random o usa UUID al posto del nome.
L'output SQL funziona su MySQL e PostgreSQL?
Si', sintassi standard ISO compatibile con entrambi. Per Postgres con campi UUID nativi UUID serve aggiungere ::uuid cast manuale; il generator emette stringhe quoted ('xxx-xxx'). Date emesse in formato ISO compatibile con DATETIME (MySQL) e TIMESTAMP (Postgres).
Email generate sono valide?
Sintatticamente si' (RFC 5322 base subset). Il dominio è fake o pescato da pool generico (gmail.com...) ma l'address NON esiste davvero. Non inviare email a questi address (verranno rifiutate o sparite nel nulla).
Posso definire range custom per i numeri?
Non in questo tool, range fisso (intero 1-1000, float 0-100). Per range custom serve un generator programmatico (faker.js permette faker.number.int({min: 5, max: 50})). Workaround qui: genera, poi processa con sed/awk per shift dei range.
Il CSV è compatibile Excel?
Si', con caveat: l'encoding è UTF-8 senza BOM, alcune versioni di Excel su Windows lo aprono come ASCII (caratteri accentati rotti). Se necessario, apri Excel -> Importa CSV -> seleziona UTF-8 manualmente, oppure aggiungi BOM al file (3 byte EF BB BF all'inizio).
I dati sono deterministici (seedabili)?
No, ogni 'Genera' produce un dataset diverso. Per dataset riproducibile serve un seedable PRNG (qui usiamo Math.random() non seedable). Workaround: una volta generato un dataset che ti piace, copialo e mantienilo come fixture statica nel progetto.

Chi sviluppa questi strumenti?

Maurizio Fonte, consulente IT senior con oltre 20 anni di esperienza in PHP, Laravel, infrastrutture Linux, cybersecurity e integrazione AI/LLM in azienda. Backend di produzione, modernizzazione di codice legacy, audit di sicurezza, agenti AI e MCP server custom: il lavoro che sta dietro a questi strumenti.

Conosci Maurizio Fonte