Menu

Moduli di indirizzo internazionali: una checklist di test per paese

Come l'ordine delle righe dell'indirizzo, i pattern dei codici postali, i prefissi telefonici e la concatenazione CJK differiscono per paese, e dove si rompono i moduli internazionali.

Pubblicato

  • moduli
  • internazionalizzazione
  • indirizzi
  • codici postali

Un modulo di indirizzo che funziona per un solo paese è di solito un modulo scritto per il paese in cui vive il suo autore. Aggiungi un secondo paese e le ipotesi iniziano a scontrarsi: quante righe servano a un indirizzo, quale campo porti il codice postale, se una regione sia del tutto obbligatoria e quali caratteri sia consentito digitare. I fallimenti raramente sono arresti anomali. Sono indirizzi che si salvano senza lamentarsi e non possono essere recapitati.

Questa guida è una checklist di ciò che effettivamente differisce nel mondo e di dove i moduli di solito si rompono su ciascun punto. È scritta per chi deve produrre i casi di test, e ogni voce è qualcosa che un revisore può verificare prima di una release.

Che cosa cambia quando si aggiunge un secondo paese

Tre ipotesi si rompono contemporaneamente, e tendono a rompersi nello stesso ordine quasi per ogni modulo.

La prima è la forma. Un modello costruito su riga indirizzo uno, riga indirizzo due, città, stato e codice postale codifica un numero di righe e un ordine dei campi che non tutti i paesi usano. La seconda è l’obbligatorietà: i campi contrassegnati come obbligatori per tutti sono sbagliati per i paesi che non li usano. La terza è il contenuto: una regola scritta rispetto al formato di un paese respinge valori legittimi di un altro, e il rifiuto almeno è visibile, cosa che non si può dire delle alternative.

La rottura silenziosa è la categoria che merita di essere testata con più impegno. Un codice postale troncato, un codice convertito in maiuscolo che era sensibile alle maiuscole, o una città collocata nello slot sbagliato producono tutti un record che si salva in modo pulito e fallisce molto più tardi, in un sistema di corriere o in un calcolo fiscale che nessuno nel team del modulo può vedere. La guida alla validazione e normalizzazione degli indirizzi è il luogo dove appartiene quel lavoro di pulizia.

Ordine delle righe e numero di righe

Gli indirizzi occidentali vanno dal più piccolo al più grande: nome, via, città, regione, codice postale, paese. Gli indirizzi giapponesi, cinesi e coreani vanno nell’altro senso, dal paese giù attraverso prefettura o provincia, città e circoscrizione fino alla via e all’edificio. Un modulo che rende un modello occidentale fisso e vi comprime un indirizzo giapponese produce qualcosa che si legge male per un essere umano anche quando ogni campo è popolato.

Anche il numero di righe varia. Un indirizzo britannico richiede comunemente quattro o cinque righe incluso il post town, un indirizzo statunitense di solito ne basta tre, e un indirizzo giapponese spesso ne richiede due solo per il dettaglio di blocco ed edificio. Due righe di indirizzo generiche sono un minimo difendibile, una no, e quattro sono generose anziché eccessive.

Nemmeno l’etichetta per il livello intermedio è la stessa parola ovunque. È una provincia, una regione, una prefettura, un oblast’, un governatorato, un emirato, un dipartimento o una contea a seconda di dove ci si trovi. L’etichetta conta meno del consentire al campo di essere facoltativo per i paesi che non ne usano uno nell’indirizzamento postale. L’articolo sul formato degli indirizzi internazionali copre i nomi dei campi stessi.

Dove si colloca il codice postale e che forma ha?

Sia la posizione sia il pattern differiscono, e una regola scritta per un solo paese è il difetto classico in quest’area.

Paese Posizione nell’indirizzo reso Forma
Germania Prima della città Solo cifre
Francia Prima della città Solo cifre
Giappone Prima della città Cifre con un trattino interno
Stati Uniti Dopo la città e la regione Cifre, con un’estensione facoltativa con trattino
Regno Unito Dopo il post town Lettere e cifre, con uno spazio interno significativo
Canada Dopo la provincia Alternanza di lettera e cifra
Paesi Bassi Dopo la città Cifre seguite da lettere
Irlanda Dopo la città Un codice alfanumerico di tipo proprio

