Einen Fake JSON-Datensatz erstellen

erzeugt N JSON-Datensätze entsprechend einem einfachen Schema mithilfe von Faker (Locale fr_FR oder en_US)

Wofür dienen Mock-Daten?

Der Bedarf tritt in allen Phasen des Entwicklungszyklus auf. Für eine Demo benötigt man plausible Benutzer, kein abgeschnittenes Lorem Ipsum. Für Integrationstests möchte man einen reproduzierbaren, aber abwechslungsreichen Datensatz. Für eine vom DSGVO isolierte Pre-Production-Umgebung ersetzt man die echten Daten durch gefälschte Äquivalente. Für ein UI-Mockup müssen Tabellen mit glaubwürdigen Einträgen befüllt werden. Der Mock-Daten-Generator deckt diese Fälle ab, indem er JSON-Datensätze gemäß einem einfachen Schema erzeugt.

Das Schema-Format

Das Schema ist ein JSON-Objekt, in dem jeder Schlüssel der Name des erzeugten Feldes und der Wert ein Faker-Typ ist. Zum Beispiel:

{
  "name": "name",
  "email": "email",
  "age": "number 18-65",
  "active": "boolean",
  "registered_on": "date"
}

Das Tool generiert dann N Datensätze, die diesem Schema entsprechen, in der gewählten Locale (Französisch oder Englisch). Das Ergebnis ist ein JSON-Array, das direkt als Fixture, als Body einer API-Anfrage oder als Eingabe für einen Datenbank-Seeder verwendbar ist.

