Cos'è il test end-to-end (E2E)?

Tre colleghi seduti a un tavolo durante una riunione, circondati da computer

Autori

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è il test end-to-end?

Il test end-to-end (E2E) è una metodologia di test del software che convalida l'intero workflow delle applicazioni dall'inizio alla fine.

I test E2E confermano che i componenti integrati (come front-end, backend, database e servizi di terze parti) funzionano senza problemi insieme. Inoltre, cerca di incorporare scenari di utenti reali.

È ora disponibile una serie completa di tipi di test del software. Puoi testare aree specifiche di un'intera applicazione, concentrandoti su un particolare aspetto d'interesse, anche fino al test unitario del livello incrementale più piccolo. Magari vuoi testare quanto il software svolga bene varie funzioni specifiche o come i suoi diversi componenti si integrino tra di loro; in questo caso, faresti bene a esplorare il test funzionale o il test di integrazione.

Ma supponiamo che il tuo obiettivo sia quello di ottenere il quadro più completo del funzionamento di un'applicazione software. Vuole vedere l'app in azione, dall'inizio alla fine, e vedere con quanta efficienza gestisce i sottosistemi e le dipendenze associate.

Oltre a questi passaggi, supponiamo che tu voglia anche avere un'idea generale del funzionamento dell'interfaccia utente (UI). Quindi, qualunque approccio di test dell'interfaccia utente tu scelga, deve essere in grado di gestire le prestazioni dell'app dal punto di vista dell'utente.

I test E2E forniscono il tipo di framework di test completo che offre una visione dall'inizio alla fine del comportamento delle app e un mezzo per valutare la qualità dell'esperienza utente (UX).

Poiché il test E2E è così ambizioso da coinvolgere l'intero ciclo di vita dello sviluppo dell'applicazione, non sorprende scoprire che il testing E2E richiede più impegno, risorse e tempo.

I test E2E differiscono notevolmente da una strategia di test "black box", in cui l'operazione è ridotta a una valutazione "pass/fail". Questa strategia consente di scoprire solo se l'applicazione funziona come previsto dalle promesse fatte al momento della vendita. Per questo motivo, l'E2E non è la scelta ideale per ogni scopo. In genere è un processo di test che richiede tempo e che viene utilizzato al meglio in situazioni in cui i tester necessitano davvero di una valutazione di ogni fase delle prestazioni dell'app.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Sette fasi del test E2E

Il processo di test E2E si basa su questi passaggi:

1. Pianificazione e gestione dei test

Il processo inizia con i tester che pensano a come l'applicazione sarà utilizzata dagli utenti reali. Parte di questa fase consiste nel valutare quali saranno le interazioni utente più importanti dell'app e come verranno indirizzati i workflow all'interno dell'app.

I diversi scenari di test dovrebbero riflettere una serie ragionevole di scenari e percorsi utente del mondo reale e i tester dovrebbero documentare questi scenari e tracciare i vari passaggi coinvolti in ciascuno di essi.

I tester necessitano anche di un sistema di gestione affinché i casi di test possano essere conservati in modo organizzato e siano facilmente accessibili. Le suite di test svolgono questa funzione, raggruppando i casi di test in base ai percorsi degli utenti, a determinate caratteristiche o a moduli e componenti.

2. Configurazione dell'ambiente di test

Questa fase riguarda l'ambiente di test ed è un'altra fase che richiede una certa premeditazione. Idealmente, i tester dovrebbero sviluppare un ambiente di staging che assomigli molto all'ambiente di produzione.

I tester riempiono questo ambiente di staging con i singoli componenti che normalmente sarebbero integrati nel processo di sviluppo del software, come le application programming interface (API), i database e altri componenti necessari. Inoltre, nel caso in cui non sia possibile accedere ai dati reali sulle prestazioni, i tester potrebbero scegliere di utilizzare dati sintetici.

3. Selezione dello strumento di test

L'aspetto successivo della progettazione dei test E2E è la selezione degli strumenti di test adeguati, in particolare i framework e gli strumenti di automazione necessari. Gli strumenti di automazione si rivelano essenziali per l'esecuzione di test E2E perché semplificano il processo di test ed eseguono i test più velocemente. Quando i tester valutano le prestazioni di un'applicazione, questi risparmi di tempo migliorano l'efficienza.

Gli strumenti utilizzati dai tester dipendono dal tipo di applicazione. I tester che preparano le applicazioni web in genere scelgono strumenti come Cypress o Selenium. I tester che lavorano con le app mobili optano per strumenti come Appium. 

4. Creazione ed esecuzione dei test

Siamo arrivati alla fase in cui i tester formulano gli script di test che delineano diversi scenari d'uso relativi a tutti i componenti, come il front-end, il back-end, i database e le API.

Quando i test E2E sono in esecuzione, i tester valutano il comportamento dell'applicazione man mano che il workflow procede, verificando che sia mantenuta l'l'integrità dei dati durante l'esecuzione del test. Se i tester scelgono di non utilizzare gli script di test, devono invece eseguire test manuali per gli scenari di test.

