Utilisation de Faker pour générer des données de remplissage pour des tests automatisés

Ce que vous allez créer

Faker est une bibliothèque open source créée par François Zaninotto qui génère des données de remplissage artificiel pour votre application et ses besoins en matière de test..

Faker peut être utilisé dans une application PHP vanille, un framework tel que Yii ou Laravel, ou dans une bibliothèque de test telle que celle mentionnée avec Codeception dans ce didacticiel précédent d'Envato Tuts +..

Dans le tutoriel d'aujourd'hui, je vais passer en revue l'installation et l'utilisation de base de Faker et de ses fonctionnalités. Comme le dit Zaninotto:

"Que vous deviez amorcer votre base de données, créer de beaux documents XML, compléter votre persistance pour la soumettre à un test de résistance, ou anonymiser des données provenant d'un service de production, Faker est fait pour vous."

Et, dans l’ensemble, il offre un large éventail de fonctionnalités simples, utiles pour tout régime de test..

Un petit rappel avant de commencer, je participe aux commentaires ci-dessous. Je suis particulièrement intéressé si vous avez des idées supplémentaires ou si vous souhaitez suggérer des sujets pour de futurs tutoriels. Si vous avez une question ou une suggestion de sujet, veuillez poster ci-dessous. Vous pouvez également me joindre directement sur Twitter @reifman.

Commencer

Installer Faker

J'ai commencé par créer un nouvel arbre de code et en ajoutant fzaninotto / faker à composer.json ci-dessous:

"name": "Démonstration Faker", "description": "pour Envato Tuts +", "keywords": ["faker", "php", "jeff reifman"], "homepage": "http: // www. lookahead.io/ "," type ":" projet "," licence ":" BSD-3-Clause "," stabilité minimale ":" stable "," require ": " php ":"> = 5.6. 0 "," fzaninotto / faker ":" * "" 

Ensuite, j'ai mis à jour le compositeur:

$ composer update Chargement des référentiels Composer avec les informations de paquet Mise à jour des dépendances (y compris require-dev) - Installation de fzaninotto / faker (v1.6.0) Chargement à partir du cache Écriture de fichier de verrouillage Génération de fichiers à chargement automatique 

Faker est installé dans le répertoire du fournisseur. Alors, j'ai chargé en haut d'un fichier index.php:

Ensuite, je voulais essayer quelques exemples de scénarios simples de génération de données..

Exemples simples

J'ai étendu les exemples de Faker comme suit et les ai exécutés à partir de http: // localhost: 8888 / faker:

prénom; // 'Lucy Cechtelar'; espaceur (); echo $ faker-> adresse; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" spacer (); echo $ faker-> text; // Dolores as sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit // et sit et mollitia sed. // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium // sit minima sint. espaceur (); fonction spacer () echo '
'; ?>

Avec des rafraîchissements rapides, on m'a présenté des résultats variés tels que:

Ruthie Beier 37851 Gusikowski Appartement, Suite 594 Port Keithmouth, Nouveau-Mexique 06110 Signaler un abus sur un ordinateur de bureau. Erreur maiores qui vero non omnis. Quaerat mollitia dolore deserunt quia quidem beatae. 

Et:

Darron Hessel 657 Elijah Lock Suite 202 Nitzschemouth, AZ 11166 Culpa dolorum quidem distinctio eius necessitatibus. Mollitia ut nostrum et ut quas veniam et. Unde jure molestiaer aperiam fuga voluptatibus quo. 

Et:

Fredy Fadel MD 53328 Eldora Isle Apt. 634 West Eleanore, CA 95798-3025 Eligendi eos laudantium eveniet ad. Qui a voluptatibus est quia voluptatem. Dolorum pariatur quaerat nulla.

Faker tient ses promesses.

Les fournisseurs par défaut de Faker

Toutes les méthodes de génération de données dans Faker sont créées à partir de la mise en œuvre des fournisseurs. Voici le code qui enregistre les fournisseurs par défaut de Faker - c'est fait pour vous:

addProvider (new Faker \ Provider \ en_US \ Person ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ Address ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ PhoneNumber ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ Company ($ faker)); $ faker-> addProvider (nouveau Faker \ Provider \ Lorem ($ faker)); $ faker-> addProvider (nouveau Faker \ Provider \ Internet ($ faker));

Donc ci-dessus, quand j'ai demandé un adresse de Faker, il a cherché dans tous les fournisseurs les méthodes qui correspondent, en utilisant finalement le Adresse() fournisseur.

Vous pouvez également écrire vos propres fournisseurs ou parcourir plusieurs extensions de Faker disponibles sur le Web..

Modificateurs

Faker propose également des modificateurs spéciaux facilitant vos tests, tels que unique (), optionnel () ou valide (). Par exemple, vous pouvez générer des numéros uniques:

// unique () force les fournisseurs à renvoyer des valeurs uniques $ values ​​= array (); pour ($ i = 0; $ i < 10; $i++)  // get a random digit, but always a new one, to avoid duplicates $values []= $faker->unique () -> randomDigit;  print_r ($ values);

Voici le résultat de valeurs uniques:

