Come tester di software e ingegneri dell'automazione, spesso pensiamo al percorso felice: il percorso che l'utente probabilmente seguirà quando utilizzerà la nostra applicazione. Quando scriviamo i nostri test UI automatizzati vogliamo assicurarci di automatizzare quei percorsi felici, e quando scriviamo automazione API vogliamo verificare che ogni endpoint restituisca una risposta “200 OK” o una risposta di successo simile.
Ma è importante considerare i test negativi sia nei nostri test manuali che automatici. Ecco alcune ragioni per cui è fondamentale.
I Nostri Test Automatizzati Potrebbero Passare per le Ragioni Sbagliate
Quando ho iniziato a scrivere test UI automatizzati in JavaScript, non capivo il concetto di promise. Assumevo semplicemente che quando facevo una richiesta per localizzare un elemento, questa non avrebbe restituito l’elemento finché non fosse stato effettivamente trovato. Ero così entusiasta quando i miei test iniziavano a restituire l’esito verde “Passato” finché un collega non mi suggerì di provare a far fallire il test verificando un valore diverso. Il test passava comunque perché in realtà stava validando la promise esistente, che restituiva sempre “True”. Da quell’episodio ho imparato una lezione preziosa: non dare mai per scontato che i tuoi test automatizzati stiano funzionando correttamente solo perché si concludono con successo. Assicurati di eseguire degli scenari in cui i tuoi test dovrebbero fallire, e verifica che lo facciano sul serio. Solo così puoi essere sicuro di testare davvero ciò che credi di testare.
I Test Negativi Possono Mettere in Luce Errori Gestiti Impropriamente Che Potrebbero Influenzare un Utente
Nei test sulle API, qualsiasi errore lato client dovrebbe restituire una risposta di livello 400 piuttosto che un errore server di livello 500. Se esegui test negativi e scopri che una risposta 403 ora viene restituita come 500, questo può significare che il codice non sta più gestendo correttamente quel caso d’uso. Una risposta 500 dal server potrebbe impedire all’utente di ricevere le informazioni necessarie per correggere il proprio errore o, peggio ancora, potrebbe causare il crash dell’applicazione.
I Test Negativi Possono Individuare Vulnerabilità di Sicurezza
Tanto importante quanto assicurare che un utente possa accedere a un’applicazione è assicurarsi che un utente non possa accedere quando non dovrebbe. Se esegui solo un test di login con username e password validi, ti perdi quest’area cruciale! Mi è capitato di vedere situazioni dove un utente poteva accedere con qualsiasi password, situazioni dove si poteva accedere lasciando il campo password vuoto, o con username e password errati.
È inoltre fondamentale verificare che determinati utenti non abbiano accesso a parti dell’applicazione. Avere una pagina Admin ben testata e funzionante non significherebbe molto se un qualsiasi utente casuale potesse accedervi.
I Test Negativi Mantengono il Database Pulito
Come ho menzionato nel Capitolo 12, avere dati validi e di qualità nel tuo database aiuterà a mantenere la tua applicazione sana. Dati che non rispettano le aspettative possono causare il crash delle pagine web, impedirne il caricamento, oppure far visualizzare le informazioni in maniera errata. Più test negativi puoi effettuare sui tuoi input, maggiore sarà la possibilità di garantire la presenza di dati validi.
Per ogni campo di input di cui sono responsabile nei test, mi piace sapere esattamente quali caratteri sono ammessi. In questo modo posso eseguire una serie di test negativi per assicurarmi che le voci con caratteri proibiti vengano rifiutate.
A Volte Gli Utenti Scelgono il Percorso Negativo
È molto facile, soprattutto con una nuova funzionalità da lanciare in fretta per rispettare una scadenza, dimenticare di testare i percorsi in cui l’utente clicca su Annulla o Elimina. Ma gli utenti lo fanno continuamente; pensa a tutte le volte in cui hai pensato di completare un acquisto online e poi hai cambiato idea, rimuovendo un articolo dal carrello. Immagina la tua frustrazione se non potessi rimuovere qualcosa dal carrello o se il pulsante Annulla non resettasse un modulo per permetterti di ripartire da zero. L’esperienza utente in quest’area è altrettanto fondamentale quanto nel percorso felice.
Il testing del software consiste nel cercare comportamenti inattesi per trovarli prima che li trovi l’utente. Quando i test negativi sono combinati con quelli del percorso felice, possiamo garantire che gli utenti non avranno sgradite sorprese.
Se vuoi ottimizzare ancora di più i tuoi processi di test, considera l'integrazione di un tool di gestione database di alto livello per gestire anche le esigenze di dati più complesse.
Il Libro "The Complete Software Tester"
Quando ho scoperto la mia passione per il software testing nel 2009, volevo imparare tutto quello che potevo, ma trovai pochissimi libri che potessero insegnarmi qualcosa. Finì che imparai attraverso tentativi ed errori, leggendo blog e parlando coi colleghi. Oggi ci sono ottimi libri su aree specifiche del software testing, come il testing esplorativo, l’agile testing e l’automazione, ma non sono a conoscenza di nessun libro che voglia essere un riferimento completo sul testing.
Ho scritto The Complete Software Tester perché volevo offrire sia ai tester alle prime armi che a quelli esperti idee e strumenti per essere il più efficaci possibile. Per suggerimenti rapidi su QA e altre raccomandazioni di libri, iscriviti alla newsletter The QA Lead.
Lettura correlata: CHE COS'È ZEPHYR SCALE?
Elenco correlato di strumenti:
Da vedere anche:
