Générez un petit lot de dates, puis transformez-le en cas de test explicite. Conservez les dates de début et de fin, le filtre, l'option d'unicité et le format avec la fixture ; utilisez YYYY-MM-DD pour les valeurs machine et ajoutez des cas séparés pour les fins de mois et les années bissextiles.
01 / OBJECTIF
Ce qu'un générateur de dates aléatoires doit produire pour les tests
Une fixture utile est plus qu'une chaîne qui ressemble à une date. Elle répond à un besoin : date d'inscription, fenêtre de réservation, échéance, filtre de rapport ou événement à trier. Le générateur apporte rapidement de la variété, mais le plan de test décide ce que cette variété doit démontrer. Commencez par nommer le champ et le comportement à vérifier.
Une liste triée par created_at doit contenir plusieurs mois, et non la même date de janvier sur chaque ligne. Un formulaire de réservation doit recevoir des valeurs avant, dans et après la fenêtre autorisée. Une règle d'âge doit être testée la veille de l'anniversaire, le jour même et le lendemain. Le tirage fournit l'entrée ; l'assertion reste votre responsabilité.
- Nommez le champ ou la fonctionnalité qui recevra la date.
- Définissez la règle qui doit rester vraie pour chaque valeur.
- Décidez quelles dates doivent être ajoutées volontairement plutôt que laissées au hasard.
02 / MODÈLE DE DATE
Déterminez s'il s'agit d'une date, d'une heure ou d'un horodatage
Avant de générer, identifiez le sens du champ. Une date de calendrier, comme une échéance, n'a pas de fuseau horaire. Un champ created_at possède une heure et nécessite généralement une zone explicite. Un sélecteur date-heure combine les deux et peut dépendre du changement d'heure. Transformer une date seule en minuit local peut la faire changer de jour lorsqu'une autre zone la lit.
Pour une date seule, préférez une valeur ordonnée telle que 2026-11-18 lorsqu'elle sera stockée, triée, comparée ou envoyée à une API. Gardez une version longue pour les captures et la vérification humaine. Les formats numériques américain et européen sont utiles pour tester l'affichage, mais ils sont ambigus pour un parseur : 03/04 peut désigner le 4 mars ou le 3 avril. Testez l'affichage et le contrat du parseur séparément.
| Format | Bon usage | Point à vérifier |
|---|---|---|
| YYYY-MM-DD | Champs de base, API, fixtures | Non ambigu et triable comme texte si valide. |
| MM/DD/YYYY | Affichage destiné aux États-Unis | Vérifier un parseur explicitement américain. |
| DD/MM/YYYY | Affichages régionaux | Tester la locale plutôt que deviner. |
| Date longue | Captures, courriels, rapports | Vérifier les noms de mois et le retour à la ligne. |
| Date et heure | Journaux, réservations, événements | Ajouter séparément le fuseau et l'heure d'été. |
03 / PLAGE
Utilisez des bornes inclusives et non une période vague
Écrivez deux bornes concrètes. Les dates De et À sont incluses : une plage d'un jour ne contient qu'une valeur et une année complète comprend le 1er janvier et le 31 décembre. Cette règle se décrit facilement dans un plan de test et se vérifie par une assertion. Si l'application exclut la borne supérieure, convertissez la fixture ou documentez la différence.
Une plage large révèle la variation ordinaire, mais elle ne garantit pas les limites. Resserrez la plage autour d'une fin de mois, d'un changement d'année ou d'un seuil d'âge pour rendre le résultat attendu évident. Utilisez un échantillon pour la distribution et un jeu choisi à la main pour les bords ; un tirage chanceux ne doit pas créer une fausse assurance.
- Plage large : vérifier tri, regroupement, pagination et distribution.
- Plage courte : vérifier les bornes inclusives et la quantité.
- Plage de bord : vérifier fins de mois, années bissextiles et règles métier.
- Plage vide : vérifier l'erreur quand un filtre ne laisse aucune date éligible.
04 / GÉNÉRATION
Créer des échantillons réalistes sans perdre la maîtrise
Commencez par une petite quantité. Cinq à vingt dates suffisent souvent pour inspecter une fixture ; un lot plus grand peut remplir une table de staging ou exercer la pagination. Gardez les dates uniques lorsque chaque ligne représente un événement différent. Autorisez les doublons seulement pour tester les imports répétés, les enregistrements du même jour ou l'échantillonnage avec remplacement.
Appliquez le filtre de jours avant d'évaluer la sortie. Du lundi au vendredi est une règle de calendrier, pas un calendrier de jours fériés. Un lundi peut être chômé dans un pays ou une entreprise. Si le produit connaît les jours ouvrés par pays, générez des jours ordinaires puis ajoutez un jeu de jours fériés provenant de la source du produit.
- Générer d'abord un petit lot à inspecter.
- Utiliser l'unicité pour les lignes distinctes et les répétitions pour tester les doublons.
- Utiliser YYYY-MM-DD pour la machine et une date longue pour la relecture.
- Copier les réglages de plage et de filtre avec la liste.
05 / CAS LIMITES
Ajouter les dates que l'échantillonnage risque de manquer
Les échantillons aléatoires révèlent la variation courante, mais les dates rares doivent être ajoutées explicitement. Incluez le 29 février d'une année bissextile et ses voisins. Ajoutez le dernier jour d'un mois de 30 jours et d'un mois de 31 jours. Ajoutez le 31 décembre et le 1er janvier lorsqu'un rapport ou un abonnement traverse l'année.
Pour une règle d'âge ou d'éligibilité, calculez la limite à partir de l'exigence et testez les deux côtés. Une personne qui a 18 ans aujourd'hui n'est pas dans le même cas que celle dont l'anniversaire est demain. Pour une échéance, testez la date exacte, l'instant précédent et le premier jour valide après. Le générateur fournit les valeurs ; le plan fournit l'assertion.
- Année bissextile : 29 février et jours voisins.
- Fins de mois : février, avril, juin, septembre et un mois de 31 jours.
- Changement d'année : 31 décembre, 1er janvier et date de coupure.
- Limites métier : veille, jour exact et lendemain de la règle.
06 / RELECTURE
Rendre les données explicables et reproductibles
Une fixture est plus simple à maintenir quand le relecteur peut répondre à quatre questions sans ouvrir le générateur : quelle plage, quelles dates éligibles, les doublons étaient-ils possibles et quel format a été copié ? Placez ces réponses dans le nom ou une petite métadonnée. `orders_2026Q1_unique_iso` est plus parlant que `random_dates_1`.
Comparez la liste aux règles de validation réelles. Vérifiez que chaque date est analysée, que les chaînes invalides sont refusées, que l'affichage correspond à la valeur stockée et que le tri est chronologique plutôt qu'alphabétique. Quelques assertions sur la liste sont plus utiles qu'une simple affirmation d'aléa.
- Garder plage, filtre, quantité, unicité et format avec le résultat.
- Tester séparément validité, parsing, ordre, affichage et limites.
- Conserver la sortie fautive pour permettre la reproduction du défaut.
07 / LIMITES
Ce que les dates générées peuvent prouver, ou non
Une date générée montre que le code accepte et traite la valeur choisie. Elle ne prouve pas qu'un créneau est disponible, qu'un jour férié est valide dans un pays ou qu'un délai légal est correctement interprété. Ces affirmations exigent un calendrier métier, une politique ou une source officielle.
Restez précis sur le périmètre : planification, exemples, fixtures QA et échantillonnage courant. Pour les identifiants, mots de passe, jetons, tirages réglementés ou décisions auditées, utilisez une source aléatoire spécialisée en sécurité.
LISTE DE CONTRÔLE
Cinq étapes, de la plage au jeu de test
- Nommer le comportementÉcrire le champ, la règle ou le parcours que les dates vont exercer.
- Choisir le modèleSéparer date seule, date-heure et comportement de fuseau.
- Fixer la plageSaisir De et À, la quantité et le filtre de jours si nécessaire.
- Ajouter les bordsInclure jours bissextiles, fins de mois, changement d'année et seuil métier.
- Conserver le contexteEnregistrer plage, règles, format et sortie fautive avec le rapport.
QUESTIONS FRÉQUENTES
FAQ sur les dates aléatoires de test
Pourquoi utiliser un générateur de dates aléatoires pour les tests ?
Il crée rapidement des valeurs variées pour éviter de tester formulaires, rapports, API et requêtes avec une seule date familière. Les limites et assertions restent nécessaires.
Quel format choisir pour une fixture ?
Utilisez YYYY-MM-DD pour une valeur stockée, triée, comparée ou envoyée par API. Gardez une date longue pour les captures et la revue humaine.
Les dates de test doivent-elles être uniques ?
Utilisez l'unicité pour des événements distincts. Autorisez les répétitions pour tester doublons, imports répétés ou plusieurs lignes du même jour.
Le filtre semaine exclut-il les jours fériés ?
Non. Il distingue lundi-vendredi de samedi-dimanche. Les jours fériés et fermetures demandent une autre source de calendrier.
Comment tester années bissextiles et fins de mois ?
Ajoutez le 29 février, les jours voisins, les derniers jours de mois courts et longs, le 31 décembre et le 1er janvier. N'attendez pas un tirage rare.
Puis-je utiliser une date générée pour la sécurité ?
Non. Les dates sont prévisibles et ce flux vise les échantillons et le QA. Utilisez un générateur de sécurité pour mots de passe, jetons et identifiants.
Comment permettre à un autre testeur de reproduire l'échantillon ?
Conservez plage, filtre, quantité, unicité, format et sortie avec le cas. La fixture capturée et son contexte assurent la reproductibilité.
Références utiles
Ces sources de première partie éclairent les détails techniques cités. Une date aléatoire n'est ni un secret de sécurité ni un document juridique.
- MDN : Crypto.getRandomValues()Contexte sur les valeurs aléatoires du navigateur et leurs limites.
- MDN : input type=dateRéférence pour les champs de date natifs et leur valeur.
- Présentation d'ISO 8601Pourquoi l'ordre année-mois-jour facilite les échanges.
PRÊT À CRÉER UNE FIXTURE
Commencez par une plage claire
Générez quelques dates, indiquez clairement le format et utilisez la liste ci-dessus pour transformer un échantillon en cas de test révisable.