Menu

Données d'identité de test : de quoi s'agit-il et à qui servent-elles

Une donnée d'identité de test est un enregistrement synthétique d'une personne — nom, adresse, numéro d'identification, date de naissance — conçu pour les tests logiciels. Voici à quoi cela sert et comment cela fonctionne.

Publié le

  • données de test
  • identité
  • tests logiciels

Une donnée d’identité de test, c’est une personne inventée, écrite en toutes lettres. C’est un nom, une adresse, une date de naissance, un numéro d’identification délivré par un État, un numéro de téléphone et une poignée de champs plus petits, assemblés pour que le logiciel puisse être exercé sur un enregistrement d’apparence ordinaire sans décrire qui que ce soit qui existe.

Ce guide explique d’où viennent ces enregistrements, dans quelles situations ils sont réellement nécessaires, pourquoi les données de production sont un mauvais substitut même lorsqu’elles sont disponibles, et ce qu’un générateur de ce site garantit — et ne garantit pas — quant au résultat.

Ce qu’est réellement une donnée d’identité de test

Mettons de côté le jargon : un enregistrement d’identité de test n’est qu’un ensemble cohérent de réponses aux questions que pose un formulaire. Quelqu’un a un prénom et un nom de famille, habite à une adresse située dans une région donnée, est né un jour donné et détient le numéro d’identification que cette région délivre. L’enregistrement est cohérent au sens où les réponses s’accordent entre elles.

Ce qui en fait une donnée de test plutôt qu’une donnée réelle, c’est sa provenance. Rien n’y a été copié d’un être humain, et rien n’y appartient à un être humain. Elle a la forme d’une personne pour qu’un système puisse la traiter, et aucun référent en dehors du test.

Cette distinction compte plus qu’elle n’en a l’air. Un enregistrement peut être parfaitement formaté et entièrement fabriqué en même temps, et ces deux propriétés sont précisément l’objectif recherché.

Quand une équipe a-t-elle réellement besoin de ce type d’enregistrements ?

Cinq situations reviennent sans cesse. Elles semblent différentes mais partagent une même exigence : le logiciel doit recevoir une entrée plausible tandis que la sortie part quelque part d’inoffensif.

Situation Ce qui casse sans enregistrements générés
Tests fonctionnels de formulaires Les règles de validation de longueur, de jeu de caractères et de champs obligatoires ne peuvent pas du tout être exercées
Démonstrations et captures d’écran Un texte de remplacement tel qu’une seule lettre répétée fait paraître le produit inachevé
Alimentation en masse et répétition de charge Une base de données a besoin de milliers de lignes avant que quiconque puisse mesurer les performances honnêtement
Fixtures de tests automatisés Les assertions dérivent lorsque le même test produit un enregistrement légèrement différent à chaque exécution
Répétitions de migration Un déplacement entre environnements ne peut pas être répété sur des données qui ne ressemblent pas à la forme réelle

Aucune de ces situations n’est améliorée par les détails de vraies personnes, et plusieurs deviennent plus difficiles lorsque de vrais détails s’y mêlent. Ce n’est pas un argument moral ; c’est un argument pratique sur ce dont un test a besoin pour être utile.

Pourquoi les données de production sont le mauvais substitut

L’instinct de copier un extrait de la production dans un environnement inférieur est compréhensible. Les données réelles ont la bonne distribution, les bons cas limites et le bon désordre. Ce sont aussi le type de données le plus coûteux à perdre, et les environnements inférieurs sont exactement là où les contrôles de sécurité sont les plus faibles.

Deux défaillances s’ensuivent. La première est réglementaire : un nom accompagné d’une date de naissance, d’un numéro d’identification ou d’une coordonnée est une donnée personnelle, et la déplacer dans un environnement de développement constitue une nouvelle utilisation à laquelle personne n’a consenti. La seconde est opérationnelle : la copie persiste dans les sauvegardes, dans les journaux de requêtes, dans les captures d’écran jointes aux rapports de bugs et sur les ordinateurs portables de tous ceux qui l’ont restaurée. L’organisation possède désormais bien plus de copies des mêmes enregistrements sensibles qu’auparavant, à des endroits que personne ne surveille.

L’article sur les règles de confidentialité applicables aux données de test approfondit ce point, notamment pourquoi supprimer les noms d’une table copiée n’équivaut pas à rendre la table anonyme. En résumé, l’enregistrement de test le plus sûr est celui qui n’a jamais appartenu à personne.

Ce que contient un enregistrement généré

Sur ce site, le générateur d’identités et de données de test construit l’ensemble complet d’un coup plutôt que champ par champ. Un enregistrement comporte généralement une section personnelle avec les noms, la date de naissance et le genre ; une section adresse avec la rue, la ville, la division administrative et le code postal ; les coordonnées ; et les identifiants administratifs que le pays choisi délivre réellement.