Unterstützte Typen

  • name: vollständiger Name ("Marie Dupont").
  • firstName / lastName: Vor- und Nachname getrennt.
  • email: gefälschte E-Mail-Adresse (verwendet safeEmail von Faker, das reservierte Domains example.com erzeugt, die nicht erreichbar sind).
  • phone: nach Locale formatierte Telefonnummer.
  • address: vollständige Postadresse.
  • number: zufällige ganze Zahl zwischen 0 und 1000 standardmäßig, oder number a-b für einen benutzerdefinierten Bereich.
  • boolean: zufälliges true oder false.
  • date: Datum im ISO-8601-Format (YYYY-MM-DD).
  • uuid: UUID v4.
  • text: kurzer Lorem-Ipsum-artiger Absatz (~120 Zeichen).
  • string: drei zufällige Wörter.
  • url: gefälschte URL (https://example.org/...).

Jeder nicht erkannte Typ wird unverändert ins Ergebnis übernommen. Das ist eine bewusste Entscheidung: Wenn Sie "role": "admin" ins Schema setzen, hat jeder Datensatz "role": "admin". Das ermöglicht es, konstante Werte und dynamische Felder zu mischen, ohne das Tool zu wechseln.

Locale-Wahl

Faker bietet Dutzende von Locales. Das Tool exponiert die beiden in einem französischsprachigen Kontext nützlichsten:

  • fr_FR: französische Namen, französische Adressen, Telefonnummern im französischen Format, Lorem-Ipsum-Sätze in ungefährem Französisch.
  • en_US: amerikanische Namen und Adressen, Telefonnummern im US-Format.

Für die Demonstrationskonsistenz auf Französisch wählen Sie fr_FR. Für einen Internationalisierungstest mischen Sie die beiden Ausführungen oder erhöhen Sie die Anzahl der Datensätze, um eine Vielfalt an Ursprüngen zu erhalten.

Anwendungsfälle

  • Test-Fixtures: 50 Benutzer erzeugen, sie in eine YAML-Datei von AliceBundle oder einen Seeder einfügen. Reproduzierbar, wenn man einen Faker-Seed fixiert, andernfalls abwechslungsreich.
  • UI-Mockups: eine React-/Vue-Tabelle mit plausiblen Daten füllen. Viel aussagekräftiger als eine leere Tabelle oder foo / bar / baz.
  • Lasttest: ein großes JSON-Payload für einen Durchsatztest erzeugen (k6, JMeter, Locust).
  • Kommerzielle Demos: eine Demo-Instanz mit Einträgen befüllen, die wie reale Fälle aussehen, aber keine sensiblen Informationen preisgeben.
  • Anonymisierung: einen Produktionsexport durch ein gefälschtes Äquivalent ersetzen, bevor er an einen Unterauftragnehmer weitergegeben oder in der Pre-Production verwendet wird.

Bewusste Grenzen

Um einfach zu bedienen zu bleiben, unterstützt das Tool keine verschachtelten Schemata (ein Feld, das selbst ein Objekt oder ein Array von Objekten wäre). Für solche Bedürfnisse ist es besser, ein dediziertes Faker-Skript zu schreiben oder mehrere aufeinanderfolgende Aufrufe zu komponieren. Die bewusste Grenze vermeidet auch absurde Kombinationen ("items": "name" mit zufälliger Kardinalität), die das Tool weniger vorhersehbar machen würden.

Die Anzahl der Datensätze ist auf 500 begrenzt. Darüber hinaus erwartet man von einer Testumgebung, dass sie ihre Fixtures über dedizierten Code generiert (Faker in CLI, Foundry, factory_bot usw.). Das Web-Tool ist bis zu einigen hundert Datensätzen nützlich; darüber hinaus begrenzen Speicher und Antwortzeit die Erfahrung.

Reproduzierbarkeit und Sicherheit

Die Werte werden mit einem nicht-deterministischen PRNG erzeugt: Jede Ausführung erzeugt unterschiedliche Daten. Für Tests, die reproduzierbar sein müssen (CI), erfassen Sie die Ausgabe einmal und committen Sie sie. Für wirklich sensible Daten (Produktionsanonymisierung) bedenken Sie, dass die serverseitige Generierung auf öffentlicher Seite nicht der richtige Kanal ist: Bevorzugen Sie ein lokales Skript, das niemals Ihren Rechner verlässt.

Häufig gestellte Fragen

Sind die generierten E-Mails gültig?

Das Format ist gültig (RFC 5322), aber die Domain ist example.com oder eine von der IANA reservierte Entsprechung. Keine dieser E-Mails kann eine Nachricht empfangen; das ist bewusst so, um versehentlichen Spam auf echte Adressen zu vermeiden.

Kann ich denselben Datensatz mehrmals erhalten?

Nicht über die Weboberfläche: Das Tool fixiert keinen Seed. Für strikte Reproduzierbarkeit skripten Sie die Generierung lokal mit Faker und einem festen Seed ($faker->seed(1234);).

Wie erzeugt man ein verschachteltes Objekt?

Das Tool unterstützt nur ein flaches Schema. Für Verschachtelungen verarbeiten Sie die Ausgabe mit einem Skript nach oder schreiben Sie direkt den entsprechenden Faker-Code.

Warum liegen alle meine Zahlen zwischen 0 und 1000?

Das ist der Standardbereich. Geben Sie einen Bereich an: "age": "number 18-65", "price": "number 1-9999" usw.

Welche Verbindungen bestehen zu anderen Tools der Website?

Für UUIDs in Mengen siehe den UUID-Generator. Für Passwörter den Passwortgenerator. Für Text den Textgenerator. Der Mock-Daten-Generator ist das übergreifende Tool, das mehrere dieser Generierungen kombiniert.

Beispielanfrage

curl -X POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"schema":"{\"name\": \"name\", \"email\": \"email\", \"age\": \"number 18-65\"}","count":5,"locale":"fr_FR"}'

Eingabeschema

Feld Typ Erforderlich Standard
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Endpunkte

  • GET https://cdrn.fr/api/v1/tools - listet alle verfügbaren Tools auf
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - liefert das Schema dieses Tools
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - führt dieses Tool mit einem JSON-Payload aus