Altri due casi sconfiggono del tutto la corrispondenza di pattern. Il primo è un paese il cui codice è genuinamente alfanumerico, quindi una regola di sole cifre rifiuta input validi. Il secondo è un paese senza un sistema di codici postali in uso quotidiano, dove il campo deve essere facoltativo o nascosto anziché obbligatorio, perché un campo obbligatorio senza risposta valida costringe gli utenti a inventarne una.

I limiti di lunghezza sono lo stesso bug puntato nella direzione opposta. Un codice che porta uno spazio interno è più lungo delle sole cifre o lettere, quindi un input limitato a cinque o sei caratteri tronca un valore che era perfettamente corretto quando digitato. Il troncamento è peggio del rifiuto, perché il modulo segnala un successo e il danno viene scoperto da qualcun altro.

I codici postali sono un pattern o una geografia?

Sono geografia, e il pattern ne è solo la superficie. Un codice postale identifica un’area di consegna, e i suoi caratteri iniziali portano la posizione nella maggior parte dei sistemi.

Ciò ha una conseguenza diretta per i test. Un codice può soddisfare la regola di forma ed essere comunque impossibile per la città che gli sta accanto: un codice i cui caratteri iniziali appartengono a una parte di un paese non può essere corretto per una città in un’altra, e entrambi superano un’espressione regolare senza lamentarsi. La validazione di pattern intercetta gli errori di battitura. La relazione tra codice e regione richiede dati di riferimento, ed è il controllo che intercetta un indirizzo genuinamente sbagliato anziché uno digitato male. Le forme per paese sono catalogate in formati dei codici postali per paese.

Se puoi testare solo uno dei due, testa la relazione. Un fallimento di pattern è visibile all’utente e viene corretto; un codice valido per il pattern ma nel posto sbagliato è invisibile finché un corriere o un motore fiscale non cerca l’indirizzo.

Numeri di telefono, prefissi di accesso e conteggio delle cifre

I moduli di indirizzo di solito raccolgono un numero di telefono, e questo si comporta diversamente per paese per due motivi.

Il prefisso nazionale di accesso è la cifra iniziale usata per la composizione interna, e il formato internazionale la omette. Un modulo che memorizza ciò che l’utente ha digitato e antepone un codice paese produce un numero che non può essere composto. Accetta input nazionale, rimuovi il prefisso di accesso dove presente e memorizza il risultato in formato internazionale. Lo stesso principio è sviluppato in prefisso telefonico e abbinamento con la località.

Nemmeno la lunghezza è uniforme, quindi la validazione dovrebbe consultare il record del paese invece di presumere un’unica regola globale. Il codice paese è una terza variabile: un selettore che cambia il codice di composizione senza cambiare la lunghezza nazionale attesa accetterà serenamente un numero della dimensione sbagliata per il paese scelto. Mantieni il codice derivato dal paese selezionato e valida il numero nazionale da solo.

Che cosa si rompe quando indirizzi latini e CJK condividono un modulo?

È qui che la maggior parte dei moduli internazionali si arrende in silenzio. Gli indirizzi CJK sono concatenati senza spazi tra i livelli amministrativi e scritti dal più grande al più piccolo; la versione romanizzata va dal più piccolo al più grande e guadagna spazi. Un modulo che unisce i campi con una virgola e uno spazio e stampa il risultato su una riga sbaglia entrambe le versioni.

La larghezza dei caratteri aggiunge un secondo fallimento. Le cifre e le lettere latine digitate su una tastiera giapponese o cinese possono arrivare a larghezza piena, il che fallisce un controllo numerico anche se il valore è giusto. Normalizzare il testo prima di validarlo risolve, e l’ordine conta: normalizza prima, poi controlla.

L’ordine dei nomi è il terzo. I nomi scritti con il cognome per primo rompono qualsiasi routine che divide un valore in un nome e un cognome e lo ricompone nell’ordine opposto, e un nome che non si divide affatto in due parti non può essere rappresentato da una coppia di campi.

Quali classi di input rompono i validatori ingenui?

