Tre tipi comuni di automazione dei test

Iniziamo dalle basi. Esplorazione delle due modalità di test generali e di tre tipi comuni di automazione dei test.

Ci è capitato a tutti: qual è un meme ricorrente sul codice che si verifica fin troppo spesso nella vita reale?

Un armadio con due cassetti che non puoi aprire contemporaneamente.

Questo meme lo riassume molto bene: ogni cassetto funziona perfettamente singolarmente, ma in combinazione con l'altro cassetto si bloccano a vicenda e non funzionano. Entrambi i cassetti devono funzionare bene tra loro ed essere utilizzabili contemporaneamente.

La stessa credenza, ma con due cassetti che puoi aprire contemporaneamente.

Applica questo principio allo sviluppo web: hai scritto alcuni test, forse hai anche raggiunto il 100% di copertura dei test, ma la tua applicazione deve comunque funzionare quando le altre parti vengono inserite. Le unità potrebbero funzionare bene da sole, ma non in relazione l'una all'altra. Scrivere alcuni test è fondamentale, ma rappresenta solo una parte della configurazione di test ideale per il tuo progetto. Come primo passaggio, devi determinare quali parti della qualità dell'applicazione devi garantire e come puoi farlo.

In parole povere, devi avere un piano prima di iniziare a scrivere il codice di test effettivo. Per affrontare l'argomento su come eseguire 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 informazioni generali che devi conoscere per rispondere alla prima domanda. Per partire da un punto comune, scopriamo prima quali sono le modalità di test esistenti e poi concentriamoci sui tipi di test più 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 rispondi alla domanda su come eseguire il test, il primo punto da chiarire è molto astratto. È consigliabile effettuare il test manualmente o lasciare che sia un computer a occuparsi di tutto? Tuttavia, è importante non cadere in un pensiero binario.

Test manuale e test automatico

Se chiedi agli addetti al controllo qualità di definire i test, probabilmente li suddivideranno prima in due "modalità":

  • Test manuale. Si tratta di un metodo di test tipico condotto da persone reali. Un ingegnere di controllo qualità fa clic sull'applicazione, controlla se funziona e, allo stesso tempo, cerca di romperla. Il modo più comune è il test esplorativo, in cui l'ingegnere esamina l'applicazione utilizzando le sue conoscenze in base a un percorso o un elenco di controllo predefinito.
  • Test automatici. Si tratta di un tipo di test condotto da un computer. Gli addetti al controllo qualità la implementano 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 testare. Anche se l'automazione consente di risparmiare molto tempo e fatica, le persone e i test manuali avranno sempre un ruolo fondamentale. L'automazione dei test dovrebbe invece consentire alle persone di concentrarsi sui test esplorativi e sulla risoluzione di problemi creativi. Ad esempio, garantire la qualità delle esperienze utente o proteggere la logica aziendale ad alto rischio. In altre parole, l'automazione ti offre supporto. ❤️

Scatola opaca e scatola trasparente

Hai quindi definito le modalità generali di test. Tuttavia, non è ancora sufficiente. Per pianificare la strategia di test, devi rispondere a un'altra domanda: devi sapere come funziona la tua applicazione o è meglio eseguire il test senza queste conoscenze? A seconda della risposta, puoi scegliere tra due procedure per dedurre e selezionare gli scenari di test:

  • Test scatola opaca (o test scatola nera). Si basa sull'analisi dei requisiti (specifiche) funzionali o non funzionali di un componente o di un sistema senza considerare la relativa struttura interna.
  • I test clear box (o test white box) sono una procedura che prende in considerazione la struttura interna della casella in questione. In altre parole, come funziona la tua applicazione.

Entrambe le procedure possono essere applicate ai test manuali e automatici. Tuttavia, alcuni aspetti delle modalità di test generali potrebbero concentrarsi maggiormente su uno dei due, come vedremo più avanti. Per il momento, suddividiamo ulteriormente l'automazione dei test in tipi.

Tipi di automazione dei test: come vuoi eseguire il test?

Man mano che ti avvicini alla risposta alla domanda "come", hai già deciso di eseguire alcuni test manuali. Tuttavia, la scelta e l'applicazione dei tipi di automazione dei test è un po' più complessa. I tipi di test di 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 sopra citato, ne hai già incontrati due: test di unità e test di integrazione. Il terzo aspetto importante da considerare è il test end-to-end. Ma non è tutto. Diamo un'occhiata più da vicino.

Test delle unità

I test di unità sono un tipo di test in cui parti o unità minori di un'applicazione vengono testate singolarmente 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. I loro attributi principali sono la velocità di esecuzione, l'isolamento e la facile manutenibilità. Per approfondire i test di unità, consulta questa guida sui test di unità.

Una rappresentazione semplificata dei test di unità che mostra input e output.

Test di integrazione

I test di integrazione si concentrano sulle interazioni tra componenti o sistemi. In altre parole, sulla loro interoperabilità. Esempi tipici di test di integrazione sono i test API o dei componenti.

Una rappresentazione semplificata dei test di integrazione che mostra come due unità lavorano insieme.

Test end-to-end

Questi test sono spesso chiamati test UI e questo nome spiega ancora meglio la loro funzione. Questi test interagiscono con l'interfaccia utente dell'applicazione, incluso lo stack completo dell'applicazione, e testano l'applicazione da un capo all'altro.

Una rappresentazione semplificata dei test end-to-end che mostra un computer come un robot che esamina un flusso di lavoro.

Assomigliano a un test di sistema se fai riferimento alla teoria del controllo 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 un tempo di esecuzione maggiore richiede una maggiore potenza di calcolo. Di conseguenza, questo impegno aggiuntivo comporta costi di manutenzione più elevati.

Test visivo dell'interfaccia utente

Una sottocategoria interessante dei test dell'interfaccia utente è costituita dai test visivi. Si tratta di test end-to-end estesi che forniscono un mezzo per verificare l'output visibile di un'applicazione. Questo tipo di test acquisisce uno screenshot dopo una modifica e un altro contenente lo "status quo" (o file di riferimento), poi fornisce i risultati a un revisore umano per la loro ispezione e verifica. In altre parole, aiuta a trovare "bug visivi" nell'aspetto di una pagina, oltre a bug puramente funzionali e non esplicitamente registrati nelle asserzioni.

Analisi statica

C'è un'altra cosa da introdurre qui: l'analisi statica. Non si tratta di un tipo di test nel senso tradizionale. Tuttavia, in un secondo momento sarà un aspetto essenziale nelle strategie di controllo qualità. Puoi immaginarlo come una funzione di controllo ortografico: analizza il codice alla ricerca di difetti e errori di sintassi più significativi senza eseguire il programma, rilevando così i problemi di stile del codice. Questa semplice misura può prevenire molti bug. Questo è un buon punto di partenza per saperne di più sull'analisi statica.

Test in tutte le forme: come funziona tutto questo?

Mentre cerchi le risposte a tutte queste domande, potresti trovare una possibile soluzione in alcune analogie. Nello specifico, nelle community web e di test, gli sviluppatori tendono a utilizzare queste analogie per darti un'idea di quanti test dovresti utilizzare e di quale tipo.

Molte forme, come piramidi, diamanti, coni gelato, favi e un trofeo, che rappresentano le strategie di test.

Le cinque strategie mostrate in questa immagine sono le più comuni:

  • Piramide di test
  • Test Diamond
  • Test del cono gelato (noto anche come Test della pizza)
  • Test Honeycomb
  • Trofeo di test

Si tratta di un numero davvero elevato di informazioni da elaborare. In base a tutto questo, come dovresti decidere una strategia di test di corrispondenza? 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. 🔥