Il processo di sviluppo dei software necessita di una ingente quantità di lavoro. Infatti, modificare oppure aggiungere delle funzioni nuove ad una qualsiasi applicazione può causare il fallimento oppure un calo di funzionalità di altri elementi che prima funzionavano correttamente.
Dunque, per essere certi che lo sviluppo proceda in maniera adeguata, gli sviluppatori devono avvalersi dell’aiuto dei cosiddetti regression test o test di regressione. Il reparto aziendale adibito allo sviluppo software ha molto spesso l’esigenza di dover cambiare il codice esistente, anche se già collaudato e funzionante, per integrare altre funzionalità.
In questa fase il regression test ha un compito di vitale importanza in quanto consente di accertarsi che i cambiamenti inseriti non vadano ad influenzare negativamente il funzionamento dell’app già sviluppata e testata. Così facendo, si potranno avere prodotti sempre di elevata qualità e affidabilità. Ma come funziona esattamente un test del genere e quali vantaggi ha da offrire?
Ogni volta che un software è sottoposto a modifiche o aggiornamenti possono involontariamente comparire nuovi bug oppure ricomparire vecchi difetti già riscontrati. Ciò può essere dovuto alla mancanza di consolidate pratiche di revisione a livello di codice o a causa di sistemi di controllo delle versioni precedenti che hanno condotto a un certo malfunzionamento.
A volte capita anche che la soluzione individuata per un certo problema funzioni solamente in un numero definito di casi in principio osservati e previsti, ma non in un contesto più esteso di reali casi d’uso del software. Se il programma perde di funzionalità a seguito di aggiornamenti si dice allora che è “regredito” ad uno stato meno sviluppato, da cui l’espressione regression test.
In sintesi, il regression test ha lo scopo primario di ammortizzare e ridurre al minimo tutta questa categoria di inconvenienti e nonostante possa essere programmato manualmente, per abbattere tempi e costi è diventata prassi quella di eseguirlo attraverso appositi tool di testing automatizzato secondo tecniche diverse.
Alcune di queste metodologie si basano sulla riesecuzione di tutti i casi di test del gruppo di test stessi (retest all). Altri sistemi invece ne scelgono soltanto una parte in forma mirata (regression test selection) oppure si dà priorità ai casi di test con una più alta probabilità di individuare bug.
Ad ogni modo, indipendentemente dalla tecnica prescelta, i regression test possono diventare dispendiosi in termini di risorse impiegate e tempo e sono di competenza di team di sviluppo che, pur a conoscenza delle più minime modifiche del codice, non potranno immaginare tutti gli ipotetici casi e i modi in cui il software sarà realmente impiegato.
Allo stesso tempo i regression test non possono essere evitati perché una app di scarsa qualità viene abbandonata molto in fretta da un pubblico volubile. Soprattutto nei team di lavoro impostati secondo approccio Agile e DevOps i cicli di lavoro sono frazionati in segmenti più brevi e le modifiche al codice sono più frequenti. Ciò richiede che i regression test siano eseguiti senza rallentare il rapido processo di distribuzione dell’app.
I test di regressione sono in grado di assicurare moltissimi vantaggi in ogni fase del ciclo di sviluppo di un software. Il beneficio più immediato è che i regression test garantiscono che l’applicazione funzioni senza difficoltà dopo la modifica del codice o l’inserimento di ulteriori funzionalità. Ci sono però altri buoni motivi per eseguire questo tipo di test:
Per condurre i regression test ci sono molteplici tecniche da utilizzare. Ecco quali sono le più comuni metodologie oggi impiegate dai reparti IT:
Se si decide di svolgere manualmente i vari regression test, il costo potrebbe lievitare e non di poco. Quindi prima di affidarsi ai test di regressione è sempre utile informarsi preventivamente sulle spese ad essi associati. Sebbene tale genere di testing possa rivelarsi abbastanza dispendioso, senza i regression test c’è il serio rischio di non soddisfare in pieno gli utenti del software per colpa di bug o altri problemi.
In linea di massima però per valutare il costo dei test di regressione bisogna considerare principalmente 3 elementi: