Genera un piccolo gruppo di date e trasformalo in casi di test intenzionali. Conserva data iniziale, finale, filtro, regola di unicità e formato con la fixture; usa YYYY-MM-DD per i valori destinati alle macchine e aggiungi casi separati per fine mese e anni bisestili.
01 / SCOPO
Cosa deve produrre un generatore di date casuali per i test
Una fixture utile è più di una stringa che sembra una data. Ha un motivo: data di registrazione, intervallo di prenotazione, scadenza, filtro di un report o evento da ordinare. Il generatore offre rapidamente varietà, ma il piano di test stabilisce cosa deve dimostrare. Inizia nominando il campo e il comportamento da verificare.
Una lista ordinata per created_at dovrebbe contenere mesi diversi, non lo stesso giorno di gennaio in ogni riga. Un modulo di prenotazione deve ricevere date prima, dentro e dopo la finestra consentita. Una regola sull'età va testata il giorno prima del compleanno, nel giorno esatto e nel giorno seguente. L'estrazione è l'input; l'asserzione resta tua responsabilità.
- Nomina il campo o la funzione che riceverà la data.
- Definisci il comportamento che deve valere per ogni valore.
- Decidi quali date aggiungere deliberatamente invece di lasciarle al caso.
02 / MODELLO DATA
Stabilisci se il campo è data, ora o timestamp
Prima di generare, chiarisci il significato del campo. Una data di calendario, come una scadenza, non ha fuso orario. Un campo come created_at contiene un'ora e di solito richiede una zona esplicita. Un selettore data-ora unisce i due concetti e può dipendere dall'ora legale. Convertire una data pura nella mezzanotte locale può spostarla al giorno precedente in un'altra zona.
Per i valori senza ora preferisci 2026-11-18 quando saranno salvati, ordinati, confrontati o inviati a un'API. Mantieni una versione estesa per schermate e revisione umana. I formati numerici americano ed europeo servono a testare la visualizzazione, ma sono ambigui per un parser: 03/04 può significare 4 marzo o 3 aprile. Prova separatamente interfaccia e contratto del parser.
| Formato | Adatto a | Controllo |
|---|---|---|
| YYYY-MM-DD | Campi database, API e fixture | Non ambiguo e ordinabile come testo se valido. |
| MM/DD/YYYY | Visualizzazioni statunitensi | Verifica un parser esplicitamente USA. |
| DD/MM/YYYY | Visualizzazioni regionali | Testa la locale senza indovinare dalla stringa. |
| Data estesa | Schermate, e-mail e report | Controlla nomi dei mesi, accessibilità e a capo. |
| Data e ora | Log, prenotazioni ed eventi | Aggiungi separatamente fuso e ora legale. |
03 / INTERVALLO
Usa limiti inclusivi invece di un periodo vago
Scrivi due estremi concreti. From e To sono inclusivi: un intervallo di un giorno contiene un solo valore e un anno intero comprende 1 gennaio e 31 dicembre. La regola è facile da spiegare nel piano e da controllare con un'asserzione. Se l'applicazione esclude il limite superiore, converti la fixture o documenta la differenza.
Un intervallo ampio mostra la variazione normale, ma non garantisce i confini. Riducilo attorno alla fine di un mese, al cambio d'anno o a una soglia di età per rendere chiaro il risultato atteso. Usa un campione per la distribuzione e un elenco scelto a mano per i limiti; un'estrazione fortunata non deve creare falsa sicurezza.
- Intervallo ampio: controlla ordinamento, raggruppamento, paginazione e distribuzione.
- Intervallo breve: controlla estremi inclusivi e limite della quantità.
- Intervallo di confine: controlla fine mese, anni bisestili e regole di business.
- Intervallo vuoto: controlla l'errore quando il filtro lascia zero date.
04 / GENERAZIONE
Crea campioni realistici senza perdere il controllo
Inizia con pochi valori. Da cinque a venti date bastano spesso per controllare una fixture a mano; un lotto più grande può riempire una tabella di staging o testare la paginazione. Mantieni l'unicità quando ogni riga è un evento diverso. Consenti ripetizioni solo per testare import duplicati, più righe nello stesso giorno o campionamento con reinserimento.
Applica il filtro dei giorni prima di valutare il risultato. Dal lunedì al venerdì è una regola del calendario, non un calendario delle festività. Un lunedì può essere chiuso in un paese o in un'azienda. Se il prodotto richiede giorni lavorativi per paese, genera i giorni normali e aggiungi un set di festività dalla fonte del prodotto.
- Genera prima un lotto piccolo da ispezionare.
- Usa valori unici per righe diverse e ripetizioni per testare i duplicati.
- Usa YYYY-MM-DD per le macchine e una data estesa per le persone.
- Copia intervallo e filtro accanto all'elenco dei risultati.
05 / CASI LIMITE
Aggiungi le date che il campionamento può non trovare
I campioni casuali mostrano la variazione comune, ma le date rare vanno inserite esplicitamente. Aggiungi il 29 febbraio di un anno bisestile e i giorni vicini. Inserisci l'ultimo giorno di un mese da 30 e di uno da 31 giorni. Usa 31 dicembre e 1 gennaio quando un report o un abbonamento attraversa l'anno.
Per le regole di età o idoneità calcola il confine dal requisito e prova entrambi i lati. Chi compie 18 anni oggi è diverso da chi li compie domani. Per scadenze e rinnovi prova la data esatta, l'istante precedente e il primo giorno valido dopo. Il generatore fornisce i valori, il piano l'asserzione.
- Anno bisestile: 29 febbraio e giorni vicini.
- Fine mese: febbraio, aprile, giugno, settembre e un mese da 31 giorni.
- Cambio d'anno: 31 dicembre, 1 gennaio e data di chiusura del report.
- Confini di regola: giorno prima, giorno esatto e giorno dopo.
06 / REVISIONE
Rendi i dati spiegabili e ripetibili
Una fixture è più facile da mantenere quando il revisore può rispondere senza aprire il generatore: quale intervallo, quali date erano ammesse, i duplicati erano possibili e quale formato è stato copiato? Metti le risposte nel nome o in una piccola metadata. `orders_2026Q1_unique_iso` comunica più di `random_dates_1`.
Confronta l'elenco con la validazione reale. Verifica parsing, rifiuto delle stringhe non valide, corrispondenza tra visualizzazione e valore salvato e ordinamento cronologico invece che alfabetico. Alcune asserzioni sull'elenco sono più utili dell'affermazione che il campione sia casuale.
- Mantieni intervallo, filtro, quantità, unicità e formato insieme al risultato.
- Asserisci separatamente validità, parsing, ordine, visualizzazione e limiti.
- Salva l'output che ha causato il problema per riprodurlo.
07 / LIMITI
Cosa possono dimostrare le date generate
Una data generata dimostra che il codice accetta e tratta il valore scelto. Non dimostra che un appuntamento sia disponibile, che una festività valga in un paese o che un termine legale sia stato interpretato correttamente. Per queste affermazioni servono calendario di dominio, documento di policy o fonte autorevole.
Mantieni il perimetro onesto: pianificazione, esempi, fixture QA e campionamento ordinario. Per password, codici, token, estrazioni regolate o decisioni verificabili usa una sorgente casuale progettata per la sicurezza.
CHECKLIST RIPETIBILE
Cinque passaggi dall'intervallo alla fixture
- Dare un nome al comportamentoScrivi il campo, la regola o il flusso che le date devono esercitare.
- Scegliere il modelloSepara la data pura da data-ora e fuso orario.
- Impostare l'intervalloInserisci inizio, fine, quantità e filtro dei giorni se necessario.
- Aggiungere i confiniIncludi anni bisestili, fine mese, cambio d'anno e soglia di business.
- Salvare il contestoConserva intervallo, regole, formato e output fallito nel report.
DOMANDE FREQUENTI
FAQ sulle date casuali per i test
Perché usare un generatore di date casuali per i test?
Crea rapidamente valori vari per evitare di testare moduli, report, API e query sempre con la stessa data. Servono comunque confini e asserzioni intenzionali.
Quale formato è migliore per una fixture?
Usa YYYY-MM-DD per valori salvati, ordinati, confrontati o inviati tramite API. Conserva una data estesa per schermate e controlli manuali.
Le date di test devono essere uniche?
Usa date uniche quando ogni riga è un evento diverso. Permetti duplicati per testare duplicazioni, import ripetuti o più righe nello stesso giorno.
Il filtro dei giorni esclude le festività?
No. Distingue lunedì-venerdì da sabato-domenica. Festività e chiusure richiedono un calendario separato.
Come si testano anni bisestili e fine mese?
Aggiungi 29 febbraio e giorni vicini, ultimi giorni dei mesi corti e lunghi, 31 dicembre e 1 gennaio. Non aspettare un'estrazione rara.
Posso usare le date generate per la sicurezza?
No. Le date sono prevedibili e questo flusso è per campioni e QA. Per password e token usa un generatore di sicurezza.
Come può un altro tester ripetere il campione?
Conserva intervallo, filtro, quantità, unicità, formato e output insieme al caso. La fixture salvata garantisce la ripetibilità.
Riferimenti
Queste fonti di prima parte supportano i dettagli tecnici. Una data casuale non è una credenziale di sicurezza né un documento legale.
- MDN: Crypto.getRandomValues()Contesto sui valori casuali del browser e sui loro limiti.
- MDN: input type=dateRiferimento per gli input data nativi e il formato del valore.
- Panoramica ISO 8601Perché l'ordine anno-mese-giorno aiuta lo scambio dei dati.
PRONTO A CREARE UNA FIXTURE
Inizia con un intervallo chiaro
Genera alcune date, indica il formato e usa la checklist per trasformare un campione in un caso di test verificabile.