Il test dei campi di selezione del paese tende a fermarsi alla prima asserzione che l’elenco venga renderizzato. Il controllo sembra banale — un elenco di paesi, un clic, un valore — e proprio quell’aspetto è il motivo per cui i suoi difetti sopravvivono così a lungo.
Il controllo è una piccola interfaccia sopra un grande set di dati, e ogni guasto interessante vive nell’interazione tra i due. Questo articolo copre le forme che il controllo può assumere, i diversi tipi di ricerca che le persone si aspettano da esso, le regole di ordinamento facili da sbagliare e il percorso da tastiera che di solito è l’ultima cosa che chiunque testa.
Quali forme assume il controllo?
Almeno quattro, e falliscono in modo abbastanza diverso che un test scritto per una non dimostra nulla sulle altre. C’è l’elenco chiuso che mostra ogni opzione, l’elenco ricercabile che filtra mentre l’utente digita, il selettore gerarchico che chiede una regione prima di un paese, e il completamento automatico che accetta testo libero e lo risolve in seguito.
L’ultimo è quello importante. Una volta che il controllo accetta testo libero, non è più un selettore; è un problema di corrispondenza con un’interfaccia sopra, e le modalità di guasto passano da “l’opzione non è stata offerta” a “l’opzione è stata offerta e qualcos’altro è stato memorizzato”.
Testa ogni forma che il tuo prodotto spedisce davvero, e testa la transizione tra esse. Un controllo che passa da un elenco semplice a un elenco ricercabile oltre un certo numero di opzioni viene esercitato al confine solo da un test che atterra intenzionalmente su entrambi i lati.
Cosa significa ricerca in questo controllo?
Diverse cose differenti, e gli utenti non le distinguono quando digitano.
| Cosa digita l’utente | Cosa si aspetta | Cosa succede spesso |
|---|---|---|
| Le prime lettere di un nome | Un elenco filtrato, nell’ordine proprio dell’elenco | Il filtro funziona, l’ordine deriva |
| Un codice invece di un nome | Il paese con quel codice | I codici non vengono affatto cercati |
| Una forma breve familiare | Il paese, una volta | Non esiste alcun alias, l’elenco è vuoto |
| Un nome con accento digitato senza accento | Lo stesso paese | Il confronto è byte per byte |
Ogni riga è un’asserzione separata. Ricerca per nome, ricerca per codice, ricerca per alias e ricerca con una grafia che differisce solo per diacritici o maiuscole sono quattro funzionalità, e spedirne una non è prova sulle altre tre.
C’è anche la questione di cosa succede quando la ricerca non trova nulla. Un elenco vuoto senza spiegazione viene letto come un controllo rotto, e la mossa successiva dell’utente di solito è ridigitare la stessa cosa leggermente diversa, il che produce lo stesso elenco vuoto.
Perché l’ordine di ordinamento è così facile da sbagliare?
Ordinare un elenco di paesi sembra un compito di alfabetizzazione finché l’elenco non lascia la scrittura latina, e anche al suo interno la questione di quale articolo o particella guidi un nome cambia la risposta.
Tre convenzioni competono. Ordinare per un nome visualizzato dà l’ordine che un lettore si aspetta per i nomi che può vedere. Ordinare per un codice sottostante dà un ordine che è stabile ma privo di significato per un utente, il che si manifesta come un elenco che sembra rimescolato vicino all’inizio. Ordinare per un identificatore interno dà un ordine che cambia ogni volta che i dati sottostanti cambiano, il che si manifesta come un elenco che si comporta diversamente tra le release senza che nessuno abbia toccato il codice di ordinamento.
Qualunque tu scelga, l’ordine deve essere calcolato con le regole di collazione della lingua visualizzata, non con un confronto byte predefinito. Un elenco corretto in una lingua e visibilmente sbagliato in un’altra è la firma di un confronto byte che indossa un’etichetta di ordinamento.
Due ulteriori dettagli meritano un test esplicito. La posizione di un paese il cui nome inizia con un carattere che ha diversi ordinamenti validi, e la posizione di un paese di cui si parla di solito con un articolo iniziale. Entrambi sono il tipo di caso in cui il presupposto di un implementatore è invisibile finché qualcuno di quel mercato non legge l’elenco.
Le opzioni restano coerenti quando qualcos’altro cambia?
Un controllo paese raramente è da solo in un formulario. Di solito sta accanto a una lingua, una valuta, un campo telefono o un blocco indirizzo, e quei campi spesso dipendono dal valore del paese.
Il test che trova difetti qui è un test di ricalcolo. Cambia il paese e verifica cosa succede a ogni campo dipendente: viene svuotato, ricalcolato, lasciato intatto o convalidato contro il nuovo paese? Ognuna di queste è una scelta difendibile e nessuna due di esse produce la stessa esperienza utente, quindi la scelta dovrebbe essere dichiarata invece che scoperta.
Il caso più difficile è un campo dipendente che è stato compilato prima che fosse scelto il paese. Se il paese cambia in seguito, un valore valido per la selezione precedente può ora non esserlo, e il controllo deve decidere se conservarlo, segnalarlo o scartarlo. Compilare prima il campo dipendente e poi cambiare il paese è un test in due passaggi che la maggior parte delle suite non esegue mai.
Per gli sviluppatori: testare il percorso da tastiera come percorso di prima classe
L’interazione con il mouse copre i casi ovvi e manca quelli che contano per chi non usa un mouse. Un passaggio completo esercita la digitazione nel controllo per filtrare, lo spostamento tra i risultati senza lasciare il campo e la conferma di una scelta usando solo la tastiera.
Il comportamento dello screen reader merita un controllo a parte, perché un elenco filtrato visivamente e un elenco annunciato come filtrato sono esperienze diverse. Se il numero di risultati è mostrato visivamente ma non annunciato, l’utente non ha modo di distinguere un filtro ristretto da uno vuoto.
Poi mantieni onesti i dati di test. Le tabelle di alias, i nomi visualizzati e l’input digitato in una suite di test dovrebbero essere ovviamente inventati, così che nessuno in seguito scambi una fixture per una voce reale, e la directory dei paesi e delle regioni è il posto migliore in cui guardare quando vuoi vedere come nomi e codici vengono presentati insieme. Una singola pagina di paese come la voce del Brasile è un riferimento utile per il livello di dettaglio che un paese porta al di fuori del controllo.
Ogni nome di opzione, alias ed esempio digitato in questo articolo è inventato per illustrazione. Le voci di elenco usate qui sono materiale di test sintetico, non una picklist reale, e nessuna fixture mostrata dovrebbe essere trattata come il nome effettivo di un paese o come prova di come si comporti un particolare prodotto.
Passi successivi
Scrivi quattro test, uno per tipo di ricerca, ed eseguili contro qualunque forma di controllo tu spedisca. Poi ripeti l’intero passaggio con il mouse scollegato. La guida a paese e lingua spiega a quale livello di una schermata appartenga davvero il controllo, e la guida agli scenari di indirizzo transfrontaliero mostra cosa succede quando il valore di questo controllo non è l’unico paese della transazione.