Iniziamo dalle basi. Esplorare le due modalità di test generali e i tre tipi comuni di automazione dei test.
Ci siamo passati tutti: cos'è un meme ricorrente di programmazione che accade troppo spesso nella vita reale?
Questo meme riassume abbastanza bene: ogni cassetto funziona perfettamente singolarmente, ma in combinazione con l'altro cassetto si bloccano a vicenda e non funzionano. Vuoi che entrambi i cassetti funzionino bene l'uno con l'altro e contemporaneamente siano azionabili.
Applicalo allo sviluppo web: hai scritto alcuni test, magari hai persino raggiunto il 100% di copertura, ma la tua applicazione deve comunque funzionare una volta che le altre parti vengono inserite. Le unità possono funzionare bene da sole, ma non in relazione tra loro. Scrivere alcuni test è fondamentale, ma è solo una parte della configurazione di test ideale per il tuo progetto. Come primo passo, devi determinare quali aspetti della qualità dell'applicazione devi garantire e come puoi ottenerlo.
In breve, ti serve un piano prima di iniziare a scrivere il codice di test effettivo. Per affrontare l'argomento dei test pratici, iniziamo da zero e rispondiamo a due domande di base:
- Come vuoi eseguire il test?
- Che cosa vuoi verificare?
Questo articolo si concentra sulle cose generali che devi sapere per rispondere alla prima domanda. Per partire da un terreno comune, impariamo innanzitutto quali sono le modalità di test e poi concentriamoci sui tipi di test comuni. Negli articoli successivi risponderemo alla seconda domanda, combineremo le risposte e troveremo la strategia di test più adatta al tuo progetto. Iniziamo! 🙌
Inizia dalle basi: modalità di test generali
Quando si risponde alla domanda su come eseguire i test, il primo punto da chiarire è molto astratto. Dovresti eseguire la verifica manualmente o lasciare che sia un computer a prendersi il controllo? Tuttavia, è importante non cadere nel pensiero binario.
Confronto tra test manuali e test automatici
Se chiedi ai tecnici del controllo qualità di definire i test, probabilmente li suddivideranno prima in due "modalità":
- Test manuali. Si tratta di un metodo di test tipico condotto da persone reali. Un tecnico addetto al controllo qualità fa clic sull'applicazione, controlla se funziona e, allo stesso tempo, prova a interromperla. Il modo più comune è quello dei test esplorativi, in cui il tecnico analizza l'applicazione utilizzando le sue conoscenze in relazione a un percorso o una lista di controllo predefiniti.
- Test automatici. Si tratta di un tipo di test condotto da un computer. I tecnici del controllo qualità implementano questa funzionalità per automatizzare i test ripetitivi e monotoni.
Questa serie di guide si concentrerà principalmente sui test automatici. Tuttavia, non dovresti concentrarti su un solo modo di eseguire i test. Anche se l'automazione consente di risparmiare molto tempo e impegno, i test umani e manuali avranno sempre un ruolo vitale. Piuttosto, l'automazione dei test dovrebbe consentire alle persone di concentrarsi sui test esplorativi e sul problem solving creativo. Ad esempio, garantire la qualità delle esperienze utente o proteggere la logica di business ad alto rischio. In altre parole, l'automazione ti copre le spalle. ❤️
Casella opaca e trasparente
Quindi, hai definito le modalità generali di test. Tuttavia, questo non è ancora abbastanza. Per pianificare la strategia di test, c'è un'altra domanda a cui rispondere: dovresti sapere come funziona la tua applicazione in dettaglio o è meglio eseguire dei test senza questa conoscenza? A seconda della risposta, sono disponibili due procedure tra cui scegliere per ricavare e selezionare gli scenari di test:
- Test della scatola opaca (o test della scatola nera). Si basa sull'analisi dei requisiti funzionali o non funzionali di un componente o di un sistema (specifiche) senza considerare la sua struttura interna.
- Il test della casella bianca (o "test white box") è una procedura che tiene conto della struttura interna di tale casella. In altre parole, come funziona la tua applicazione in background.
Entrambe le procedure possono essere applicate ai test manuali e automatici. Tuttavia, alcuni aspetti delle modalità di test generali potrebbero essere incentrati maggiormente su una delle due. Ne parleremo più avanti. Per ora, analizziamo ulteriormente i tipi di automazione dei test.
Tipi di automazione dei test: come vuoi eseguire i test?
Man mano che ti avvicini alla risposta alla domanda "come", hai già deciso di fare dei test manuali. Tuttavia, scegliere e applicare tipi di automazione dei test è un po' più impegnativo. I tipi di test dell'automazione sono strettamente correlati alle metriche che vuoi creare nei tuoi progetti. Diamo un'occhiata più da vicino a quelli più importanti.
Come illustrato nel meme menzionato in precedenza, hai già trovato due tipi: test delle unità e test di integrazione. Il test end-to-end è il terzo importante da considerare. Ma non è tutto. Diamo un'occhiata in dettaglio.
Test delle unità
Il test delle unità è un tipo di test in cui le parti o unità minori testabili di un'applicazione vengono testate individualmente e in modo indipendente per verificarne il corretto funzionamento. L'ambito di queste unità può variare da funzioni, classi o interfacce a servizi o componenti completi. Gli attributi principali sono la velocità di esecuzione, l'isolamento e la comodità di gestibilità. Per informazioni più dettagliate sulla verifica delle unità, consulta questa guida al test delle unità.
Test di integrazione
I test di integrazione si concentrano sulle interazioni tra componenti o sistemi. In altre parole, sul loro funzionamento in sinergia. Esempi tipici di test di integrazione sono i test delle API o dei componenti.
Test end-to-end
Questi test vengono spesso chiamati test dell'interfaccia utente e questo nome spiega la loro funzione ancora meglio. Questi test interagiscono con l'interfaccia utente della tua applicazione, compreso lo stack completo, e testano l'applicazione da un'estremità all'altra.
Assomigliano a un test di sistema se si fa riferimento alla teoria della garanzia di qualità. Questi test simulano un utente reale e le sue interazioni. I test end-to-end richiedono più tempo di esecuzione perché coinvolgono l'intero sistema e più runtime richiede una maggiore potenza di calcolo. Di conseguenza, questo sforzo aggiuntivo comporta un aumento dei costi di manutenzione.
Test dell'interfaccia utente visiva
Una sottocategoria interessante di test dell'interfaccia utente è quella dei test visivi. Questi test sono test end-to-end estesi che forniscono un mezzo per verificare l'output visibile di un'applicazione. Questo test acquisisce uno screenshot dopo una modifica e un altro contenente lo "status quo" (o file finale), quindi fornisce i risultati a un revisore affinché li controlli e controlli. In altre parole, aiuta a trovare "bug visivi" nell'aspetto di una pagina, al di là di bug puramente funzionali e non esplicitamente scritti in asserzioni.
Analisi statica
C'è un'altra cosa da introdurre: l'analisi statica. Non è un tipo di test come i libri di testo. Tuttavia, sarà un aspetto essenziale delle strategie di controllo qualità in seguito. Puoi immaginarlo come una funzione di controllo ortografico: esegue la scansione del codice per rilevare difetti più significativi ed errori di sintassi senza eseguire il programma, rilevando così problemi di stile del codice. Questa semplice misura può prevenire molti bug. Questo è un buon punto per saperne di più sull'analisi statica, se vuoi conoscerla in modo più dettagliato.
Test in tutte le forme: come funzionano insieme?
Durante la ricerca di risposte a tutte queste domande, potresti trovare una possibile soluzione in alcune analogie. In particolare, nel web e nelle community di test, gli sviluppatori tendono a utilizzare queste analogie per darti un'idea del numero di test di un determinato tipo che dovresti utilizzare.
Le cinque strategie più comuni mostrate in questa immagine sono le più comuni:
- Piramide di prova
- Diamante di prova
- Cono di ghiaccio di prova (noto anche come pizza di prova)
- Honeycomb di prova
- Trofeo di prova
Queste sono davvero molte informazioni da elaborare. Come puoi decidere una strategia di test delle corrispondenze basata su tutti questi fattori? Non preoccuparti, ci pensiamo noi. Nel prossimo articolo, illustreremo queste diverse strategie in modo più dettagliato e spiegheremo come scegliere quella più adatta al tuo progetto. Continua a seguirci. 🔥