Il processo di test di regressione è una strategia di test del software utilizzata per verificare che le modifiche al codice non danneggino le funzionalità esistenti o introducano nuovi bug.
Il test di regressione è in genere eseguito dopo l'implementazione delle correzioni dei bug e comporta una nuova esecuzione dei test per garantire che le caratteristiche funzionino come previsto dopo l'aggiunta di nuovo codice.
Una parte del test di regressione che lo rende unico è il modo in cui fluttua liberamente in tutte le diverse fasi dei test di sviluppo del software. Il test di regressione può essere condotto ogni volta che si desidera o quando si deve tornare indietro di un passo per assicurarsi che il nuovo codice che viene introdotto non danneggi la funzionalità generale e l'efficienza del workflow.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.
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.
Qualsiasi organizzazione il cui codice informatico riceve aggiornamenti regolari deve probabilmente implementare metodi di test di regressione. Poiché gli aggiornamenti del codice sono altamente pervasivi in tutta l'organizzazione, non è semplicemente possibile ottenere un numero totale accurato in modo affidabile.
Tuttavia, grazie a tecnologie come l'intelligenza artificiale (AI) e la pipeline di continuous integrations/continuous delivery (CI/CD), molte aziende stanno aumentando la frequenza delle modifiche al codice e alcune aziende eseguono persino aggiornamenti quotidiani. Questo può comportare un'elevata quantità di test di regressione.
Un'area chiave in cui il test di regressione è al centro dell'attenzione è durante le attività di garanzia della qualità (QA). Gli obiettivi del test di regressione e dei team di controllo qualità sono molto simili: ottimizzare l'esperienza utente e fornire dati di alta qualità e il software più sicuro possibile.
L'unica differenza è la porzione del quadro complessivo che ciascuno prende in considerazione. Il test di regressione utilizza un ambito più preciso per concentrarsi sulle modifiche apportate di recente, mentre il controllo qualità valuta l'intero sistema e il suo funzionamento.
Le tecniche di test di regressione funzionano come protezione contro le modifiche al codice che non sono compatibili con il sistema che le ospita. È importante disporre di tali misure per affinché l'operatività del sistema sia sempre ottimizzata.
Nel test di regressione viene solitamente seguita questa sequenza di passaggi (o una simile):
Sebbene questo argomento sembri molto semplice, esiste una vasta gamma di tecniche di test di regressione. Ognuna di esse conferisce un tocco distintivo al test di regressione.
Come suggerisce il nome, questa forma di test di regressione si concentra sui componenti o sui moduli (o "unità") che compongono un sistema e sull'eventuale introduzione di errori in quella singola unità.
Esempio: gli sviluppatori potrebbero decidere di aggiungere una funzionalità "Password dimenticata" a un sito web. Un test di regressione unitario verificherebbe che il meccanismo di accesso originale continui a funzionare come previsto, nonostante la funzione aggiuntiva.
Quando l'obiettivo è quello di scoprire se le modifiche recenti hanno influito solo su un sottoinsieme del sistema aggiornato, un test di regressione parziale rileva quel sottoinsieme ed esegue una diagnostica adeguata.
Esempio: supponiamo che un sito web stia integrando un nuovo gateway di pagamento. Il test di regressione parziale potrebbe valutare solo una parte di una nuova funzionalità e il modo in cui è dedicata, lasciando senza test le funzionalità non correlate.
Altre volte sono necessari test più approfonditi, ad esempio in seguito a modifiche importanti del codice. Il test di regressione completo prevede il test dell'intero sistema o dell'applicazione per garantirne la continua funzionalità.
Esempio: gli sviluppatori di un sito web decidono di includere una galleria di prodotti selezionati. Una volta creata, l'azienda esegue test di regressione completi sulla funzionalità della nuova galleria e su tutti i casi di test esistenti, che devono essere tutti rieseguiti.
Il test di regressione selettivo introduce un elemento predittivo nel test di regressione. In esso, i casi di test della suite di test vengono selezionati in base alla convinzione dei tester che quelle aree riceveranno un impatto dalle modifiche al codice apportate.
Esempio: gli sviluppatori di un'applicazione mobile potrebbero scoprire di dover integrare e aggiornare alcuni aspetti dell'interfaccia utente. In tal caso, gli sviluppatori potrebbero utilizzare il test di regressione selettivo per garantire la stabilità continua dell'interfaccia utente.
Una sorta di approccio misto al test valuta sia le nuove funzionalità che le funzionalità esistenti. Il test di regressione progressiva verifica ogni aspetto per rilevare i bug introdotti tramite nuove funzionalità.
Esempio: ogni volta che un'organizzazione rilascia un nuovo aggiornamento di un prodotto software esistente, in genere esegue preventivamente un test di regressione progressivo per garantire che la funzionalità dell'ultimo aggiornamento continui a riflettere quella mostrata dalla serie.
Garantire l'uniformità dei dati è lo scopo del test di regressione correttivo. I casi di test vengono eseguiti nuovamente per verificare se si ottengono risultati simili. Il test di regressione correttivo è spesso condotto quando non sono state apportate modifiche alla base di codice.
Esempio: non sono sempre al software vengono aggiunte nuove funzionalità; a volte vengono introdotte modifiche per perfezionare il codice e per farlo funzionare meglio. Il test di regressione correttivo è utilizzato nei casi in cui il codice viene rifattorizzato, per assicurarsi che il refactoring non introduca errori di codice.
Il test di regressione "retest-all" è considerato un test post-finale. Coinvolge i team di sviluppo, i quali eseguono test su tutti i casi di test di regressione che sono già stati risolti, solo per assicurarsi che tutto funzioni in armonia.
Esempio: la ripetizione del test di regressione completo è spesso utilizzata per verificare le modifiche che possono accompagnare importanti cambiamenti a livello di architettura nel software. Ad esempio, un'app finanziaria che adotta un nuovo framework che costituisce un cambiamento sostanziale del suo funzionamento.
I tipi di test discussi possono richiedere molto tempo, motivo per cui spesso vengono utilizzati strumenti di test automatizzati per accelerare il processo. La velocità di esecuzione dei test aumenta, anche quando sono coinvolti sistemi di grandi dimensioni.
Esempio: il test di regressione automatizzato può essere utilizzato dopo gli aggiornamenti del backend per determinare se gli endpoint dell'application programming interface (API) continuano a generare dati e risposte corrette, a dimostrazione del corretto funzionamento generale.
Alcuni scenari di test richiedono la comprensione umana, ed è qui che vengono condotti i test di regressione manuali. È ovvio che i test manuali richiedano in genere più tempo per essere eseguiti, a causa della particolare sensibilità che caratterizza il lavoro.
Esempio: i siti web devono avere un aspetto gradevole e comparabile su diverse piattaforme. Con l'uso del test di regressione manuale, puoi verificare la reattività di un sito web dopo avere apportato delle modifiche al layout.
Questo test di regressione utilizza Selenium, un framework di automazione web open source. Il test di regressione Selenium migliora la stabilità del software rilevando precocemente le regressioni e assicurando che le nuove modifiche non facciano deragliare il codice esistente. È particolarmente utile in situazioni con aggiornamenti costanti, come l'integrazione continua.
Esempio: un sistema per le prenotazioni aeree aggiunge una nuova funzionalità che ora consente i pagamenti con carta di debito, aggiungendoli ai pagamenti con carta di credito già consentiti. Selenium può verificare che il flusso dei pagamenti con carta di credito continui ad operare come previsto.
La qualità del software viene giudicata in base a diverse variabili esistenti, oltre al ciclo di vita dello sviluppo del software (SDLC). I test di regressione non funzionali cercano di convalidare la presenza di un software di alta qualità, sicuro da usare e che supporti una buona esperienza utente.
Esempio: gli sviluppatori di un sito web aggiungono nuove funzionalità, quindi vogliono determinare in che modo queste influiscano sulla velocità operativa. Il test di regressione non funzionale controlla i tempi di caricamento. Se i tempi di caricamento sono aumentati, ciò indica una regressione.
Un altro aspetto chiave del test di regressione è il modo in cui può interagire con altri schemi di test per produrre effetti sinergici. Eccone alcuni:
Gli effetti ad ampio raggio dell'AI sono sbalorditivi. Pochi settori sono investono così fortemente nell'AI come il settore tecnologico e il test di regressione è uno dei tanti processi tecnologici che viene radicalmente accelerato dalla potenza dell'AI.
La frase "accelerato" è adeguata perché il modo principale in cui l'AI sta migliorando il test di regressione è aumentando al massimo la velocità con cui vengono raggiunte le varie conclusioni. Tuttavia, l'AI sta anche aumentando la precisione dei dati di test.
In particolare, l'AI utilizza i suoi algoritmi per creare casi di test pertinenti analizzando i dati storici dei test, il comportamento degli utenti e le modifiche al codice. Questo aiuta a dare priorità ai test in base agli impatti previsti. Inoltre, quando l'AI esegue questi test, essi vengono eseguiti più velocemente e producono risultati più rapidi.
L'AI migliora anche la natura e la qualità dei test di regressione utilizzando metodi di rilevamento e test di ingegneria della piattaforma. In questo modo è possibile mantenere il buon funzionamento dei test automatizzati, anche in situazioni in cui lo sviluppo continua. In definitiva, l'AI migliora i test di regressione potenziando il processo decisionale e automatizzando le attività, il che riduce i costi e accelera il time to market.
Un servizio single-tenant completamente gestito per lo sviluppo e la distribuzione di applicazioni Java.
Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.
Lo sviluppo di applicazioni cloud significa programmare una volta, iterare rapidamente e distribuire ovunque.