Deux propriétés méritent d’être comprises avant de s’appuyer sur la sortie. La première est la cohérence interne : l’adresse appartient au pays que vous avez sélectionné, le numéro de téléphone porte l’indicatif téléphonique de ce pays et, lorsque l’identifiant national d’un pays suit une règle de chiffre de contrôle publiée, le numéro généré la respecte. La seconde est la reproductibilité. La sortie est pilotée par une clé d’identité, et la même clé avec le même pays produit exactement le même enregistrement — c’est ce qui rend un enregistrement généré utilisable dans un test automatisé, et pas seulement dans un test manuel.

Chaque enregistrement produit de cette manière est synthétique et n’existe que pour les tests ; il ne doit pas servir à usurper l’identité d’une personne réelle, et ce n’est pas un titre qu’une autorité aurait délivré ou accepterait.

Les enregistrements générés doivent-ils avoir l’air réels ?

Ils doivent avoir l’air ordinaires, ce qui est une exigence plus faible. Un enregistrement d’apparence exotique est un enregistrement qui teste la mauvaise chose : si chaque nom de famille généré fait une seule syllabe ou si chaque nom de rue est une phrase de remplacement, la mise en page n’est jamais mise à l’épreuve et la validation ne se déclenche jamais. Les données générées méritent leur place lorsqu’elles prennent la même forme que l’entrée réelle que le système recevra finalement, y compris les formes délicates — les noms longs, les noms avec diacritiques, les adresses écrites sans espaces, les nombres portant un zéro initial.

Avoir l’air ordinaire n’est pas la même chose qu’être utilisable. Détenir un numéro d’identification correctement formaté ne signifie pas qu’il appartient à quelqu’un, et il ne satisfera pas un contrôle qui interroge l’autorité émettrice, car il n’existe aucun enregistrement derrière lui à consulter.

Pourquoi les mêmes paires de champs échouent encore aux contrôles de cohérence

Les équipes qui construisent à la main des enregistrements de test rencontrent sans cesse les mêmes défauts, et ce sont presque toujours des défauts de relation plutôt que des défauts de valeur. La rue est plausible, la ville est plausible, le code postal est plausible — et les trois appartiennent à des pays différents.

La raison est qu’un enregistrement écrit à la main est assemblé champ par champ, et chaque champ est jugé isolément par celui qui l’a saisi. Le hasard fait la même chose à grande vitesse : des tirages indépendants produisent des paires impossibles bien plus souvent que l’intuition ne le suggère. Un générateur l’évite en décidant d’abord le pays et la division administrative, puis en dérivant tout le reste de ces deux choix, ce qui explique pourquoi la question de la cohérence des champs est en réalité une question d’ordre de génération.

Pour les développeurs : de quoi est fait un enregistrement d’identité

Modélisez l’enregistrement comme des champs avec des dépendances, et non comme une ligne plate de colonnes indépendantes. Nom et genre, date de naissance et âge, pays et indicatif téléphonique, division et code postal, pays et format d’identifiant : chaque paire a un membre qui contraint l’autre, et un schéma qui masque cette relation laissera entrer des lignes incohérentes.

Deux habitudes au niveau des champs évitent la plupart des dégâts. Ne dérivez jamais l’âge d’un entier stocké lorsque la date de naissance est aussi stockée — conservez la date et calculez l’âge, sinon les deux seront en désaccord dès qu’une année s’écoule. Et là où un pays ne délivre aucun identifiant particulier, traitez le champ comme légitimement absent plutôt que de le remplir avec une chaîne d’apparence plausible, car un champ vide et un champ erroné échouent de manières très différentes.

Pour les fixtures, préférez un enregistrement figé à un nouvel enregistrement aléatoire dès que l’assertion porte sur le comportement plutôt que sur la variété des entrées. Un test qui affirme une réponse précise doit savoir quelle était l’entrée. Réservez la génération aléatoire aux tests qui traquent des cas limites inconnus, et lorsqu’un tel test trouve quelque chose, figez cet enregistrement comme fixture afin de verrouiller la non-régression. Quoi que contienne la fixture, la note dans le fichier doit le dire clairement : ces enregistrements sont synthétiques, ils ne servent qu’aux tests logiciels et ils ne doivent pas être utilisés comme l’identité de quiconque.

Étapes suivantes

Choisissez un formulaire de votre produit et remplissez-le avec un enregistrement généré au lieu du texte de remplacement qui s’y trouve probablement. Puis reprenez la même clé d’identité et générez à nouveau — si le second enregistrement diffère du premier, vous avez affaire à un outil qui ne peut pas prendre en charge des assertions automatisées, et l’approche des fixtures avec vitest décrit ce qu’il faut exiger à la place.

Continuer la lecture

Articles sur Générateur d'identités et de données de test