Tableau ([0] => 7 [1] => 6 [2] => 0 [3] => 2 [4] => 5 [5] => 1 [6] => 8 [7] => 4 [8] => 9 [9] => 3)

Si vous utilisez le optionnel() méthode, certains numéros seront retournés sous forme de NUL comme si l'utilisateur n'avait pas saisi de champ dans votre formulaire. Remarque: cette méthode ne fonctionnait pas correctement.

Avec valide(), vous pouvez enregistrer des fonctions qui déterminent si les données de remplissage répondent à des exigences spécifiques, renvoient une erreur ou génèrent un message d'erreur sur un formulaire utilisateur.

Explorer les fournisseurs

Faker propose un large éventail de méthodes pour générer des données aléatoires pour votre application:

  • Base: méthodes simples pour les lettres aléatoires, les nombres, les chaînes traitées et les regex
  • Lorem Ipsum Texte: texte latin aléatoire
  • Personne: noms des personnes
  • Adresse: adresses postales
  • Numéro de téléphone: numéros de téléphone
  • Société: noms des sociétés
  • Texte réel: texte écrit par des êtres humains contre des chaînes latines sans signification
  • Date et heure: dates et heures aléatoires
  • Internet: emails, domaines, etc..
  • Agent utilisateur: chaînes du navigateur
  • Paiement: carte de crédit et chaînes et numéros SWIFT
  • Couleur: couleurs aléatoires
  • Fichier: extensions de fichier, types de fichier et noms de fichier
  • Image: URL des images de remplissage de différents types
  • Uuid: identifiants uniques
  • Code à barres: différents types de codes à barres, par exemple ISBN13
  • Divers: codes de cryptage, codes de pays, etc..
  • Biaisé: nombres aléatoires avec biais

Essayons un peu plus de ces méthodes.

Informations de paiement

Le code ci-dessous génère dix personnes, leurs informations de carte de crédit et leurs codes de sécurité:

$ faker = Faker \ Factory :: create (); pour ($ i = 0; $ i<10;$i++)  $cc = $faker->creditCardDetails; $ cc ['security'] = $ faker-> numberBetween (199 499); var_dump ($ cc); spacer (2); 

Voici quelques résultats du code ci-dessus:

Images

Voici un exemple simple de génération d'image:

$ faker = Faker \ Factory :: create (); $ width = 320; $ hauteur = 240; écho ''; 

Mais vous pouvez aussi générer des chats:

écho '';

C'est peut-être la capacité de génération de chat qui m'a conquis. Je ne peux pas attendre pour l'impression en trois dimensions et l'activation de l'âme pour travailler avec des choses comme ça.

Données internationalisées

Avec le code ci-dessous, j'ai créé un tableau avec quatre colonnes de noms provenant de France, de Russie, d'Amérique et de Chine:

écho '
français russe Anglais chinois
'; $ faker = Faker \ Factory :: create ('fr_FR'); // crée un faux français pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); spacer (2); écho ''; $ faker = Faker \ Factory :: create ('Ru_RU'); // créer le russe pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); spacer (2); écho ''; $ faker = Faker \ Factory :: create ('En_US'); // crée l'anglais pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); spacer (2); écho ''; $ faker = Faker \ Factory :: create ('zh_CN'); // crée le chinois pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); écho '
';

Voici le résultat:

Créer de fausses adresses e-mail

Voici un exemple de code permettant de générer 25 adresses électroniques factices de fournisseurs gratuits tels que Gmail et Yahoo:

$ valeurs = tableau (); pour ($ i = 0; $ i < 25; $i++)  // get a random digit, but also null sometimes $values []= $faker->freeEmail ();  print_r ($ values); sortie; 

Voici le résultat obtenu:

Génération de documents XML

Faker offre un exemple utile de génération de XML; Cependant, cela nécessite que vous travailliez avec un framework et ayez une architecture de vue:

      booléen (25)):?>   
streetAddress?> ville?> code postal?> état?>
booléen (33)):?> bs?> booléen (33)):?> booléen (15)):?>
text (400)?>]]>

En conclusion

J'espère que cela vous a servi d'introduction de base à Faker, une bibliothèque PHP gratuite et open source incroyablement utile.

Si vous voulez lire davantage, je vous recommande le contenu du remplissage: outils, astuces et exemple dynamique (Envato Tuts +) de Jim Nielsen, qui fournit aux concepteurs d’applications de générer des données. Il suggère que vous puissiez être plus efficace lorsque vous appliquez de fausses données pour créer une expérience plus réaliste au cours de votre processus de conception..

Si vous souhaitez savoir quand mon prochain tutoriel Envato Tuts + arrive, suivez-moi @reifman sur Twitter ou consultez ma page d'instructeur. Actuellement, je travaille sur deux séries que vous apprécierez peut-être:

  1. Programmation avec la série Yii2
  2. Construire votre démarrage avec PHP sur Meeting Planner; allez planifier votre première réunion aujourd'hui.

Liens connexes

  • fzaninotto / Faker (GitHub)
  • Contenu de remplissage: outils, astuces et exemple dynamique (Envato Tuts +)
  • Programmation avec Yii2: Test automatisé avec codeception (Envato Tuts +)