5. Convalida dei risultati

I metodi di test sono utili solo nella misura in cui rivelano dei risultati; in questa fase è necessario valutare attentamente i dati generati dai test. I tester confrontano i risultati dei test e le metriche associate con i risultati attesi per vedere cosa si può trarre dalla copertura del test e quali carenze o errori sono ancora presenti nel codice.

6. Risoluzione dei difetti

I tester ora si mettono al lavoro per risolvere i problemi rivelati dai test. I tester studiano i messaggi di errore e i log delle prestazioni per vedere dove sono radicati gli errori. Quando i tester hanno risolto con successo i problemi delle applicazioni, i test vengono eseguiti nuovamente per vedere se i problemi sono stati risolti e se le prestazioni sono state ottimizzate durante il processo di test.

Questa fase è la fase in cui i tester eseguono le normali funzioni di garanzia della qualità (QA), con l'obiettivo di stabilire una qualità dei dati ottimale.

7. Automazione

La fase finale dei test E2E prevede l'utilizzo della potenza dell'automazione per verificare che i test automatici siano integrati correttamente come attività che si verificano regolarmente. Ciò significa aggiungere l'automazione dei test da uno strumento come il framework open source Playwright alla pipeline di continuous integration and continuous delivery (CI/CD) in modo che i test necessari vengano eseguiti regolarmente.

I tester che utilizzano la pipeline CI/CD possono quindi rilevare i problemi di prestazioni nelle prime fasi del processo di sviluppo del software, quando sono in grado di mitigarli in modo semplice e rapido.

Sviluppo di applicazioni

Sali a bordo: sviluppo di applicazioni Enterprise nel cloud

In questo video il Dr. Peter Haumer illustra l'aspetto del moderno sviluppo di applicazioni aziendali nell'hybrid cloud, mostrando diversi componenti e pratiche, tra cui IBM Z Open Editor, IBM Wazi e Zowe. 

Best practice per i test E2E

Vuoi perfezionare i tuoi test end-to-end? Prendi in considerazione questi suggerimenti.

Valutare i workflow essenziali

I percorsi degli utenti spesso differiscono in modo significativo e, sebbene sia importante includerne il maggior numero possibile nei test, probabilmente sarà necessario stabilire delle priorità. Questo approccio dovrebbe concentrarsi sul test dei percorsi utente più importanti.

Il modo di definire ciò che è "importante" può variare leggermente. Tuttavia, parliamo in genere di quei test che vengono eseguiti con frequenza regolare a causa della loro importanza costante e continua per un'organizzazione, come ad esempio l'accesso al sito.

L'altra parte di questa fase consiste nel suddividere i workflow in passaggi gestibili per semplificare i test. 

Scegliere selettori stabili

I selettori sono modelli che richiamano gli elementi reattivi all'interno del Document Object Model (DOM) di una pagina web. I selettori fungono da indirizzi che aiutano i framework di test a localizzare elementi dello schermo come campi di input, elementi di testo e pulsanti.

Allo stesso modo, è meglio utilizzare gli attributi "data-*" o altri identificatori stabili. I selettori fragili come i nomi delle classi dovrebbero essere evitati. Inoltre, una struttura DOM può passare attraverso diverse iterazioni, quindi probabilmente è meglio usarla con attenzione. 

Garantire l'indipendenza dei test

Cosa serve per fare un buon test? Il successo può assumere diverse forme, ma i migliori esempi di test di solito condividono alcuni attributi. Per cominciare, i tester dovrebbero essere in grado di utilizzare lo stesso test ogni volta che serve, quindi è considerato opportuno assicurarsi che i test siano ripetibili.

Allo stesso modo, i test devono essere in grado di essere eseguiti liberamente e senza essere gravati da influenze esterne, come la disponibilità di terze parti e i problemi di tempistica della rete. Questi problemi possono produrre risultati inaffidabili. 

Rendere i test gestibili

Senza una gestione efficace per frenare lo scope creep, è facile che i test E2E diventino troppo grandi. Quando ciò si verifica, i test possono bloccarsi ed essere difficili da eseguire; le loro prestazioni ne risentono di conseguenza.

Ecco perché, ove possibile, ha senso scaricare alcune delle attività di elaborazione più pesanti. Principalmente, ciò significa attività di verifica logica, che i tester possono eseguire nell'ambito dei test unitari e dei test di integrazione. Questo metodo consente ai test E2E di rimanere dedicati alla convalida delle tendenze comportamentali degli utenti e alla sincronizzazione dei sistemi software.

Potenziare l'automazione dei test

Probabilmente, la cosa migliore che un tester può fare per garantire test efficienti e completi consiste nell'utilizzare la vasta potenza di elaborazione rappresentata dall'automazione. Questo è il segreto per garantire che i test siano eseguiti con una frequenza adeguata.

È anche il mezzo principale per limitare la presenza continua di errori umani nei test, oltre ad automatizzare le attività di test ripetitive. Quando lavorano con applicazioni cross-browser e app mobili, molti tester optano per servizi di test basati sul cloud.

Stabilire ambienti di test

La creazione e la gestione di ambienti di test è una parte cruciale del test del sistema. I tester devono ottimizzare l'ambiente di test e renderlo il più agile possibile per consentire una configurazione rapida e il testing immediato.

Inoltre, è di fondamentale importanza che gli ambienti di test forniscano un isolamento profondo per proteggere i risultati dei test da interferenze indebite provenienti da fonti esterne.

Promuovi un approccio di team

I test E2E funzionano meglio quando tutte le parti affiliate sono coinvolte. In questo modo i tester possono utilizzare risultati di test di alta qualità che si rivelano particolarmente preziosi durante le revisioni del codice. In particolare, i team DevOps e i team QA devono mantenere una comunicazione e collaborazione strette per contribuire a garantire una qualità ottimale del software.

È anche importante istruire i team QA in modo che abbiano una chiara comprensione dei requisiti aziendali dell'organizzazione e non li compromettano inavvertitamente durante le revisioni.

Infine, è necessario informare tutti gli stakeholder in merito agli sviluppi del progetto.

Dedica tempo al test delle API

Le API sono di fondamentale importanza per l'esecuzione delle applicazioni, poiché consentono ai vari componenti coinvolti all'interno di un'applicazione di comunicare tra loro.

I test delle API si concentrano sulla funzionalità delle API e possono eliminare qualsiasi problema basato sulla logica prima che i tester valutino la funzionalità dell'interfaccia utente.

Eseguire test multipli

Quando si eseguono più test, è opportuno utilizzare al meglio la capacità del sistema di eseguire più test contemporaneamente, eseguendoli in parallelo. Questo metodo è particolarmente valido per le configurazioni di test basate su cloud, ma è una buona guida in generale.

L'esecuzione dei test in parallelo consente di ridurre il tempo necessario e fornisce un feedback più rapido.

Rivedere ed modificare i test in base alle necessità

Come ci viene costantemente ricordato, nel mondo dei computer ben poco rimane uguale a lungo. Le cose cambiano e le situazioni si evolvono, così come le applicazioni. A causa di questo costante cambiamento, il lavoro dei tester non è mai completamente terminato.

È consigliabile rivedere periodicamente i casi di test E2E e verificare se è cambiato qualcosa che potrebbe influire negativamente sulle prestazioni analitiche. 

L'AI incontra l'E2E

L'intelligenza artificiale (AI) sta rinnovando e rivoluzionando quasi tutti gli aspetti dell'informatica. Per i test E2E, i principali benefici dell'AI sono più o meno come quelli introdotti dall'AI in altre forme di test del software. Fondamentalmente, l'AI rende i test E2E più rapidi, il processo più efficiente e protegge meglio le applicazioni dagli errori.

Oltre a questi aspetti, l'AI assiste il processo di test E2E generando casi di test basati sul comportamento dell'applicazione e dei flussi degli utenti. Questo approccio include test di ingegneria della piattaforma che possono correggersi da soli in base al riconoscimento da parte del sistema delle modifiche all'interfaccia utente.

L'AI può monitorare i test nelle app in evoluzione e adattarli in base ai notevoli cambiamenti che percepisce. Quando è il momento di eseguire quei test, l'AI può farlo a velocità elevatissime. Inoltre, può identificare le aree che potrebbero richiedere ulteriori test di follow-up.

Per le organizzazioni che vogliono evitare le ingenti spese dell'infrastruttura on-premise, sono disponibili dei test AI che possono essere eseguiti sul cloud. Per le aziende impegnate nella pubblicazione software, l'AI può essere d'aiuto per eseguire i test software necessari in modo più rapido, consentendo così rilasci di prodotto più rapidi.

Infine, contrariamente alle nozioni prevalenti su un'AI che "prende il sopravvento" su qualsiasi attività di business, l'AI sta rendendo più facile per gli utenti non tecnici l'impegno nel processo di test. Coinvolge più persone nel processo attraverso strumenti basati su AI che richiedono meno conoscenze presunte da parte dei tester.

Soluzioni correlate
IBM Enterprise Application Service for Java

Un servizio single-tenant completamente gestito per lo sviluppo e la distribuzione di applicazioni Java.

Esplora le applicazioni Java
Soluzioni DevOps

Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.

Esplora le soluzioni DevOps
Enterprise Application Development Services

Lo sviluppo di applicazioni cloud significa programmare una volta, iterare rapidamente e distribuire ovunque.

Servizi per lo sviluppo di applicazioni
Fai il passo successivo

I servizi di consulenza per lo sviluppo delle applicazioni IBM Cloud offrono consulenza esperta e soluzioni innovative per semplificare la tua strategia cloud. Collabora con gli esperti di cloud e sviluppo di IBM per modernizzare, scalare e accelerare le tue applicazioni, ottenendo risultati trasformativi per la tua azienda.

Esplora i servizi per lo sviluppo di applicazioni Inizia a creare gratuitamente con IBM Cloud