Quando si crea un software, che si tratti di un sito Web, di un'app mobile o di un servizio Web, c'è un elemento che molti clienti sottovalutano. Un buon prodotto si ottiene avendo un buon team di sviluppo, un buon PM e sicuramente la giusta tecnologia aiuta, ma saper eseguire i test case corretti facilita anche il lavoro in fase di test.
Siamo d'accordo sul fatto che sia quasi impossibile testare tutto, tuttavia può certamente essere affrontato utilizzando i diversi tipi di metodi di prova a seconda dello scopo per cui sono creati.
Per scoprire quale tipo utilizzare e per quale scopo, è necessario considerare tutti i diversi tipi di test e selezionare il metodo più adatto.
I tipi più comuni di metodologie di test sono l'interfaccia utente, la funzionalità, l'integrazione, l'usabilità, le prestazioni, la sicurezza del database e il test di accettazione dell'utente. Sebbene alcune di queste aree possano sovrapporsi ad altre, in generale, ogni tipo di test case ha la propria categoria e viene utilizzato per testare una determinata area specifica del software.
Test di interfaccia utente
I test dell'interfaccia utente vengono utilizzati per verificare che parti specifiche dell'interfaccia utente grafica (GUI) funzionino come previsto. Questi tipi di test case possono essere utilizzati per identificare errori grammaticali e di ortografia, collegamenti e qualsiasi altro elemento con cui l'utente vede o con cui interagisce.
Questi test sono di solito scritti dal team di test, ma il team di progettazione può anche essere coinvolto in quanto hanno più familiarità con l'interfaccia. I test case dell'interfaccia utente sono tipi di test che in genere vengono fatti sui browser. I browser tendono a eseguire il rendering in modo diverso e i test dell'interfaccia utente permettono di garantire che l'applicazione si comporti in modo coerente sui diversi browser.
Questi test case verranno eseguiti una volta completata la fase di sviluppo.
Esempio: Come riesco a vedere il mio sito web si uno schermo piccolo come il cellulare o su un table? Cambia qualcosa se lo schermo è un portrait o in landscape?
Test di Funzionalità
I test di funzionalità vengono utilizzati per scoprire se l'interfaccia di un'applicazione funziona con il resto del sistema e i relativi utenti. I test identificano l'esito positivo o negativo delle funzioni che il software dovrebbe eseguire.
I casi sono un tipo di test black-box che derivano dalle specifiche o storie utente del software in esame.
Ciò consente di eseguire i test senza bisogno di accedere alle strutture interne del software in fase di test. Il team che scrive questi test case sono in genere i componenti del team di analisi o di sviluppo stessi perché l'attività rientra nei normali processi di controllo qualità. Possono essere scritti ed eseguiti non appena lo sviluppo rende disponibile una prima funzione per il test. Per facilitare lo sviluppo, possono essere scritti prima del codice, se necessario.
Come specificato in precedenza, possono essere scritti ed eseguiti non appena è fattibile farlo e dovrebbero essere ripetuti ogni volta che vengono aggiunti aggiornamenti, o ogni volta che se ne rende necessario.
Esempio: La conferma di un utente può caricare correttamente una foto del profilo.
Test di Integrazione
I test di integrazione hanno lo scopo di determinare il modo in cui i diversi moduli interagiscono tra loro. Lo scopo principale dei test di integrazione è garantire che le interfacce tra i diversi moduli funzionino correttamente.
Il team di testing identifica quali aree devono essere sottoposte a test di integrazione, mentre il team di sviluppo fornirà input su come devono essere scritti tali test. Uno di questi due team può lavorare per scrivere i casi.
Verificano che anche i moduli che già lavorano singolarmente siano in grado di lavorare insieme.
Esempio: Controllo del collegamento tra la home page e la sezione "preferiti". Quando si aggiunge un elemento come "preferito", dalla home page, viene visualizzato nella sezione "Preferiti"?
Test di Usabilità
I test di usabilità possono spesso essere definiti "attività" o "scenari". Anziché fornire istruzioni dettagliate per l'esecuzione del test, al tester viene presentato uno scenario o un'attività di alto livello da completare.
I test di usabilità consentono di identificare il modo in cui un utente si avvicina e utilizza l'applicazione in modo naturale. Aiutano a guidare il tester attraverso varie situazioni e flussi. Non è necessaria alcuna conoscenza preventiva dell'applicazione.
Questi test vengono in genere preparati dal team di progettazione insieme al team di testing. I test di usabilità devono essere eseguiti prima del test di accettazione utente.
Esempio: L'utente può aggiungere con successo più di un articolo al carrello? Com'è questa esperienza?
Test sulle Prestazioni
I test sulle prestazioni convalidano i tempi di risposta e l'efficacia complessiva di un'applicazione. Vale a dire, dopo l'esecuzione di un'azione, quanto tempo ci vuole per il sistema di rispondere? I test sulle prestazioni devono avere un set molto chiaro di criteri di esito positivo.
Il team di testing in genere scrive questi test e sono spesso automatizzati. Un'applicazione di grandi dimensioni può avere centinaia o migliaia di test delle prestazioni. L'automazione di questi test e l'esecuzione di essi spesso consente di esporre scenari in cui l'applicazione non viene eseguito al livello previsto.
I test delle prestazioni consentono di comprendere le prestazioni dell'applicazione nel mondo reale. Questi casi possono essere scritti dopo che il team di testing ha ricevuto i requisiti di prestazioni dal team del prodotto. Tuttavia, molti problemi di prestazioni possono essere identificati manualmente senza aver specificato i requisiti.
Esempio: Quanto tempo è necessario per il sistema per autenticare un utente e caricare la pagina successiva? Quando più persone accede contemporaneamente, l'applicazione rimane stabile?
Test sul Database
I test sul database esaminano ciò che accade dietro le quinte. L'interfaccia utente è pulita, e tutto sembra funzionare... ma dove stanno andando tutti questi dati?
Per scrivere questi test, è necessario avere una conoscenza approfondita dell'intera applicazione, delle tabelle di database e delle stored procedure. Il team di testing spesso utilizza query SQL per sviluppare test case di database.
I test del database vengono utilizzati per verificare che lo sviluppatore abbia scritto il codice in modo da archiviare e gestire i dati in modo coerente e sicuro.
Esempio: Consideriamo la creazione di un profilo utente. Quando l'utente invia il proprio profilo, è necessario testare quanto segue per quanto riguarda il database.
L'applicazione ha archiviare i dati di input nel database?
Sono stati persi dati nel processo?
I dati parzialmente eseguiti non devono essere stati salvati.
Test di Sicurezza
I test di sicurezza consentono di garantire che l'applicazione limiti le azioni e le autorizzazioni, se necessario. Questi test vengono scritti per proteggere i dati quando e dove devono essere salvaguardati.
I test di sicurezza vengono utilizzati per eseguire test di penetrazione e altri tipi di test basati sulla sicurezza.
L'autenticazione e la crittografia sono spesso l'obiettivo principale nei test case di sicurezza. Il team di sicurezza (se presente) è di solito responsabile della scrittura e della conduzione di questi test.
Esempio: Se un utente raggiunge il numero X di tentativi di accesso non riusciti, l'account viene bloccato? Un utente è in grado di caricare i dati senza aver effettuato l'accesso?
Test di Accettazione Utente
I test di accettazione utente o i test "UAT" aiutano il team a testare l'ambiente di test di accettazione utente. Questi test devono essere ampi, coprendo tutte le aree dell'applicazione.
Lo scopo di questi test non è trovare bug (si spera che siano già stati trovati e corretti nei test precedenti), ma verificare che l'applicazione sia accettabile per l'utente. Quindi, quando eseguono un test, i risultati di quel test e l'esperienza di quel test sono accettabili?
Dal momento che molti altri tipi di test sono già stati fatti al momento dell'avvio di UAT, l'attenzione non è tanto su un livello granulare, ma più sul quadro generale. I test case di accettazione utente vengono utilizzati dall'utente finale o dal client e preparati dal team di testing o dal product manager. Questa è forse la fase più importante di test in quanto è l'ultimo passo prima di entrare in produzione.
Esempio: Se si testa, ad esempio, un'applicazione di gestione delle foto per uno studio fotografico, il cliente (l'utente) deve verificare di essere in grado di caricare e gestire le proprie foto in modo da adattarlo alle esigenze aziendali.
Comments