Eine Node.js Bibliothek voller Fake-Datensätze

Fake-Testdaten generieren mit faker.js
Keine Kommentare

Wo bekommt man bloß Testdaten für die eigene Applikation her? Die Produktionsdaten sind tabu, und unkenntlich machen wäre zu aufwendig. Was also tun? Für dieses Problem gibt es eine elegante Lösung in Form der Bibliothek faker.js.

Mithilfe des Tools faker.js gelangen Sie an Testdaten für Ihre Applikation. Sie können dieses Werkzeug nutzen, um Testdaten wie personenbezogene Daten zu generieren und zwar nicht nur einen einzelnen Datensatz, sondern richtig viele Daten oder wie die Entwickler von faker.js es auf ihrer GitHub-Site ausdrücken: „massive amounts of fake data“.

Installation und Verwendung

faker.js ist in der Anwendung vielseitig. Sie können das Werkzeug sowohl client- als auch serverseitig nutzen und es entweder selbst installieren oder den gehosteten Service unter http://faker.hook.io nutzen. Die Installation erfolgt über NPM mit dem Kommando npm install faker. Anschließend können Sie das Paket mit const faker = require(‚faker‘); beziehungsweise import faker from ‚faker‘; einbinden. Die gehostete Variante arbeitet mit Queryparametern; so können Sie einen Fake-Namen mit dem Aufruf von http://faker.hook.io?property=name.findName nutzen. Als Resultat erhalten Sie eine Kombination aus einem zufällig generierten Vor- und Nachnamen.

API

Einer der wichtigsten Bereiche, für die faker.js Daten generieren kann, sind persönliche Daten wie Namen oder Adressdaten. Aber hier endet der Funktionsumfang noch nicht. Mit faker.js können Sie außerdem Datumsangaben, Farben oder Dateinamen erzeugen. Um die Schnittstelle übersichtlich zu halten, werden die verschiedenen Methoden in Kategorien wie address, company, finance oder internet unterteilt. Ergänzt werden diese Methoden um Kombinationen einzelner Methoden wie helpers.userCard, die die Informationen über den Benutzer wie den Namen und Benutzernamen, die Privat- und Firmenadresse sowie Kontaktdaten wie E-Mail, Telefon und Website erzeugt. Bei der Generierung solcher Kombinationen sollten Sie beachten, dass die Informationen komplett zufällig erzeugt sind und der Benutzername beispielsweise nicht vom Namen des Benutzers abhängt.

International PHP Conference

Migrating to PHP 7

by Stefan Priebsch (thePHP.cc)

A practical introduction to Kubernetes

by Robert Lemke (Flownative GmbH)

Egal, ob Sie einen einzelnen Datensatz oder ein Kombinationsobjekt erzeugen, Sie müssen stets eine faker.js-Methode aufrufen. In Listing 1 sehen Sie den Quellcode, mit dessen Hilfe Sie einen zufälligen Namen erzeugen und diesen auf der Konsole ausgeben können.

import faker from 'faker';

console.log(faker.name.findName());

An erster Stelle steht immer das faker.js-Objekt selbst, anschließend folgt die Kategorie, in diesem Beispiel name, und schließlich die eigentliche Methode wie findName. Um mehrere Informationen für einen Benutzer zu erzeugen und so beispielsweise eine Datenbank zu befüllen, können Sie diese Funktionen in einer Schleife aufrufen. In Listing 2 finden Sie den Quellcode einer einfachen User-Klasse sowie eine Schleife, die zehn Datensätze erzeugt.

import faker from 'faker';

class User {
  constructor(name, birthdate, city) {
    this.name = name;
    this.birthdate = birthdate;
    this.city = city;
  }

  toString() {
    return `${this.name} (${this.birthdate}) - ${this.city}`;
  }
}

for (let i = 0; i < 10; i++) {
  console.log(new User(faker.name.findName(), faker.date.past(), faker.address.city()).toString());
}

Für die Erzeugung von Strings, die eine Kombination aus bestimmten Angaben darstellen, liefert Faker eine zusätzliche Funktion aus.

Generatormethode

Mit der faker.fake-Methode können Sie in einer Zeichenkette angeben, welche Kategorie und welche Methode Sie kombinieren möchten. Gerade zur Erzeugung von beispielsweise einer Adresse kann dieses Feature sehr praktisch sein. Zur Kombination der einzelnen Bestandteile setzen Sie die aus Mustache bekannten doppelten geschweiften Klammern ein. Bei der Angabe, welche Information Sie verwenden möchten, nutzen Sie lediglich die Kategorie und den Namen der Methode. Listing 3 zeigt das entsprechende Beispiel.

import faker from 'faker';

console.log(faker.fake('{{address.streetName}} {{address.zipCode}} {{address.city}}'));

Einer der größten Nachteile dieser Variante ist, dass die Autocompletion der meisten IDEs in diesem Fall nicht funktioniert und Sie die Kategorie und den Methodennamen komplett selbst schreiben müssen.

Seed

Alle Informationen, die Faker erzeugt, sind zufällig. Das macht das Nachvollziehen von Fehlern für bestimmte Informationen sehr aufwendig. Aus diesem Grund können Sie für Faker einen Seed-Wert setzen, der die Basis für die Zufallsgenerierung setzt. Mit dem gleichen Seed-Wert erzeugt Faker auch die gleichen Daten, wie Sie dem folgenden Beispiel im Listing 4 entnehmen können.

import faker from 'faker';

faker.seed(42);
const name = faker.name.findName();

faker.seed(42);
const name2 = faker.name.findName();

console.log(name === name2);

Lokalisierung

faker.js ist standardmäßig englischsprachig, was zu Namen wie „Miss Kaitlyn Rowe“ führt. Um deutsche oder auch japanische Daten zu erzeugen, binden Sie nicht das Standardpaket von faker.js ein, sondern eine lokalisierte Variante. Für die deutsche Version erreichen Sie das mit import faker from ‚faker/locale/de‘, die japanische Variante binden Sie mit import faker from ‚faker/locale/ja‘ ein.

Fazit

Das Erzeugen von Testdaten für eine Applikation kann je nach Umfang und Struktur der zu erzeugenden Daten recht aufwendig werden. Faker löst dieses Problem auf eine elegante Weise und sorgt außerdem dafür, dass die Daten nicht zu anonymen Zufallszeichenketten verkommen. faker.js bietet von der Erzeugung von Personen- und Adressdaten über zufällige Wörter und Zahlen bis hin zu Hackerphrasen so ziemlich alles, was das Fake-Datenherz begehrt.

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -