Il mio approccio ai test della GUI si sta evolvendo, così come il consenso del settore. Ma penso che alcune tecniche chiave stiano iniziando a emergere.
Uso una o più di queste tecniche, a seconda della situazione (ad es. Che tipo di GUI è, quanto velocemente deve essere costruita, chi sarà l'utente finale, ecc.).
Test manuale. Hai sempre la GUI in esecuzione mentre lavori sul codice e assicurati che sia sincronizzata con il codice. È possibile testare e testare nuovamente manualmente la parte su cui si lavora mentre ci si lavora, passando dal codice all'applicazione in esecuzione. Ogni volta che completi un lavoro significativo, esegui un test generale dell'intero schermo o dell'area dell'applicazione, per assicurarti che non vi siano regressioni.
Test unitari. Scrivi test per funzioni o piccole unità di comportamento della GUI. Ad esempio, i tuoi grafici potrebbero dover calcolare diverse sfumature di un colore in base a un colore "base". È possibile estrarre questo calcolo in una funzione e scrivere un test unitario per essa. È possibile cercare una logica come questa nella GUI (in particolare la logica riutilizzabile) ed estrarla in funzioni discrete, che possono essere più facilmente testate dall'unità. Anche comportamenti complessi possono essere estratti e testati in questo modo - ad esempio, una sequenza di passaggi in una procedura guidata può essere estratta in una funzione e un test di unità può verificare che, dato un input, venga restituito il passaggio corretto.
Esplora componenti. Si crea una schermata 'explorer' il cui unico ruolo è mostrare tutti i componenti riutilizzabili che compongono la GUI. Questa schermata offre un modo rapido e semplice per verificare visivamente che ogni componente abbia l'aspetto e la sensazione corretti. Il componente explorer è più efficiente che passare manualmente attraverso l'intera applicazione, perché A) devi verificare ogni componente una sola volta, e B) non devi navigare in profondità nell'applicazione per vedere il componente, puoi semplicemente visualizzare e verificalo immediatamente.
Test di automazione. Scrivi un test che interagisce con lo schermo o il componente, simulando clic del mouse, immissione di dati, ecc., Affermando che l'applicazione funziona correttamente date queste manipolazioni. Questo può essere utile come test di backup aggiuntivo, per acquisire potenziali bug che altri test potrebbero perdere. Tendo a riservare i test di automazione per le parti della GUI che sono più soggette a rotture e / o altamente critiche. Parti in cui voglio sapere il più presto possibile se qualcosa si è rotto. Ciò potrebbe includere componenti interattivi altamente complessi che sono vulnerabili alla rottura o importanti schermate principali.
Test diff / snapshot. Scrivi un test che acquisisce semplicemente l'output come screenshot o come codice HTML e lo confronta con l'output precedente. In questo modo, sarai avvisato ogni volta che l'output cambia. I test diff possono essere utili se l'aspetto visivo della tua GUI è complesso e / o soggetto a modifiche, nel qual caso desideri un feedback rapido e visivo sull'impatto che una determinata modifica ha sulla GUI nel suo insieme.
Piuttosto che usare pesantemente ogni possibile tipo di test, preferisco scegliere la tecnica di test in base al tipo di cosa su cui sto lavorando. Quindi in un caso estrarrò una funzione semplice e la proverò in unità, ma in un altro caso aggiungerò un componente a Esplora componenti, ecc. Dipende dalla situazione.
Non ho trovato che la copertura del codice sia una metrica molto utile, ma altri potrebbero averne trovato un uso.
Penso che la prima misura sia il numero e la gravità dei bug. La tua prima priorità è probabilmente avere un'applicazione che funzioni correttamente. Se l'applicazione funziona correttamente, dovrebbero esserci pochi o nessun bug. Se ci sono molti o gravi bug, allora presumibilmente, non stai testando o i tuoi test non sono efficaci.
Oltre a ridurre i bug, esistono altre misure come prestazioni, usabilità, accessibilità, manutenibilità, estensibilità, ecc. Queste differiranno, a seconda del tipo di applicazione che stai costruendo, dell'azienda, dell'utente finale, ecc.
Tutto questo si basa sulla mia esperienza personale e sulla mia ricerca, nonché su un ottimo articolo sui test dell'interfaccia utente di Ham Vocke .