Testing o collaudo

collaudo e debug

atlantenuove tecnologie

Hardware e software sono sempre più complessi, e più le apparecchiature diventano piccole, più sono capaci di gestire grandi sistemi informativi. Inoltre un sistema informatico è capace di fare tante cose, e perfino di simulare altri sistemi, per cui è sempre più importante e delicata la fase di collaudo, che nei casi migliori affianca tutto il processo di programmazione, integrandosi nelle sue fasi per tutto il suo percorso progettuale. Infine il collaudo è un ambiente privilegiato del problem solving, giacché si fa proprio per evitare rischi, definire problemi, risolverli, eliminare bug, gli insidiosi “insetti” che si annidano nei sistemi abbassandone la qualità. Il collaudo precede e comprende le operazioni di debug, o eliminazione degli errori e dei difetti.

Per comprendere la complessità delle strategie e tattiche di collaudo, pensiamo ad un software – per esempio un programma di scrittura come Word – come se fosse un’automobile. Come si controlla? Si prova su strada l’auto finita, o si prova un pezzo per volta, come il funzionamento di un pistone? Che cosa si controlla del pistone, se è costruito senza difetti o se scorre bene dentro il cilindro? Quante volte lo si fa scorrere nel cilindro? Lo si fa a mano o con un meccanismo automatico?

In base a questi, ed altri generi di problematiche, i controlli possono essere di vari tipi.

Waterfall o sviluppo a cascata: il collaudo inizia appena è finita la prima versione del prodotto, come fase indipendente dalla fase progettuale.

Test driven o sviluppo guidato dal collaudo, che fa parte del progetto in tutto il suo ciclo. Questo metodo è preferito nella programmazione agile e si adatta a modifiche in corso d’opera.

Collaudo alfa, fatto dal programmatore all’interno dell’azienda, con accesso anche al codice sorgente, ogni volta in cui si termina un pezzo di programma.

Collaudo beta, fatto a programma finito e collaudato all’interno, da utenti anche esterni che non possono accedere al codice sorgente e usano il programma in situazioni reali.

Collaudo a scatola bianca quando il programmatore controlla il funzionamento di un componente interno al sistema, accedendo al codice.

Collaudo a scatola nera se il collaudo di sistema è eseguito da normali utenti o beta tester solo attraverso l’interfaccia utente, per verificare il funzionamento finale.

Collaudo di modulo che verifica una singola routine o un modulo del programma che svolge una determinata funzione.

Collaudo di sistema con cui si eseguono le “prove su strada” dell’intero sistema.

Collaudo informale con appunti e commenti liberi.

Collaudo formale con moduli e procedure strutturati.

Collaudo di prestazione, per accertarsi che il sistema faccia tutto ciò che deve fare.

Collaudo di carico, per testare la resistenza del sistema sottoposto a superlavoro.

Collaudo di stress, per vedere fino a che punto il sistema riesce a funzionare in seguito ad errori e danneggiamenti parziali, reali o simulati.

Collaudo di regressione, per controllare se nuove modifiche non hanno compromesso le parti precedentemente validate, e se la nuova versione non sia meno buona della precedente.

Infine si adottano metriche e certificazioni per unificare i criteri di collaudo in modo da renderli condivisibili e confrontabili fra un produttore e l’altro.

La verifica controlla se componenti e sistema funzionano correttamente dal punto di vista tecnico (il pistone scorre bene nel cilindro).

La validazione controlla se componenti e sistema rispondono alle richieste del cliente o al briefing del progetto (la macchina ha una buona accelerazione).

Nell’XP si adotta il pair programming per sviluppare il software: due programmatori lavorano appaiati sullo stesso computer, uno scrive, l’altro controlla man mano ciò che viene scritto. In tal modo gli errori saltano fuori subito e si risparmia tempo nella consegna finale del prodotto.

Alcuni collaudi, specialmente per routine scritte con linguaggi di basso livello, sono automatici. Altri, man mano che si sale di livello avvicinandosi alle interfacce utente, sono manuali, fatti da veri utilizzatori finali o da collaudatori che si comportano come tali. Agenti dotati di intelligenza artificiale tenderanno ad automatizzare buona parte di questo tipo di collaudi, perché il collaudo automatico può esser fatto molto più velocemente su grandi numeri, quindi è molto adatto ai collaudi di carico e agli stress test.