MASSIMIZZARE IL ROI DEI PROGETTI DI TEST AUTOMATION WHITE PAPER – GENNAIO 2011 1 Sommario Executive Summary ...................................................................................................... 4 1 Costi e risparmi tra "NON QUALITÁ" e "QUALITÁ"................................................. 5 1.1 Il più comune TEST AUTOMATION "Misundestanding" ..................................... 5 1.2 Breve Tassonomia Tecnologica......................................................................... 6 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3 Costo Costo Costo Costo del software....................................................................................11 dell'hardware ..................................................................................12 del personale ed addestramento .......................................................12 di scripting (o codifica) dei casi di test...............................................13 I Benefici dell’Automazione del Test.......................................................................14 2.1 Automazione dei test : quali sono i benefici tangibili? .......................................14 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2 Velocità e precisione ................................................................................14 Profondità ...............................................................................................14 Riutilizzo .................................................................................................14 Gestibilità................................................................................................14 Proattività ...............................................................................................15 Ripetibilità e disponibilità .........................................................................15 Automazione dei test : quali sono i benefici intangibili?.....................................15 2.2.1 2.2.2 2.2.3 3 per il Test Funzionale.................................................................. 6 per il Test di Performance e Carico .............................................. 7 per il Test Unitario ...................................................................... 7 per il Vulnerability Assessment .................................................... 8 per l’analisi statica del codice ...................................................... 9 di analisi runtime ........................................................................ 9 per la gestione della qualità........................................................10 Automazione dei test : quali sono i costi da affrontare? .....................................11 1.3.1 1.3.2 1.3.3 1.3.4 2 Strumenti Strumenti Strumenti Strumenti Strumenti Strumenti Strumenti Formalizzazione del processo di test .........................................................15 Customer Retention ed Immagine Aziendale .............................................15 Incremento della professionalità dei tester ................................................15 Alcune cause di fallimento e suggerimenti per evitarli .............................................16 3.1 Assenza di una metodologia ...........................................................................16 3.2 Assenza di un approccio progettuale ...............................................................16 3.3 Serializzazione tra Sviluppo e Test ...................................................................16 3.4 Focalizzazione sul test della GUI ......................................................................17 2 4 5 3.5 Scarsa modularizzazione degli script di test automation ....................................17 3.6 Utilizzo di risorse inadeguate...........................................................................18 3.7 Best Practices per il mantenimento della suite di Test .......................................18 Il Calcolo del ROI ..................................................................................................19 4.1 Come valutare se un'applicazione può essere candidata per l'automazione ...?...19 4.2 Tabella esempio per il calcolo del ROI .............................................................19 4.3 Conclusione ...................................................................................................20 Il Centro di Competenza PALM..............................................................................21 5.1 La Metodologia PALM ....................................................................................21 5.2 Modalità di Erogazione ...................................................................................22 5.3 Primeur: Profilo della Società ..........................................................................22 3 Executive Summary La costante attenzione delle imprese finalizzata ad evitare gli sprechi ed al puntuale monitoraggio della redditività degli investimenti ICT, ha nuovamente "rispolverato" il ROI (Return Of Investment)come importante unità di misura, su cui basare la valutazione di fattibilità di ogni progetto. Il ROI è entrato a far parte del lessico aziendale e la sua valorizzazione, è spesso richiesta ed utilizzata dal management, per confrontare tra loro offerte similari di prodotti e servizi o per decidere se intraprendere o meno un’iniziativa progettuale. Ma se la formula per il calcolo del ROI (valore attuale netto di o beneficio derivato da Investimenti / Costo iniziale) può sembrare una semplice equazione, la difficoltà consiste nel determinare il valore dei benefici intangibili derivanti dall’iniziativa (per esempio, gli aspetti di razionalizzazione/ottimizzazione, miglioramento dell’immagine aziendale, mancata competitività ecc.). Spesso l’investimento richiesto non produce direttamente entrate misurabili, o, in altri casi, i cost-driver individuati per il calcolo, risultano scarsamente impiegabili per assenza di dati storici reali, percepiti unicamente come sensazione difficilmente trasformabile in un numero.L’automazione del test, rientra proprio in questa categoria di iniziative ICT, dove gli aspetti d’indeterminazione dei benefici conseguibili (anche se immaginabili) spesso non consentono una precisa valorizzazione del ritorno dell’investimento, rallentando il management nel processo decisionale, pur riconoscendone i vantaggi ottenibili. Allo scopo di fornire un ulteriore ausilio nelle valutazioni di fattibilità, il seguito del documento vuole riassumere ed evidenziare, quali sono i vantaggi derivanti dall’automazione del processo di test delle applicazioni software, in termini più ampi del solo calcolo del ROI, cercando di analizzarne il reale valore. Prelevando le informazioni dall’esperienza diretta di Primeur e dai numerosi studi effettuati al riguardo da IBM e da analisti del settore, si è cercato di produrre un documento di sintesi che evidenzi i benefici ottenibili da tali soluzioni, senza sottovalutare le reali problematiche tecnicoorganizzative di adozione e manutenzione dei prodotti di test automatico, che costituiscono il maggior ostacolo e motivo d’insuccesso di progetti di questo tipo. 4 1 Costi e risparmi tra "NON QUALITÁ" e "QUALITÁ" Che la "prova", il "test" o il "collaudo" (si scelga il termine più appropriato alla propria organizzazione), costituisca una grossa fetta dello spesa relativa allo sviluppo di qualsiasi tipologia di software, è una verità ormai universalmente riconosciuta; così come è assodato che il test sia un male altrettanto universalmente necessario, per il raggiungimento di standard qualitativi che consentano di proporre competitivamente prodotti e soluzioni sul mercato. Studi dell’Istituto Nazionale del Commercio USA hanno valutato intorno ai 60 miliardi di dollari, il costo della difettosità del software per le aziende americane nell’ultimo anno. Gli stessi studi hanno stimato che una gestione più strutturata del processo di test, con un potenziamento delle infrastrutture dedicate a tale scopo, permetterebbe, con una migliore e preventiva individuazione dei "bachi", un risparmio di circa un terzo della cifra di soldi persi, citata in precedenza. In questa categorie di infrastrutture rientrano le tecnologie per la gestione e l’automazione dei test. In particolare, con le attuali tendenze di mercato che vedono l’accentuarsi dei modelli di sviluppo in outsourcing ed offshoring, un accurato processo di test, diviene per il committente l’unico mezzo di controllo ed ownership della qualità dei servizi messi in produzione. 1.1 Il più comune TEST AUTOMATION "Misunderstanding" Che cosa s’intende con l'automazione dei test? L'automazione dei test si ottiene mediante l'uso di strumenti dedicati per registrare ed automatizzare l’esecuzione delle transazioni di business e le operazioni di sistema, allo scopo di verificare l’aderenza di un’applicazione ai requisiti funzionali e non funzionali richiesti, la correttezza architetturale, la scalabilità e le prestazioni. Gran parte degli strumenti di test automation sono dotati di editor, linguaggi di programmazione (es: Visual Basic, Java, ecc.) e relativi compilatori oppure basano il loro funzionamento su scripting language standard (Javascript) o proprietari. Questo significa, e forse questo è il fraintendimento più comune, che non sono solo strumenti di registrazione di macro e successiva riproduzione, ma altresì ambienti di programmazione pienamente funzionanti e come tali devono essere trattati. L’utilizzo di tali tecnologie per la semplice registrazione e riproduzione dei programmi in modalità point-and-click è la maggior causa di fallimento delle iniziative di testing factory. Per l’adozione di strumenti di test automation occorre avvalersi quindi di risorse con adeguate competenze di programmazione per la registrazione, la personalizzazione ed il mantenimento dei casi di test automatizzati. 5 1.2 Breve Tassonomia Tecnologica I prodotti di Test Automation sono tipicamente dedicati a verificare che le applicazioni testate rispettino i requisiti espressi relativi a: funzionalità, prestazioni, sicurezza, affidabilità, ecc. Un’altra classe di strumenti che ha uno scopo analogo ma un differente approccio è rappresentato dagli strumenti per l’analisi della qualità delle applicazioni (statica o runtime). I primi operano una scansione del codice sorgente per verificare se sono state seguite le linee guida di scrittura, se sono presenti errori di progettazione o punti di vulnerabilità ad attacchi informatici. I secondi permettono l’analisi delle applicazioni in esecuzione fornendo un vero e proprio laboratorio per l’esecuzione controllata delle applicazioni. La suite Rational di IBM è la più completa sul mercato della qualità applicativa, offre all’utilizzatore una vasta gamma di moduli e funzionalità in grado di coprire tutti gli aspetti necessari all’esecuzione e gestione del test, permettendo di esercitare qualsiasi tipo di verifica sul software applicativo e sull’infrastruttura sistemistica di base. 1.2.1 Strumenti per il Test Funzionale Questa tipologia di strumento è in grado di registrare le interazioni tra utente finale ed applicazione testata, registrando le azioni intraprese dall’utente sugli oggetti presenti nella GUI dell’applicazione, dei dati trasmessi e delle interfacce generate dall’applicazione. Tali interazioni vengono registrate su uno script (tipicamente in linguaggio di programmazione standard come Java o Visual Basic) che può essere ritoccato da sviluppatori ed eseguito per riprodurre automaticamente l’intera sequenza di azioni verificando puntualmente i risultati forniti dall’applicazione. Tali strumenti vengono generalmente impiegati per le funzionalità dell’intera applicazione (ad esempio test di accettazione/regressione). Figura 1 - Rational Functional Tester: registrazione automatica di un test case 6 1.2.2 Strumenti per il Test di Performance e Carico Consistono un ambiente per la registrazione/definizione dello script di test, un ambiente per la definizione del carico di lavoro ed un ambiente per l’esecuzione dei test e la raccolta dei dati sulle prestazioni dell’applicazione. La funzionalità su cui testare le performance deve essere accuratamente scelta tenendo conto dell’architettura dell’applicazione e dell’infrastruttura che la supporta. Per la generazione del carico di lavoro vengono utilizzati appositi agenti in grado di simulare da un’unica postazione fisica l’attività di molti utenti concorrenti. I tempi di risposta (endto-end) dell’applicazione vengono misurati per ogni singola sessione. É inoltre possibile analizzare le performance di tutta l’infrastruttura fisica (banda di rete, memoria utilizzata, I/O) o applicativa (tempi di risposta dei singoli metodi/funzionalità) permettendo di risalire alle cause di eventuali malfunzionamenti o di tempi di risposta non adeguati. Figura 2 - Rational Performance Tester: risultati di una sessione di stress test 1.2.3 Strumenti per il Test Unitario Si tratta di strumenti utilizzati dai programmatori per testare le singole parti (unità) del codice sorgente che compone l’applicazione sviluppata. Nel caso di linguaggi di sviluppo object oriented l’unità è rappresentata dal metodo dell’oggetto sviluppato. Tali strumenti consentono una verifica puntuale molto approfondita del codice sorgente e sono molto utili quando si adottano metodiche di sviluppo Agili (ad esempio Test Driven Development o Continuous Integration di estreme Programming). Tali metodiche prevedono che lo sviluppo dei test unitari vada di pari passo con lo sviluppo del codice sorgente e che ogni modifica effettuata venga prontamente verificata ai vari livelli di integrazione. Purtroppo il tempo di introduzione di tali strumenti su code base estese (ad esempio nel caso di applicazioni già in produzione a cui bisogna fare manutenzione evolutiva e/o correttiva) risulta molto alto e richiede un’introduzione graduale. 7 Figura 3 – JUnit: risultati del test 1.2.4 Strumenti per il Vulnerability Assessment Questi strumenti effettuano test automatici di intrusione sull’applicazione identificando le possibili vulnerabilità a cui l’applicazione è soggetta. L’identificazione delle vulnerabilità viene effettuata attraverso la simulazione una serie di attacchi seguendo le tecniche di hacking più sofisticate e registrando quali dei tentativi effettuati vengono respinti e quali no. Al termine della sessione tali strumenti producono un report che riporta un indicatore del grado di sicurezza dell’applicazione e l’elenco delle vulnerabilità individuate con i possibili rimedi. Figura 4 - Vulnerability report prodotto con Rational Appscan 8 1.2.5 Strumenti per l’analisi statica del codice Questi strumenti per lo più destinati ai programmatori, consentono mediante l’analisi del codice sorgente una valutazione preventiva della qualità del codice sviluppato secondo metriche standard internazionali e/o secondo regole di codifica specificamente definite. Oltre alle verifiche sulla qualità e sulla complessità del codice sviluppato, tali analisi si possono concentrare sul corretto utilizzo delle risorse operative utilizzate (ad esempio un determinato stream di I/O viene aperto ma in determinate situazioni non viene chiuso) e sulla vulnerabilità del codice sviluppato a possibili attacchi (ad esempio SQL Injection). Figura 5 - Rational Software Analyzer: configurazione delle regole 1.2.6 Strumenti di analisi runtime Sono strumenti che consentono di strumentare l’applicazione che viene eseguita per verificare il corretto comportamento dell’applicazione in tutte le situazioni. Attraverso questi strumenti è possibile verificare la corretta strutturazione dei programmi (ad esempio per programmi multithread) identificando colli di bottiglia, trovare eventuali risorse non correttamente gestite (ad esempio memoria allocata ma non rilasciata), nonché di rilevare durante l’esecuzione dei test, la percentuale di "copertura del codice" (quali sono i cammini di programma eseguiti e quali no). 9 Figura 6 - Applicazione Java profilata tramite TPTP 1.2.7 Strumenti per la gestione della qualità Questi strumenti forniscono un set completo di funzioni per il governo della qualità delle applicazioni. Sono solitamente dotati di un repository nel quale vengono memorizzate tutte le informazioni necessarie alla gestione della qualità (i piani di test, i casi di test ed i loro agganci con gli script che li automatizzano, le suite di test ed i risultati delle esecuzioni delle varie sessioni di test). A partire da queste informazioni è possibile ottenere un’ampia reportistica documentativa e statistica in forma testuale o di dashboard (indicatori rappresentati graficamente). Operano inoltre come coordinatori centralizzati del workflow delle varie attività di test e possono essere integrati con gli altri tool per la gestione del ciclo di vita delle applicazioni (per esempio prodotti di Change Management, Requirement Management, Service Desk, ecc.) ed in particolare con gli strumenti di test automation per coordinare l’esecuzione delle suite di test nei diversi ambienti. 10 Figura 7 - Rational Quality Manager: dashboard dei test di prodotto 1.3 Automazione dei test : quali sono i costi da affrontare? Ci sono fondamentalmente quattro diverse categorie di costi connessi con l'automazione di test. 1.3.1 Costo del software Genericamente parlando il costo delle licenze software varia ovviamente per ogni singolo produttore e dalla singola situazione di vendita contingente. I valori riportati nel seguito servono unicamente a fornire un ordine di grandezza medio dell’investimento. Per il collaudo funzionale il costo del software in media ammonta a qualche migliaio dollari per utente, mentre il costo di uno strumento di verifica delle prestazioni può oscillare da qualche decina di migliaia di dollari (se si utilizza ad esempio la sola simulazione virtuale di poche centinaia di utenti via web – http) a cifre molto più considerevoli all’aumentare del numero di utenti virtuali e dei protocolli utilizzati. Esistono numerose tecniche per simulare un carico di lavoro molto superiore al numero di utenti utilizzati che in genere si basano sulla riduzione del tempo tra una operazione e la successiva da parte di un utente virtuale. Tali tecniche consentono un risparmio considerevole dei costi di licenza. 11 1.3.2 Costo dell'hardware Il costo dell'hardware necessario a supportare i test è generalmente contenuto. Nel caso di test funzionali sarà necessario predisporre un ambiente di sviluppo dei test (che comprenda una postazione di lavoro per ogni test engineer) ed un computer per ogni ambiente di esecuzione dell’applicazione da testare specifico in cui si intende eseguire i test (in presenza di una specifica configurazione di hardware, versione di sistema operativo, database, librerie software, etc). Per evitare il proliferare di ambienti di esecuzione è utile prendere in considerazione l’uso di macchine virtuali ospitate da uno stesso computer fisico. Il costo dell’hardware per il controllo prestazionale (load e stress test) può essere molto superiore. In genere, quando si parla di qualsiasi tipo di test multi-utente, i produttori di strumenti basano la capacità in termini di utenti virtuali. Un utente virtuale è un processo o un thread che può emulare una sessione di accesso. Il test prestazionale richiede in genere una macchina master centrale che opera come schedulatore e coordinatore dell’esecuzione delle sessioni di test su le macchine satelliti dove sono installati appositi agenti che simulano gli utenti virtuali. Ogni utente virtuale consuma le risorse del computer satellite. Un singolo utente virtuale può consumare da 300KB a 1 MB di RAM durante l’esecuzione. Inoltre, la CPU di un desktop può supportare dai 100 ai 250 utenti virtuali contemporanei. Va da se quindi che il costo dell’hardware per il performance test è in stretta dipendenza dal numero di utenti contemporanei che occorre simulare. Per ridurre sensibilmente questa tipologia di investimenti, IBM offre la possibilità di utilizzare l’intera infrastruttura necessaria al test automatico, mettendo a disposizione la suite Rational in cloudcomputing. In questo caso si può parlare (in svariate forme) di noleggio dell’intero ambiente di Testing Factory senza ulteriori oneri aggiuntivi. 1.3.3 Costo del personale ed addestramento L’impianto della testing factory automatizzata ed il suo mantenimento nel tempo, necessita di personale dedicato e preparato. Per il test funzionale gli skill richiesti possono essere ricondotti a quelli necessari per lo sviluppo applicativo (coordinatori, analisti/programmatori, tester). Per lo sviluppo degli script di test occorre un’esperienza di almeno 2 anni di programmazione applicativa. Mediamente una risorsa diviene autosufficiente nel giro di 3-6 mesi a seconda della complessità intrinseca delle applicazioni da testare. Una scarsa conoscenza delle tecniche di sviluppo degli script di test comporta una scarsa qualità degli script sviluppati con la conseguenza di avere degli script scarsamente automatici e dei costi di manutenzione degli stessi script che aumentano a dismisura. Per contro una conoscenza approfondita degli strumenti di test e delle best practices consente lo sviluppo di script che minimizzano i costi di manutenzione anche nel caso di modifiche radicali alle interfacce delle applicazioni (situazione tipica nei cambi di versione dell’applicazione). Le competenze necessarie ad effettuare correttamente i test di performance vertono maggiormente sugli aspetti architetturali e sistemistici. Per queste tipologie di test è necessario disporre di una competenza approfondita dell’applicazione e dell’ambiente che la ospita in modo da individuare le funzionalità da invocare, la crescita del carico di lavoro, l’interpretazione dei dati relativi ai tempi di risposta o all’occupazione delle risorse di sistema o applicative, l’individuazione delle cause di eventuali malfunzionamenti o ritardi. 12 1.3.4 Costo di scripting (o codifica) dei casi di test Dal punto di vista funzionale è rappresentato dal tempo di registrazione dei casi di test e dal tempo di adattamento ed estensione degli stessi (codifica dello script). Il tempo di customizzazione degli script è sicuramente più oneroso dell’esecuzione del test manuale, ma diventa vantaggioso già dopo poche ri-esecuzioni dello stesso. Gli script sviluppati devono poi essere mantenuti nel tempo e seguire il variare delle applicazioni. Primeur ha messo a punto una propria metodologia e strumentazione per limitare al massimo i costi di manutenzione ed i tempi di esecuzione dei test di regressione. Per ridurre i costi di manutenzione degli script di test funzionali è necessario seguire un insieme di pratiche che minimizzino le dipendenze di tali test dal look and feel delle applicazioni attraverso l’identificazione diretta degli oggetti presenti nell’interfaccia applicativa. Per ridurre i tempi di esecuzione dei test di regressione, a partire dal change set (insieme di moduli che sono stati modificati per il nuovo rilascio) vengono identificati tutti i test case su cui tali modifiche possono avere impatto e si costruisce una suite di test specifica che contiene tutti e soli i test necessari. In questo modo vengono limitati al minimo i tempi di esecuzione dei test e nel contempo vengono eseguiti tutti i test che insistono su tali moduli e che possono quindi rilevare eventuali malfunzionamenti. 13 2 I Benefici dell’Automazione del Test 2.1 Automazione dei test : quali sono i benefici tangibili? Di seguito vengono elencati i principali e reali vantaggi ottenibili nell’automazione del processo di test. 2.1.1 Velocità e precisione L’automazione rende il test più accurato del controllo manuale. L’esecuzione delle sessioni di collaudo può arrivare ad essere anche 50 più veloce dell’esecuzione manuale, robotizzando l’intera attività di inserimenti, cancellazioni, aggiornamenti e visualizzazioni. Una Suite di test comprende generalmente migliaia di casi di test che sollecitano l’applicazione con richieste che riportano valori ammissibili, valori limite e valori non ammessi e verificando per ogni richiesta il corretto funzionamento dell’applicazione. Gli strumenti automatici risultano inoltre notevolmente più precisi e rigorosi dell’attività umana (in media 3 errori ogni 1000 battute), non si stancano ed annoiano mai, non prendono scorciatoie o fanno assunzioni di ciò che funziona. 2.1.2 Profondità Gli strumenti di automazione consentono di accedere e controllare oggetti, dati, protocolli di comunicazione e sistemi operativi che un tester manuale non sempre è in grado di fare. Questo permette una maggiore profondità ed ampiezza dei test. 2.1.3 Riutilizzo Una volta sviluppati i test case, i benefici a lungo termine sono derivati attraverso il riutilizzo degli stessi, in modo particolare nei test di regressione che spesso vengono trascurati: si tende a concentrarsi sulla verifica del funzionamento della nuova funzionalità, tralasciando di controllare che ciò che è stato programmato in precedenza continui a funzionare. Le applicazioni sono in continuo cambiamento e la loro complessità si incrementa di volta in volta nel tempo, conseguentemente il numero dei test da eseguire è sempre in aumento. I test engineer possono aggiungere casi di test alla suite e ripetere gli stessi controlli, senza spreco di tempo migliaia di volte nella stessa unità di tempo. 2.1.4 Gestibilità La capacità di gestire l’intero ambiente di test, i suoi oggetti e risultati attraverso tool dedicati, porta ad una razionalizzazione dell’intero processo e aumenta il livello di maturità dell’azienda (cfr CMMI). 14 2.1.5 Proattività Più volte si è ribadito di quanto danno porti la scoperta di una difettosità in ambiente di produzione. L’automazione del test aiuta sensibilmente ad individuare i problemi in modo precoce, durante le fasi di sviluppo, riducendo i rischi di fallimento in produzione ed i relativi costi di rispristino. 2.1.6 Ripetibilità e disponibilità Una suite di automazione fornisce un processo ripetibile per verificarne sia le funzionalità che la scalabilità delle applicazioni, e le batterie di test possono essere eseguite in qualsiasi momento del giorno o della notte senza la necessità del presidio umano. 2.2 Automazione dei test : quali sono i benefici intangibili? 2.2.1 Formalizzazione del processo di test Il flusso d’informazioni e la precisa esplicitazione dei requisiti, necessaria al processo di automazione, rafforza la strutturazione del processo stesso tra i vari dipartimenti aziendali, rendendone più agevole il controllo ed evidenziandone eventuali carenze ed inefficienze. 2.2.2 Customer Retention ed Immagine Aziendale Quando i sito web non funziona correttamente od è poco performante, i clienti possono abbondare il fornitore dei servizi per la concorrenza. Qual’ è il costo per l'azienda di tale scenario? Oppure, una transazione di home banking è stata malevolmente intercettata perché non correttamente protetta dalle intrusioni sulla rete? Quale danno per l’immagine? L’esecuzione sistematica dei test aiuta a garantire un servizio di qualità per il clienti sia interni che esterni. 2.2.3 Incremento della professionalità dei tester L’eliminazione delle attività ripetitive, svolte dagli addetti all’esecuzione dei test, che devono eseguire manualmente gli stessi casi più e più volte conduce ad un progressivo aumento della professionalità individuale. L’utilizzo di tool vicini all’ambiente di programmazione, rende l’attività più interessante e stimolante, aumentando il coinvolgimento ed il grado di responsabilità e professionalità dei singoli. 15 3 Alcune cause di fallimento e suggerimenti per evitarli Prendendo spunto dall’esperienza maturata internamente nei laboratori Primeur e nell’implementazione di infrastrutture di test automation presso i clienti, di seguito sono elencate le criticità principali che potrebbero comportare di fallimento del progetto ed al tempo stesso alcune regole di base per superarle, in modo che l’iniziativa possa essere di successo. 3.1 Assenza di una metodologia Occorre attuare una metodologia strutturata di automazione dei test. Implementare cioè un approccio pragmatico ai test che sia controllabile, ripetibile, misurabile, migliorabile, automatizzato e basato sul rischio. Controllabile: scomposizione del progetto in fasi modulari, con compiti definiti, risorse assegnate e scadenze concrete. Ripetibile: in modo che altri possano facilmente portare avanti il processo che è stato definito. Misurabile: in modo tale che l’effort sia quantificabile e comparabile con i risultati ottenuti (numero di difetti riscontrati in ogni fase, trend dei livelli di gravità dei differenti, livelli di performance, ecc.). Migliorabile: tanti più difetti riesco a riscontrare nel ciclo di collaudo tanti meno occorrerà gestirne in fase di produzione. Automatizzato: l’automazione coma già detto in precedenza, riduce il rischio di errori e trova la sua massima redditività d’impiego nei test di regressione e di carico. Basato sul rischio: effettuando cioè un analisi approfondita delle funzionalità dell’applicazioni focalizzandosi sulle specifiche necessità di test di quelle più critiche ed utilizzate. 3.2 Assenza di un approccio progettuale Spesso l'automazione dei test non è trattata come un vero e proprio progetto con relativi obiettivi, pianificazione, risorse e time-to-market adeguati. L’attività viene piuttosto interpretata come l’impiego di una comodity per un utilizzo strettamente tattico. La tecnologia viene vista come un semplice registratore ed esecutore di Macro. Si tratta di un approccio totalmente errato. Occorre trattare l'automazione dei test come si farebbe con un progetto di sviluppo gestendone in modo corretto i costrain di tempi e risorse disponibili commisurati agli obiettivi da raggiungere. 3.3 Serializzazione tra Sviluppo e Test Spesso l’esecuzione dei collaudi avviene unicamente al completamento della codifica dell’intera applicazione ed anche la progettazione dei casi di test, è solitamente poco correlata ai requisiti raccolti durante le varie fasi di analisi (funzionale e tecnica) e dall’evoluzioni che durante lo sviluppo, gli stessi hanno subito in virtù di revisioni, affinamenti ed introduzione di altre richieste. 16 Questo metodo di sviluppo a cascata (Waterfall) che detta che la fase di test deve avvenire a valle del system design, dell’analisi di dettaglio ed a completamento dell’intera codifica, è un approccio che ha funzionato bene quando i sistemi informativi erano totalmente mainframe (single tier). Con le odierne infrastrutture distribuite, multi-tier, per loro natura complesse ed i nuovi paradigmi di sviluppo iterativo, occorre modificare questo tipo di approccio, traguardando l’impiego di metodologie di Agile Testing. Inizio Rilascio Sviluppo, Test & Verifiche Sviluppo, Test & Verifiche Sviluppo, Test & Verifiche Il test e collaudo va anticipato alla fase di very early development dedicando l’effort necessario al test design, alla pianificazione dei collaudi, l’esecuzione e la tracciatura dei risultati con i requisiti di progetto. L’automazione ben si adatta a cicli di sviluppo iterativo rendendo la ripetitività delle prove altamente performante ed abbassando notevolmente i costi di verifica. 3.4 Focalizzazione sul test della GUI Con le odierne architettura eterogenee, non è più sufficiente dichiarare che l'applicazione non funziona correttamente o non scala, basandosi unicamente sul test pilotato dall’interfaccia utente. Il personale tecnico ha bisogno di sviluppare una adeguata strategia, supportata da strumenti tecnologici moderni, che consentano di determinare dove esattamente si verificato il problema e mantenendo il controllo e la tracciatura del test, attraverso tutti gli strati infrastrutturali (sistemi operativi, rete, middleware, application server, erp, web, ecc.) implicati nel funzionamento dell’applicazione. Ciò richiede un approccio basato su componenti in cui l’architettura dell'applicazione è scomposta in componenti più piccoli. I dati vengono rintracciati e verificati dal primo livello-tier fino all’ultimo attraversato. 3.5 Scarsa modularizzazione degli script di test automation Come si è detto nelle pagine precedenti, i tools di automazione sono da consideransi veri e propri ambienti di programmazione il cui utilizzo è quello di codificare programmi aventi lo scopo di robotizzare l’esecuzione e la verifica dei casi di test. 17 Occorre quindi applicare nello sviluppo degli script gli stessi accorgimenti se regole applicabili ad una corretta programmazione: Evitare di scrivere script troppo lunghi, nidificati e complessi, ma piuttosto scomporli in librerie di funzioni elementari, modulari e richiamabili in differenti sessioni di prova. Evitare la registrazione di navigazioni ridondanti. Utilizzare una naming convention parlante, che renda fruibile l’ambiente anche dai meno esperti e faciliti la manutenzione. 3.6 Utilizzo di risorse inadeguate L’impiego di qualsiasi strumentazione porta maggiori benefici, quanto più la si conosce e ne si domina l’intera potenzialità. I tool di automazione non sono particolarmente complessi da utilizzare ma al tempo stesso, per rendere proficuo l’investimento, devono essere sfruttate a pieno le loro potenzialità. E’ necessario perciò dotarsi di personale con skill adeguati, supportati da un corretto addestramento ed affiancamento da parte di personale esperto. Si tenga in considerazione che l’autonomia operativa si raggiunge in un paio di settimane mentre per la vera e propria expertise occorrono almeno tre-sei mesi di utilizzo intensivo sul campo. 3.7 Best Practices per il mantenimento della suite di Test Spesso succede che dopo aver inizialmente investito nella creazione di suite per l'automazione (magari legata ad uno sviluppo strategico importante), il cliente non mantiene aggiornata la suite per collaudare le future versioni dell’ applicazione (nuove build). Perché spendere tempo e denaro per lo sviluppo di una solida suite di automazione test e quindi non supporto e mantenerla? Perché l’investimento iniziale possa essere remunerativo, le suite di test devono essere mantenute seguendo di pari passo l’evoluzione di ogni nuova build e rilascio di un'applicazione. Occorre programmare questo tipo di manutenzione e dedicare una struttura organizzativa centralizzata interna all’azienda (od appaltata ad un fornitore esterno) che possa prendere in carico di analizzare gli impatti sull’environment di test, dell’evolversi delle applicazioni ed effettui le eventuali modifiche al parco di test script. Il lavoro di manutenzione degli script di test richiede in genere il 20% del tempo impiegato originariamente, nella creazione degli stessi. Primeur è in grado di offrire un servizio di outsourcing per questo tipo di esigenza consentendo al cliente un efficientamento dell’assegnazione delle risorse interne unitamente alla salvaguardia dell’investimento. 18 4 Il Calcolo del ROI 4.1 Come valutare se un'applicazione può essere candidata per l'automazione ...? Fermo restando il fatto che non tutto il test può o deve essere robotizzato, in caso di risposta affermativa a una di queste domande, l'applicazione in oggetto è un buon candidato per l'automazione, commisurato al ritorno d’investimento ottenibile. L’applicazione deve operare su configurazioni hardware/software differenti? L’applicazione prevede di avere almeno 5 nuovi rilasci ? Lo sviluppo dell’applicazione è dato in outsourcing od offshoring ed il onorare un contratto basato su SLA (Service Level Agreement)? fornitore deve L’applicazione prevede più di 5 utenti contemporanei e/o concorrenti? Ci sono task ripetitivi che vengono eseguiti per mantenere l’applicazione (per esempio caricamento dei dati, configurazione, ecc.)? 4.2 Tabella esempio per il calcolo del ROI La tabella riportata di seguito, ha lo scopo di fornire una piccola guida per la raccolta dei dati più significativi, necessari ad una veloce valutazione circa la convenienza dell’automazione del test di un applicazione, rispetto ad un’esecuzione totalmente manuale. 19 Voci Risorsa x Test Manuale Totale Costi Test Manuale Risorse x Test Automatico Totale Costi Automazione Costo orario della risorsa Effort per la progettazione di 1 Test Case Effort per la progettazione di (*)100 Test Case Effort per l’automazione dei Test Case Effort per esecuzione ed analisi di ogni singolo Test Case Effort per esecuzione totale sulla 1° release dell’applicazione N. di release applicative previste Effort per esecuzione totale sulle release successive Numero Manutenzioni Correttive/Evolutive Previste (su base annua) Effort per esecuzione totale Manutenzioni N. Piattaforme operative Effort per esecuzione Piattaforme Operative TOTALE 4.3 Conclusione Il rendimento dell’investimento nell’automazione di test è abbastanza ovvio. Se utilizzate correttamente, le suite di automazione si riveleranno molto più efficienti ed efficaci del test manuale per scovare difettosità funzionali e risultato forse l’unico ausilio, per verificare la scalabilità, il carico ed eventuali problemi prestazionali. Le sessioni di test possono essere eseguite durante la notte, nei weekend e festivi, in modo totalmente non presidiato. E’ possibile proattivamente emulare il maggior numero di utenti effettuando qualunque mix di operazioni necessarie. Pertanto, il ROI, (=benefici tangili+intangibili / costo iniziale) del test automatizzato garantisce un ritorno enorme, a patto che le insidie e le criticità elencate nelle pagine precedenti vengano affrontate e superate. 20 5 Il Centro di Competenza PALM Il Centro di Competenza PALM dispone di profonde competenze e documentata esperienza sulla problematica del governo dello sviluppo di applicazioni. Più di venti anni di esperienza nello sviluppo di infrastrutture software su sistemi eterogenei (Windows, Linux, Unix, z/Os, ecc.), la solida partnership con IBM, la profonda conoscenza dei tool Rational e WebSphere comprovata da numerose certificazioni tecniche e dagli add-on sviluppati, sono gli elementi che distinguono l’offerta Primeur nel campo dell’Application Lifecycle Management. 5.1 La Metodologia PALM La metodologia PALM, frutto della ricerca costante e della profonda esperienza maturata, garantisce il raggiungimento degli obiettivi preposti, fornendo razionali tangibili e misurabili lungo tutto il percorso di svolgimento delle attività di progetto. Assess Improve Execute Plan Figura 8 - La Metodologia Palm Stabiliti gli obiettivi dell’iniziativa, viene condotta una fase di Assessment del processo attuale che si pone l’obiettivo di comprendere il livello di maturità dell’organizzazione del cliente, in termini di strutturazione dei processi e degli strumenti metodologici e tecnologici utilizzati. Una volta che è ben chiaro dove siamo e dove vogliamo arrivare, viene definito un percorso (piano di attività) per raggiungere gli obiettivi definiti. Tipicamente viene seguito un approccio prototipale di tipo Think big and start small, in modo da fornire al cliente la visione complessiva del risultato a tendere, però saldamente articolata in piccoli passi evolutivi, precisamente definiti per contenuti e tempi di realizzazione, in modo da consentire risultati tangibili e misurabili a breve/medio termine, che evidenzino il miglioramento del processo ALM rispetto alla situazione precedente e lo sforzo economico sostenuto per raggiungere l’obiettivo. 21 Una costante misurazione dei livelli di servizio e del grado di utilizzo della soluzione, consentirà inoltre di diluire in tempi ragionevoli gli impatti organizzativi e le resistenze al cambiamento, nonché la verifica del progressivo grado di adozione della soluzione. 5.2 Modalità di Erogazione I servizi offerti da Primeur coniugano aspetti metodologici di gestione della qualità con l’esperienza che Primeur ha maturato in più di 20 anni di sviluppo di infrastrutture software su sistemi eterogenei e si avvalgono dei migliori tool presenti sul mercato per offrire una soluzione adatta a qualsiasi realtà aziendale dalla piccola software house che lavora con team Agili, all’organizzazione enterprise che impiega team distribuiti su scala globale utilizzando processi altamente strutturati e fornitori in outsource o offshore. I servizi offerti possono essere erogati secondo due modalità: "*In house*": Il cliente si dota di tecnologie, e risorse a supporto del processo di sviluppo, che viene gestito operativamente dalla struttura organizzativa ICT interna del cliente. "*As a service*" (SAAS): Il processo di "Application Lifecycle Management" viene commissionato come servizio. Le nostre soluzioni sono in grado di guidare i team di sviluppo ad ottenere risultati misurabili in termini di efficienza, qualità, valore e innovazione. In questo caso il committente concorda con Primeur tempi, metodi e deliverables della gestione e dell’analisi di qualità del software e relativi SLA che consentano di valutare l’efficienza ed efficacia del servizio stesso. 5.3 Primeur: Profilo della Società Primeur, azienda multinazionale fondata a Genova nel 1986 e presente in Europa, (Italia, Spagna, UK, Irlanda, Svizzera, Benelux (*), Germania (*)). USA(*) e Sud America(*), è uno dei principali produttori di soluzioni middleware per sistemi informatici distribuiti ed eterogenei. (*) tramite Partners/Distributori. Primeur è un IBM Premier Business Partner e presta particolare attenzione agli ambienti IBM WebSphere, Tivoli, Rational e Information Management, offrendo nel contempo soluzioni in tre aree di primaria importanza: Integrazione, Sicurezza e System Management. Primeur fornisce software e servizi per la SOA, middleware di comunicazione, integrazione di applicazioni legacy e sicurezza dati. La base della strategia di Primeur è fondata sul continuo sviluppo della propria tecnologia, basata su SPAZIO Managed File Transfer / Secure (SPAZIO MFT/S) che è ora integrato con l’ambiente SOA di IBM. SPAZIO MFT/S è l’esempio dell’adozione delle tecnologie e standard emergenti, in particolare della Service Oriented Architecture. Grazie a questa strategia i prodotti e le soluzioni Primeur sono disponibili sulle principali piattaforme hardware e software quali: z/OS, UNIX, Windows, OS/400, Linux, Guardian, ecc. Primeur impiega oggi oltre 200 dipendenti. Con più di 500 Clienti nel mondo, Primeur è considerata un partner strategico da più di 100 grandi aziende operanti nelle aree della Finanza, Industria, Servizi. 22 Nel 2007 nel Gruppo Primeur è stata costituita una nuova Società, denominata Primeur Pubblica Amministrazione. Le attività della società sono indirizzate in via prioritaria verso la Pubblica Amministrazione Centrale (PAC) e Locale (PAL), gli Organi, gli Enti e le Società di dette Amministrazioni, le Autorità, gli Organismi nazionali ed internazionali, gli Enti pubblici economici. Attraverso una combinazione di prodotti, servizi ed esperienza qualificata dei "Competence Center" le soluzioni di Primeur possono essere adattate per soddisfare le necessità di ogni tipo di impresa. L’obiettivo del Gruppo Primeur è diventare il "partner tecnologico" dei Clienti nell’implementazione delle infrastrutture, con particolare riguardo alle problematiche di Integrazione, Sicurezza e System Management. In queste aree Primeur offre: Consulenza Analisi e sviluppo progetti Estensioni e integrazioni di tecnologie e prodotti di mercato, per costruire soluzioni rispondenti al 100% alle esigenze dei Clienti Servizi di gestione dell’infrastruttura IT del Cliente Training. Per ulteriori informazioni vi invitiamo a visitare il nostro sito web: http://www.primeur.com/palm o contattarci inviando una mail a [email protected]. 23