Tre, e nessuna è esotica.

  • Cifre e lettere a larghezza piena, che sullo schermo sembrano quasi identiche e non vengono riconosciute come cifre da un parser.
  • Segni diacritici e lettere speciali, dalla ß tedesca alle vocali nordiche e alle lettere turche senza punto, che contano diversamente in un limite di caratteri rispetto a una colonna limitata in byte e che una romanizzazione ben intenzionata riscrive senza chiedere.
  • Titoli onorifici e nomi composti da più parti, che appartengono al blocco dell’indirizzo anziché essere decorazione e che una suddivisione del nome in due campi non può contenere.

Testa tutte e tre con stringhe reali nella scrittura reale anziché con una traslitterazione. Un modulo che gestisce un nome romanizzato non è prova che gestisca i caratteri che un utente digiterà effettivamente.

Una passata manuale di venti minuti su tre paesi

I controlli automatizzati intercettano le regressioni; una passata manuale intercetta le ipotesi. Tre paesi che divergono su quasi ogni asse faranno emergere in venti minuti più di quanto faccia una settimana di unit test scritti da chi ha costruito il modulo.

  • Stati Uniti: codice postale dopo la città, una regione di due lettere, un codice di sole cifre con un’estensione facoltativa con trattino e un numero di telefono nazionale di dieci cifre. Conferma che la seconda riga dell’indirizzo sia onestamente facoltativa.
  • Germania: codice postale prima della città, solo cifre, e uno stato federale che la maggior parte degli utenti non digita mai perché il codice lo implica già. Conferma che un campo stato obbligatorio non sia un vicolo cieco per i residenti stranieri.
  • Brasile: un codice scritto con un trattino, un’abbreviazione dello stato di due lettere e un campo quartiere che molti modelli non hanno. Conferma che il quartiere abbia dove andare.

Poi ripeti cinque operazioni per ogni paese: inserisci un campione valido e conferma che si salvi; inserisci un codice postale di un’altra regione e osserva se qualcosa obietta; incolla un intero indirizzo nella riga uno e osserva che cosa accade; cambia il selettore del paese dopo aver digitato e osserva che cosa il modulo svuota; ricarica il record salvato e confrontalo con ciò che era stato inserito. Esegui l’intera passata una volta a larghezza telefono, perché metà di questi fallimenti appare solo quando il layout collassa. L’articolo sui casi di test del modulo di indirizzo al checkout estende questa passata al resto del flusso di checkout.

Dove questi moduli di solito si rompono

  • Un campo regione obbligatorio per ogni paese, compresi i paesi che non ne usano uno.
  • Un pattern di codice postale codificato sulla forma di un solo paese, più una lunghezza massima che tronca codici validi più lunghi.
  • Trasformazioni di maiuscole che riscrivono un codice valido solo così com’è stato inserito.
  • Un selettore del paese collocato dopo i campi dell’indirizzo, che costringe a compilare il modulo nell’ordine sbagliato.
  • Una seconda riga dell’indirizzo etichettata come campo appartamento quando è l’unico posto dove può andare un numero di edificio CJK.
  • Segnaposto usati come etichette, che scompaiono nel momento in cui inizia la digitazione e portano con sé il suggerimento sul formato.
  • Nessuno spazio per nomi di divisione lunghi, che sono ordinari in molti paesi e rari in quelli con cui un modulo viene di solito testato.

Passi successivi

Ordina la checklist per rischio anziché per campo. A ogni release, testa un campione valido e uno non valido per ogni paese supportato, conferma che l’obbligatorietà segua il paese, spingi ogni campo di testo libero al suo valore realistico più lungo e fai un ciclo salva-e-ricarica. Poi verifica anche il layout oltre al validatore, perché ordine dei campi, testo delle etichette, facoltatività e lunghezze massime sono ciò che l’utente incontra davvero.

Genera i campioni anziché digitarli a mano. Il generatore di indirizzi restituisce lo stesso record per la stessa chiave, il che mantiene stabile uno snapshot tra le esecuzioni, e la directory dei paesi ti dice quali divisioni e città dovrebbe usare un campione per un dato paese. I campioni digitati a mano vanno alla deriva, e la deriva resta invisibile finché un cambiamento nel modulo non li rompe.

Ogni valore descritto in questa pagina è inventato per i test software. Nessuno dei campioni rappresenta un indirizzo reale, e le regole nazionali qui citate descrivono formati anziché la residenza di qualcuno.

Continua a leggere

Guide su Generatore di indirizzi falsi