L’introduzione del metodo Agile costituisce un elemento di discontinuità nel concetto e nelle procedure del software e soprattutto del testing, cambiando i metodi, le pratiche, la struttura organizzativa, gli skill richiesti e il modo di sfruttare gli strumenti. Ne parliamo con Diego Lo Giudice, Vicepresident e Principal Analyst di Forrester Research e coautore, con Margo Visitacion, di un documento che nel gennaio di quest’anno Forrester ha dedicato alla tematica del testing in ambito Agile focalizzandosi sull'importanza che i team di sviluppo, che adottano la metodologia Agile, includono le pratiche di testing.
“Prima di tutto – ha esordito Lo Giudice – vorrei brevemente inquadrare la problematica del testing in un contesto di sviluppo Agile, precisando che non si tratta di un ‘nice to have’, qualcosa che sarebbe bello avere, ma di una pratica essenziale. Specialmente, l’Agile testing è un processo critico per quelle applicazioni cosiddette ‘moderne’, caratterizzate cioè da contenuti innovativi e dall’esplicarsi in contesti dinamici e particolari, come ad esempio il mondo mobile, il Web e le reti sociali oppure il cloud, che oggi sono una grande opportunità anche per le imprese, ma richiedono un approccio allo sviluppo diverso da quello tradizionale”.
ZeroUno: Che però, suppongo, garantisca tutti quei requisiti di solidità, affidabilità e documentabilità che ogni applicazione destinata al mondo aziendale deve avere…
Lo Giudice: “Assolutamente. Non è che parliamo di Agile perché è qualcosa di simpatico, una moda da inseguire. È certamente un approccio interessante, che motiva le persone e che si potrebbe definire come ‘un po’ di buon senso con tanta disciplina’. Ma il fatto è che occorre realmente un nuovo approccio allo sviluppo al fine di indirizzare le problematiche poste dai grandi cambiamenti del modo di fare business. Occorre accorciare il tempo di delivery delle applicazioni. E occorre soprattutto una grande adattabilità, perché in questo tipo di mondo non si può sapere sin dall’inizio quali saranno tutti i requisiti né, trattandosi di cose nuove, si può sapere quale strada l’applicazione prenderà nel suo sviluppo. Tutto questo, però, senza perdere di vista la qualità, che negli anni è stata trascurata soprattutto nella fase di testing e che serve per sapere non solo se sono state fatte le cose bene, ma se sono state fatte le cose giuste.
ZeroUno: Quindi controllare non solo che le funzioni siano quelle previste, ma che siano quelle che servono al business.
Lo Giudice:“Certo ed è un concetto ben diverso dai processi con cui i team di sviluppo hanno sinora lavorato: cioè stendere una bella lista di requisiti, farla firmare e controfirmare dal business e poi dire ‘lasciateci lavorare, ci sentiamo dopo’. Oggi il testing si deve occupare non solo della qualità tecnica, ma anche della qualità funzionale, che è appunto fare le giuste cose per il business. Come dimostrano i dati che abbiamo raccolto, già lo sviluppo Agile migliora di per sé la qualità, in quanto introduce una rigorosa disciplina e attua un continuo feedback con il business. Ad esempio, la metodologia Scrum* prevede gli stand-up meeting, cioè incontri giornalieri per analizzare i problemi e l’avanzamento del lavoro. Ma che la qualità sia intrinseca nel processo non basta a garantirla nel prodotto. E qui entra in gioco il testing, che con lo sviluppo Agile viene completamente rivoluzionato e diventa l’elemento che fa la differenza, nel senso che per valutare il grado di adozione del metodo Agile si va prima di tutto a guardare come il testing viene fatto. Nell’Agile si fa molto più testing che nello sviluppo tradizionale e soprattutto lo si fa prima. Si lavora con il business analyst sin dall’inizio e la qualità viene sviluppata man mano che procede il progetto, non più alla verifica finale”.
ZeroUno: Com'è il livello di adozione dell’Agile testing e, più in generale, del metodo di sviluppo Agile nelle nostre aziende?
Lo Giudice: “Premesso che seguo da un paio d’anni le nostre imprese, con workshop tenuti presso i clienti, ritengo che il mercato italiano sia abbastanza indietro rispetto all’Europa e indietro rispetto al mondo. Dove, secondo i dati in nostro possesso, tra il 50 e il 60% degli sviluppatori utilizza una qualche forma di metodologia di sviluppo Agile. A mio parere, questo ritardo è dovuto a diversi fattori. Prima di tutto, in Italia di Agile si parla ancora poco. Anche perché è l’argomento dello sviluppo software in generale che viene abbastanza trascurato. Poi, perché i Cio e chi ha una certa responsabilità nell’It aziendale spesso associa lo sviluppo Agile a un approccio superficiale, poco qualitativo, che non segue certi standard e così via”.
ZeroUno: Insomma, sostanzialmente un problema d’informazione e di cultura…
Lo Giudice: “Credo che tutt'ora esista una sottovalutazione dell’importanza che il software ha assunto in questi ultimi anni. È il software che oggi fa davvero la differenza in chiave di competitività ed è lì che stanno le grandi opportunità. Lo sviluppo software è uno strumento di business come gli altri. Se vogliamo innovare, è essenziale un approccio Agile o Lean che permetta di realizzare più velocemente le funzionalità business e si adatti con altrettanta rapidità ai loro cambiamenti, dando un vantaggio strategico. In questo ritardo però un po’ di colpa l’hanno anche i nostri system integrator, dove mancano le competenze: introdurre l’Agile non è una questione di leggersi lo Scrum e imparare ad usarlo. È molto di più, soprattutto quando un’azienda che ha già applicato il metodo su alcuni progetti, apprezzandone i vantaggi, decida di scalare l’approccio a livello enterprise, integrando l’Agile ai processi di governance. Un passo che, secondo stime dello scorso marzo, circa il 27% delle imprese, a livello mondiale, sta affrontando”.
ZeroUno: Certo adottare questo tipo di sviluppo a livello d’impresa richiede di affrontare una complessità di trasformazione non banale. E anche le competenze non sono così diffuse…
Lo Giudice: “Ci sono due salti importanti che le aziende che introducono l’Agile devono fare. Il primo è imparare a utilizzare bene le relative tecniche d’ingegneria. E una di queste è proprio il testing, che introduce pratiche abbastanza dirompenti rispetto a quelle con cui si è abituati a lavorare ed essere organizzati. L’altro problema è che quando si va a scalare ci si deve probabilmente affidare a un system integrator, cioè un outsourcer. Ma per mantenere la qualità e gli standard bisogna che i team Agile sviluppino secondo l’architettura definita dal team architetturale, con il quale quindi ci si deve interfacciare e che viene anch’esso ad essere investito dal cambiamento, non potendo adottare le architetture che conosciamo, troppo pesanti. Non è un passaggio da poco e non stupisce che molte imprese non vi siano preparate. Ma, come dicevo, neanche i system integrator sono davvero preparati. Forse qualcuno pensa di esserlo, ma a mio parere oggi non è ancora così”.
* Lo Scrum, termine preso dal gergo sportivo (è la ‘mischia’ del rugby) e applicato per la prima volta allo sviluppo software nel 1986, è un framework di processo sviluppato da K. Schwaber e J. Sutherland e utilizzato dai primi anni ’90 per gestire secondo un approccio iterattivo e incrementale lo sviluppo di progetti e prodotti software complessi