Articoli del meseArticoli del mese

Articoli del mese


Stampa articolo

Articolo del Mese - Giugno 2012

I test di regressione in ambienti legacy

Randy Rice by Randy Rice

Una grande quantità di codice residente in sistemi complessi, non documentati. È una situazione che corrisponde a quella esistente in molte organizzazioni. Si è portati a credere che la percentuale più grande degli investimenti ICT vada nella direzione di nuove tecnologie. L'amara verità è, invece, che la gran parte dei soldi viene spesa per manutenere i sistemi più vecchi, quelli cosiddetti legacy, ovvero quelli che sono frutto dell'eredità del passato. Sistemi che sono tuttora organici alle necessità aziendali, ma che sono cresciuti in modo disorganizzato e non pianificato. Di fatto, dietro questi sistemi, il cui codice è continuato a crescere nel tempo, esistono funzionalità e difetti di cui nessuno è ormai a conoscenza.
Chiunque abbia lavorato nell'area della manutenzione del software sa che non è semplice mettere le mani nel codice sviluppato da altri e comprenderne il significato. A prima vista può sembrare che sia dedicato a svolgere una determinata funzione mentre, a causa di porzioni di codice cui si relaziona, l'effetto è diverso. Ciò significa che per comprendere la vera complessità del sistema è necessario affrontare un'analisi estesa, mirata a tutte le componenti del sistema: il codice, ovviamente, l'hardware, le interfacce con altri sistemi, i dati, le procedure, le persone stesse che operano su quel sistema.
L'ideale sarebbe riuscire ad avere disponibile una documentazione accurata e aggiornata. Ma ciò accade di rado.
L'esperienza ci insegna che anche la più piccola delle modifiche può dare luogo a un'infinita serie di conseguenze su tutte le componenti che sono interessate al sistema in oggetto. Per le persone addette al collaudo del software questo significa dover sempre accertarsi che le modifiche siano state fatte correttamente così come accertarsi che esse non abbiano causato effetti collaterali, non pianificati, sulle componenti associate. Questo tipo di attività è nota come test di conferma e test di regressione.
Nel test di regressione è importante sapere il numero di prove (test case) necessarie per collaudare una nuova release di software. Ciò dipende da:
Il livello di rischio del sistema da collaudare – Se l'effetto potenziale di difetti è minimo, è inopportuno eseguire un gran numero di test per ogni modifica effettuata. Tuttavia, se davvero sussistono dei rischi reali, è bene procedere con un gran numero di prove.
Il livello di integrazione del sistema – Questa è una lama a doppio taglio. Da una parte si ritiene che i sistemi altamente integrati richiedano test di regressione a causa della loro complessità e del gran numero di interfacce presenti (un cambiamento in un modulo potrebbe scatenare un difetto all'interno del flusso procedurale); dall'altra questi sistemi si prestano con molta difficoltà a essere sottoposti a test di regressione in quanto dovrebbero essere implementate un gran numero di prove per riuscire davvero a coprire l'intera dimensione ed estensione del sistema. Se fossimo nella condizione di poter prevedere quali potrebbero essere gli errori non vi sarebbe necessità di eseguire dei test di regressione. Ma questo non è quanto mediamente si verifica con la maggior parte dei sistemi.
La dimensione del cambiamento – Anche questo aspetto è difficile da determinare. Si è spesso tentati a ridurre il livello dei test di regressione in presenza di piccole modifiche. Tuttavia l'esperienza ci dice che alcuni dei problemi maggiori sono spesso causati da singoli, piccoli cambiamenti.
Le risorse disponibili per eseguire test di regressione – Ovvero tempo, persone e strumenti. Può capitare di accorgersi della necessità di eseguire un certo numero di test di regressione, ma essere limitati in questo dalla scarsità di risorse disponibili. È un qualcosa che ha a che fare con il test management. Le persone possono fare il loro lavoro solo se hanno a disposizione risorse adeguate. In assenza di strumenti di automation, i test di regressione possono risultare poco precisi e, allo tesso tempo, laboriosi. Sebbene un'attività di questo tipo, abitualmente definita come pseudo regression testing, possa apparire adeguata, non consente di effettuare un autentico test di regressione.

Due importanti domande
Gli aspetti di integrazione e interoperabilità comportano un'attività di testing di regressione molto complessa e dare risposta a semplici domande, quali cosa collaudiamo e quanto collaudiamo, risulta spesso difficile. L'approccio che descrivo nel seguito si è dimostrato adeguato in molti dei progetti in cui sono stato coinvolto.

Esempio
Ipotizziamo di avere quattro sistemi distinti, ciascuno con un certo numero di servizi e componenti. Il nostro obiettivo è eseguire un test di regressione ogni qualvolta venga apportata una modifica, anche piccola, a un servizio di un determinato sistema. La domanda è: “Cosa deve essere testato?”
Sappiamo che esiste un certo grado di integrazione, ma non sappiamo esattamente quale. È vero, esiste un'integrazione tra i quattro sistemi, ma siamo a conoscenza soltanto degli aspetti di integrazione che esistono tra soli due sistemi. Quando il sistema viene utilizzato, tutto sembra tranquillo, ma utilizzando un terzo sistema viene riscontrato un errore.
Un altro aspetto di questo problema è la mancanza di sufficiente documentazione tecnica. E questa situazione fa sì che non si possano condurre dei test di rilevante importanza. Il problema diventa ancor più complesso quando viene presa in considerazione l'integrazione tra tutti i sistemi. È una situazione che crea grandi difficoltà poiché questo tipo di interazioni può richiedere l'esecuzione di un numero elevatissimo di test.
E allora, che fare? Ecco due soluzioni che si sono rivelate valide in alcuni dei progetti in cui sono stato coinvolto.

Opzione 1
Un primo approccio prevede attività di testing che mette in gioco più componenti del sistema. Ciascuna porzione del test mette in esercizio molteplici funzioni in ciascun singolo sistema. Più porzioni di test vengono messe in esecuzione, maggiore sarà il numero di errori potenzialmente riscontrabili. La natura di questi test è di tipo random, per cui alcuni difetti potrebbero non essere rilevati.
Di solito non si hanno poi tempo e risorse sufficienti per eseguire un grande numero di test. Diventa pertanto importante, se non essenziale, avvalersi di strumenti di automazione. In caso contrario si deve intervenire di persona per cercare di stabilire il numero corretto di prove che devono essere determinate per soddisfare gli obiettivi.
Vi sono altre utili tecniche che possono essere considerate. Per esempio attività di testing di tipo pairwise, efficienti soprattutto per testare le interazioni tra due funzioni correlate. Tuttavia, esiste un approccio ancora più efficiente per eseguire test su interazioni di sistemi complessi, ed è quanto descritto nell'Opzione 2.

Opzione 2
Un metodo che funziona molto bene consiste nel non considerare in prima battuta gli aspetti di integrazione tecnica, ma focalizzarsi sull'integrazione business funzionale come definita dai processi di workflow. A differenza dell'integrazione tecnica, l'integrazione a livello di workflow permette di avere una migliore comprensione da parte delle persone che utilizzano il sistema e permette di operare un test rappresentativo della reale operatività che ha luogo su più sistemi. Non solo, seguendo il workflow di sistema si riesce anche ad avere una mappatura dell'integrazione tecnica.
Con questo approccio si possono creare test di regressione rappresentativi delle attività business più importanti. Si ottiene così un alto livello di copertura dei più importanti processi di workflow senza dover avviare attività di testing su funzionalità a bassa criticità.
Un ulteriore vantaggio di un approccio basato sul workflow consiste nel poter creare i test con più facilità poiché gli scenari funzionali sono ben compresi dagli esperti in materia. Agli scenari funzionali possono poi essere applicate delle priorità in termini di rischio, cosa che permette di utilizzare al meglio tempo e risorse soprattutto in situazioni dove queste sono limitate.

Conclusioni
Non esiste la soluzione perfetta per risolvere i problemi legati ad attività di testing di regressione in sistemi legacy complessi e mal documentati. A ogni modo intervenendo sui processi di workflow attraverso strumenti di test automation è spesso possibile ottenere ottimi risultati.

I test di regressione in ambienti legacy - Technology Transfer

Enterprise information catalog. I requisiti per fare la scelta giusta
Mike Ferguson

La nuova era dell’analisi predittiva - Le aziende alla prova del Machine Learning
Frank Greco

Uno sguardo Agile - Per capire il passato e progettare il futuro
Arie van Bennekum

Trasformazione Agile
Se il product owner diventa un collo di bottiglia

Sander Hoogendoorn

Una Fiat o una Ferrari?
Qual è la più adatta per il business digitale?

Barry Devlin

Vincere la complessità dei dati. È l’ora dello smart data management
Mike Ferguson

Big Data e Analytics - Se il machine learning accelera anche la data science
Mike Ferguson

I dati al centro del business
Christopher Bradley

I Big Data forniscono il contesto e la ricchezza predittiva attorno alle transazioni di business Avere dati coerenti e di qualità resta fondamentale per il processo decisionale
Barry Devlin

Cosa c’è dietro l’angolo? Cinque mosse per diventare un digital leader
Jeroen Derynck

Managing information technology Gestire l’IT come un business nel business
Mitchell Weisberg

Data integration self-service Miglioramento della produttività o caos totale?
Mike Ferguson

Project manager vecchi miti e nuove realtà
Aaron Shenhar

La catena alimentare dei requisiti
Suzanne Robertson

Come diventare un’azienda data-centric
Lindy Ryan

Enterprise analytical ecosystem - Come comprendere il comportamento online dei clienti e capitalizzare il valore dei dati nell’era Big Data
Mike Ferguson

Agilità? Basta Volere
Suzanne Robertson

Ma la vostra architettura è efficace?
Mike Rosen

Se il NoSQL diventa SQL
Rick van der Lans

La data quality e l’impatto sul business
Danette McGilvray

Business analysis e regole di business By Ronald G. Ross con Gladys S.W. Lam
Ronald Ross

Usare Scrum su larga scala: cosa cambia?
Craig Larman

Le architetture per ridurre il debito tecnico
Mike Rosen

Conversando con un marziano
Suzanne Robertson

Cosa c’è di nuovo nel project management?
Aaron Shenhar

Reinventare la Business Intelligence
Barry Devlin

Il nuovo volto della business intelligence
Shaku Atre

Alla ricerca del valore tra i pomodori nell'orto
John Favaro

I big data cambiano il mercato dei Database Server
Rick van der Lans

Un “superstorm” di informazioni
Barry Devlin

I dieci step per la qualità dei dati
Danette McGilvray

Perché è meglio evitare il private cloud?
Jason Bloomberg

Leonardo da Vinci aveva ragione!
Chris Date

Mobile user experience: Come adottare una strategia sostenibile
James Hobart

Cosa significa occuparsi di architettura?
Mike Rosen

Virtualizzazione dei dati e sistemi di Business Intelligence Agili
Rick van der Lans

Modelli e linguaggi naturali, quale il modo migliore per definire i requisiti?
James Robertson

Extreme Scoping: un approccio Agile all'Edw e alla BI
Larissa Moss

BI², la Business Intelligence al quadrato
Barry Devlin

I test di regressione in ambienti legacy
Randy Rice

Le conseguenze della consumerizzazione e del Cloud
Chris Potts

Come vanno gli affari? Chiedetelo al vostro cruscotto
Shaku Atre

Organizzare team di progetto efficienti in ambienti DW/BI
Larissa Moss

Big Data, come e perché
Colin White

Business Capabilities e l'allineamento del business all'IT
Mike Rosen

Il valore della tassonomia nella ricerca delle informazioni
Zach Wahl

BI, ma il Data Warehouse è ancora necessario?
Colin White

Reinventare la Business Intelligence
Barry Devlin

Il cruscotto delle prestazioni: il nuovo volto della Business Intelligence
Shaku Atre

Modelli e processi di User acceptance testing
Randy Rice

I limiti nel gestire l'IT come un Business
Chris Potts

Le componenti fondamentali del Cloud
George Reese

Metadati e DW 2.0
Derek Strauss

BI Open Source: basso costo e alto valore?
Jos van Dongen

Semplicità e requisiti
Suzanne Robertson

Business intelligence e analisi testuale
Bill Inmon

Extreme Scoping™: approcci agili al DW e alla BI
Larissa Moss

Dalla BI a un'architettura IT di livello Enterprise
Barry Devlin

Ambiente efficiente di ricerca di informazioni
James Hobart

Il Business deve trainare la Strategia IT
Chris Potts

Web database: la questione MapReduce (seconda parte)
Colin White

Web database: la questione MapReduce
Colin White

Misura delle prestazioni. I sette comandamenti
Harry Chapman

Le dieci cose che un architetto deve fare per creare valore
Mike Rosen

Sviluppare applicazioni a prova di sicurezza
Ken van Wyk

The ECM Landscape in 2008
Alan Pelz-Sharpe

Ma chi sono gli operatori dell’informazione?
Colin White

Qualità dell’informazione e trasformazione del management
Larry English

Classificazione sistematica delle informazioni
Zach Wahl

L’uso intensivo del Web nelle applicazioni di Bi
Colin White

Enterprise Search
Theresa Regli

La forza dell'astrazione
Steve Hoberman

La strada verso una BI pervasiva
Cindi Howson

Soa, una strategia di test
Randy Rice

Verso una BI più semplice e a minor costo
Colin White

I contenuti “Killer” del Web
Gerry McGovern

Sviluppo iterativo del software per i Dw
Larissa Moss

Qualità delle Informazioni e Datawarehousing
Larry English

Lo scenario Ecm 2008
Alan Pelz-Sharpe

La nascita del Web 3.0
John Kneiling

Documentazione: il dossier del crimine
Suzanne Robertson

L’impatto del Web 2.0 sui portali delle imprese
Colin White

Le tecniche vincenti di IT Management
Ken Rau

Web 2.0
Ed Yourdon

Web di successo se si conosce il cliente
Gerry McGovern

Un approccio alla BI incentrato sui processi
Colin White

Integrare Master Data Management e BI (Parte Seconda)
Mike Ferguson

Integrare Master Data Management e BI (Parte Prima)
Mike Ferguson

Il Project Manager è una Tata
Suzanne Robertson

Web di successo se si conosce il cliente
Gerry McGovern

L'informazione personalizzata
Colin White

La Tassonomia dell'Impresa
Zach Wahl

Managed Meta Data Environment (II parte)
David Marco

Managed Meta Data Environment
David Marco

Migliorare le applicazioni dell'impresa con Web 2.0
James Hobart

La Balanced Scorecard migliora la Performance dell'IT
Harry Chapman

La fusione dei processi dell'impresa grazie a Soa (II parte)
Max Dolgicer

La fusione dei processi dell'impresa grazie a SOA (I parte)
Max Dolgicer

Volere è Potere, in Ogni Senso
Suzanne Robertson

Dimostrate con i numeri il valore dei contenuti del web
Gerry McGovern

Il Back-end della pianificazione strategica dell'It
Ken Rau

L'audit delle prescrizioni di progetto (II parte)
Suzanne Robertson

L'audit delle prescrizioni di progetto (I parte)
Suzanne Robertson

Il Processo di gestione delle informazioni
Ted Lewis

I requisiti come strumento di gestione dei progetti
Suzanne Robertson

Il futuro è nel contenuto killer del web
Gerry McGovern

Alla ricerca del valore tra i pomodori nell'orto
John Favaro

Rilevare i costi sulla base delle attività
Ken Rau

Un percorso verso l'impresa intelligente (II parte)
Mike Ferguson

Un percorso verso l'impresa intelligente (I parte)
Mike Ferguson

Il Data Store Operativo: un lavoro di martello
Claudia Imhoff

Il data warehouse orientato all'impresa
Michael Schmitz

Dieci punti chiave per realizzare balanced scorecard di successo
Harry Chapman

Content management: i contenuti al primo posto
Gerry McGovern

Applicazioni Web ad alta disponibilità
John Kneiling

Il 2004, sarà l'anno in cui abbandoneremo html?
James Hobart

La tecnologia EII ripropone il data warehousing virtuale?
Colin White

Misurare per Gestire
Ken Rau

Volere è Potere, in Ogni Senso
Suzanne Robertson

Realizzare il CPM e l'integrazione della BI
Mike Ferguson

Tutti i punti della FPA
Koni Thompson

Requiem per il Portale?
Colin White

Business Intelligence: dalla teoria alla realtà (II parte)
Shaku Atre

Business Intelligence: dalla teoria alla realtà (I parte)
Shaku Atre

I portali Corporate e di E-business: la nuova generazione del posto di lavoro
Mike Ferguson

I 10 errori da evitare nella realizzazione di un Meta Data Repository (II Parte)
David Marco

I 10 errori da evitare nella realizzazione di un Meta Data Repository (I parte)
David Marco

Usare i modelli per acquisire l'esperienza di progettazione
James Hobart

Realizzare l'Impresa Intelligente
Colin White

.NET or J2EE - Choosing the Right Web Services Framework
John Kneiling

Progettare Applicazioni Mobili di Successo
James Hobart

La Sociologia del Progetto: Identificare e Coinvolgere tutti i Partecipanti
Suzanne Robertson

Integrare la Business Intelligence nell'Impresa (II parte)
Mike Ferguson

Integrare la Business Intelligence nell'Impresa (I parte)
Mike Ferguson

L'Evoluzione del Portale di e-Business (II parte)
Colin White

L'Evoluzione del Portale di e-Business (I parte)
Colin White

Il Consulente WebEAI: Servizi Web, XML e l'Impresa
John Kneiling

Data Mining: Come Gestire le Relazioni con i Clienti Secondo i Principi del CRM
Weaver James

Articoli del mese - Technology Transfer