© saicle/Shutterstock.com
PHP Magazin
Maßgeschneiderte Testdaten mit Faker und Alice

Alice im Fakerland

Bei der Entwicklung datengestützter Webanwendungen stellt sich schnell die Frage nach passenden Testdaten - den so genannten Fixtures. Realitätsnah und zufällig verteilt sollten sie sein, gleichzeitig müssen sie der Geschäftslogik unterliegen und für Entwickler wartbar, skalierbar, leserlich und reproduzierbar zu laden sein. Zwei Bibliotheken meistern alle diese Anforderungen: Faker und Alice.

Philipp Rieber


Sicherlich hat jeder Entwickler bereits auf vielfältige Art und Weise Testdaten für seine Applikationen erstellt und dabei vermutlich mehr als einmal eigene Verfahren erdacht, diese zu erzeugen und in die Datenbank zu laden. Mit einem Mix aus PHP-, SQL- und Shell-Skripten sowie der Datenhaltung in CSV-, XML- oder YAML-Daten ist natürlich alles möglich. Die Erstellung von Fixtures genießt aber oft wenig Priorität, und die Pflege und Erweiterung wird schnell lästig. Warum also keine professionelle Lösung nutzen, um in weniger Zeit ein besseres Ergebnis zu erhalten?

Dieser Artikel stellt die zwei PHP-Bibliotheken Faker [1] und Alice [2] vor. Gemeinsam bilden sie eine ausgereifte Lösung für die beschriebenen Anforderungen. Faker verfügt über simple Methoden zur Generierung von Testdaten aller Art – zum Beispiel Namen, E-Mail-Adressen, Texte, Postleitzahlen, Telefonnummern, Barcodes, Datumswerte, IPs, Kreditkartennummern und viele mehr. Alice erlaubt es, die Attribute von Testentitäten in gut lesbarem YAML-Code zu beschreiben und in echte PHP-Objekte zu übersetzen. Die Objekte lassen sich anschließend mithilfe eines Object-Relational Mappers (ORM) wie Doctrine oder Propel in einer Datenbank persistieren. Alice integriert Faker, um Objektattribute bequem mit den gewünschten Testdaten zu belegen, und bietet etliche Annehmlichkeiten etwa zur Skalierung der Fixtures, zum Umgang mit Objektreferenzen und vieles mehr. Abschließend zeigt der Artikel mit dem AliceBundle [3] eine einfache Integration von Faker und Alice in das beliebte Symfony-Framework.

Faker – realistische Testdaten

Versetzen wir uns zunächst in die Situation, Fixtures selbst zu schreiben. Die erste Herausforderung ist die Beschaffung real wirkender und konsistenter Daten. Dafür lassen sich zum Beispiel lustige Namenslisten [4] von „Klara Fall“ bis „Rainer Zufall“ kopieren. Zur Erzeugung eindeutiger Datensätze wie etwa einer E-Mail-Adresse kann ein Schleifenindex herangezogen werden; für Daten wie Straßennamen, Postleitzahlen, hexadezimale Farbcodes oder Zeitzonen hilft mit etwas Überlegung der passende PHP-Codeschnipsel. Ein Lorem-Ipsum-Generator [5] liefert Blindtexte gewünschter Länge, ein Lorem-Pixel-Generator [6] Testbilder gewünschter Größe. Kombiniert mit PHP-Logik lassen sich optionale Attribute mit gewisser Wahrscheinlichkeit setzen oder Dopplungen in den Datensätzen vermeiden. Datums­arithmetik sorgt zudem für konsistente Datumswerte. Listing 1 zeigt einige Beispiele anhand einer fiktiven Us...

PHP Magazin
Maßgeschneiderte Testdaten mit Faker und Alice

Alice im Fakerland

Bei der Entwicklung datengestützter Webanwendungen stellt sich schnell die Frage nach passenden Testdaten - den so genannten Fixtures. Realitätsnah und zufällig verteilt sollten sie sein, gleichzeitig müssen sie der Geschäftslogik unterliegen und für Entwickler wartbar, skalierbar, leserlich und reproduzierbar zu laden sein. Zwei Bibliotheken meistern alle diese Anforderungen: Faker und Alice.

Philipp Rieber


Sicherlich hat jeder Entwickler bereits auf vielfältige Art und Weise Testdaten für seine Applikationen erstellt und dabei vermutlich mehr als einmal eigene Verfahren erdacht, diese zu erzeugen und in die Datenbank zu laden. Mit einem Mix aus PHP-, SQL- und Shell-Skripten sowie der Datenhaltung in CSV-, XML- oder YAML-Daten ist natürlich alles möglich. Die Erstellung von Fixtures genießt aber oft wenig Priorität, und die Pflege und Erweiterung wird schnell lästig. Warum also keine professionelle Lösung nutzen, um in weniger Zeit ein besseres Ergebnis zu erhalten?

Dieser Artikel stellt die zwei PHP-Bibliotheken Faker [1] und Alice [2] vor. Gemeinsam bilden sie eine ausgereifte Lösung für die beschriebenen Anforderungen. Faker verfügt über simple Methoden zur Generierung von Testdaten aller Art – zum Beispiel Namen, E-Mail-Adressen, Texte, Postleitzahlen, Telefonnummern, Barcodes, Datumswerte, IPs, Kreditkartennummern und viele mehr. Alice erlaubt es, die Attribute von Testentitäten in gut lesbarem YAML-Code zu beschreiben und in echte PHP-Objekte zu übersetzen. Die Objekte lassen sich anschließend mithilfe eines Object-Relational Mappers (ORM) wie Doctrine oder Propel in einer Datenbank persistieren. Alice integriert Faker, um Objektattribute bequem mit den gewünschten Testdaten zu belegen, und bietet etliche Annehmlichkeiten etwa zur Skalierung der Fixtures, zum Umgang mit Objektreferenzen und vieles mehr. Abschließend zeigt der Artikel mit dem AliceBundle [3] eine einfache Integration von Faker und Alice in das beliebte Symfony-Framework.

Faker – realistische Testdaten

Versetzen wir uns zunächst in die Situation, Fixtures selbst zu schreiben. Die erste Herausforderung ist die Beschaffung real wirkender und konsistenter Daten. Dafür lassen sich zum Beispiel lustige Namenslisten [4] von „Klara Fall“ bis „Rainer Zufall“ kopieren. Zur Erzeugung eindeutiger Datensätze wie etwa einer E-Mail-Adresse kann ein Schleifenindex herangezogen werden; für Daten wie Straßennamen, Postleitzahlen, hexadezimale Farbcodes oder Zeitzonen hilft mit etwas Überlegung der passende PHP-Codeschnipsel. Ein Lorem-Ipsum-Generator [5] liefert Blindtexte gewünschter Länge, ein Lorem-Pixel-Generator [6] Testbilder gewünschter Größe. Kombiniert mit PHP-Logik lassen sich optionale Attribute mit gewisser Wahrscheinlichkeit setzen oder Dopplungen in den Datensätzen vermeiden. Datums­arithmetik sorgt zudem für konsistente Datumswerte. Listing 1 zeigt einige Beispiele anhand einer fiktiven Us...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang