Nell’organizzazione IT di un’impresa, il reparto sviluppo ha oggi sempre più spesso l’esigenza di modificare il codice applicativo esistente, benché già collaudato e ben funzionante, per aggiornarlo o integrare nuove funzionalità. E, in tale attività, il regression test, o test di non regressione, gioca un ruolo fondamentale: permette infatti di verificare che i nuovi cambiamenti apportati al software non influenzino negativamente il funzionamento dell’applicazione già precedentemente sviluppata e testata. Vedremo più avanti in che modo il crowdtesting può potenziare le tecniche di regression test. Prima però occorre avere ben chiaro come funziona quest’ultimo.
Regression test, cos’è e perché è importante
Ogni qual volta un software è soggetto ad aggiornamenti o modifiche, possono ricomparire vecchi bug ed emergere nuovi difetti. Ciò può essere dovuto, ad esempio, alla carenza di solide pratiche di revisione del codice, e di sistemi di controllo delle versioni in grado di tenere traccia di quali modifiche hanno portato a un dato malfunzionamento. Succede anche che la soluzione trovata per un dato problema funzioni solo in un limitato numero di casi inizialmente osservati e previsti dal team di sviluppo, ma non in un più ampio contesto di reali e possibili casi d’uso del software.
Il regression test ha l’obiettivo di minimizzare tutti questi inconvenienti, e, benché possa essere programmato manualmente, per ridurre tempi e costi è di norma eseguito tramite appositi strumenti di test automatizzato, e applicando differenti tecniche. Alcune di queste prevedono la ri-esecuzione di tutti i casi di test della suite di test (retest all); altre ne selezionano una parte (regression test selection) in maniera mirata, per fornire mediamente una buona copertura; altre ancora danno priorità ai casi di test con maggior probabilità di portare all’individuazione di bug.
Tuttavia, a prescindere dalla tecnica utilizzata, i regression test possono risultare dispendiosi in termini di tempo e risorse utilizzate, e, soprattutto, sono affidati a team di sviluppo e tester interni che, pur conoscendo nei dettagli le modifiche del codice, non possono immaginare tutti i casi e le modalità in cui il software verrà realmente utilizzato.
Al contempo, i regression test non possono essere omessi, perché oggi un’applicazione scadente viene presto abbandonata dagli utenti, e la qualità del software diventa quindi un requisito essenziale. Qualità ancor più ardua da conservare in ambienti di sviluppo dove, per accelerare il ritmo e la frequenza di distribuzione degli aggiornamenti e delle nuove versioni di una data applicazione software, si adottano in maniera crescente paradigmi di progettazione come Agile e DevOps. Nelle metodologie Agile e DevOps, i cicli di sviluppo molto brevi e le modifiche al codice molto frequenti richiedono che i regression test vengano eseguiti senza rallentare il veloce processo di distribuzione continua del software, e rispettando gli obiettivi di time-to-market.
Perché il crowdtesting può essere d’aiuto nei regression test
I regression test eseguiti con strumenti di automazione, pur essendo efficienti e verificando buona parte delle funzionalità preesistenti, non forniscono la profondità e la copertura di collaudo ottenibile integrando anche il crowdtesting. «Fondandosi sui test eseguiti da una vasta platea di utenti, che utilizzano una app in situazioni reali, ad esempio per fare acquisti in un sito di commercio elettronico, attraverso dispositivi, sistemi operativi e reti differenti, il crowdtesting permette di eseguire molto velocemente un gran numero di test che non sono automatizzabili, e devono essere condotti da persone in carne e ossa» spiega Edoardo Vannutelli, responsabile testing automation all’interno della piattaforma di crowdtesting Unguess.
Who's Who
Edoardo Vannutelli
Responsabile testing automation all’interno della piattaforma di crowdtesting Unguess
Un esempio può essere quello del mondo bancario, dove, per ovvie ragioni di sicurezza, la creazione di account fittizi per scopi di test su un sistema in produzione diventa difficilmente praticabile.
«Va poi anche considerato che, per i regression test, in molte realtà aziendali i costi degli strumenti di testing automation non sono sempre giustificabili in rapporto alla frequenza di utilizzo degli strumenti stessi e ai reali benefici ottenibili – aggiunge Vannutelli -. In questi casi, adottare il crowdtesting consente di aumentare sia la profondità, sia la copertura e la rapidità dei test, grazie alla possibilità di attivare numerosi tester, che possono lavorare in parallelo concentrandosi sull’obiettivo, facendo molti più test in meno tempo, ed espletando carichi di lavoro che altrimenti graverebbero su un numero limitato di tester del personale interno». Senza poi contare che la flessibilità del crowdtesting permette di programmare i regression test in qualunque momento ciò si renda necessario all’interno del ciclo di sviluppo software, fornendo risultati e indicazioni molto utili per accelerare ulteriormente il ciclo stesso, e pubblicare i nuovi aggiornamenti e release con maggior tranquillità.
Approccio ‘fresh eyes’
Ci sono solo altri benefici in questo approccio. «Un altro non trascurabile vantaggio – chiarisce Vannutelli – è che nel crowdtesting i tester sono ‘fresh eyes’, cioè persone che vedono e provano per la prima volta quella data app, utilizzando percorsi e rilevando difetti che i tester convenzionali, normalmente, non identificano. In aggiunta, nel crowdtesting i collaudatori appartengono a una comunità di tester competenti, in grado non soltanto di segnalare un difetto, ma anche di fornire al team di sviluppo tutti gli elementi chiave per intervenire e correggerlo». Insomma, in sinergia con i regression test automatizzati, il crowdtesting può costituire un ulteriore ‘quality gate’, che consente di fornire ancora maggiori garanzie sulla solidità e sul valore del prodotto software sviluppato.