Test o croce
Frequentando i corsi universitari di informatica, uno dei princìpi cardine che viene acquisito fin dai primi corsi racconta che "non esiste un software bug-safe (cioè privo di bug)". Da questo deriva un corollario di indiscutibile efficacia: "il primo bug di un software è l'utente" e, a seguire, la chiosa che frustra ogni velleità di diventare uno sviluppatore provetto: "l'informatica non è una scienza esatta"!
Tutte queste affermazioni sono tecnicamente inesatte ma, in verità, l'esperienza non ci consente di confutarle dal momento che i malfunzionamenti di programmi commerciali (anche molto costosi) sono all'ordine del giorno e si reitera continuamente quel misterioso fenomeno per il quale una operazione può causare un crash di sistema una volta e funzionare perfettamente l'istante dopo, solo grazie alla miracolosa divinità terapeutica chiamata "Spegni e riaccendi".
Senza dimenticare che, ormai, per gli informatici della prima ora, in una parte recondita del cervello resta sempre vivo il terrore della schermata blu di Windows che, per quanto ormai (apparentemente) desueta, continua ad affollare gli incubi di chi ha assistito all'evolversi del sistema operativo targato Microsoft.
La realtà è che, se sviluppare un software è attività complessa e che richiede grandi competenze, effettuare il testing non è meno difficile e, soprattutto, ha una rilevanza che spesso non viene debitamente compresa da chi lavora nel settore né, tantomeno, da operatori o clienti che, sovente, immaginano che i tempi previsti per il primo rilascio possano coincidere con la pronta messa in esercizio di un programma. Capire l'importanza di questa attività, dunque, può essere cruciale per la qualità di un progetto e, spesso, persino determinare il successo o il fallimento di un prodotto informatico.
In passato il testing era rivolto prevalentemente alla verifica del corretto funzionamento dei software, ma spesso questo veniva (e viene tutt'ora) eseguito con un peccato originario: chi svolge le prove non deve dimostrare che il programma non dia probemi bensì il suo scopo deve proprio essere quello di trovare più bug possibili! D'altra parte, se è vero quel principio da cui siamo partiti (non esistono software bug-safe), il bravo tester in realtà deve essere capace di stanare anche gli errori più nascosti. E' proprio guardandola con questi occhi che la figura del tester si evolve da un profilo marginale ad un professionista con competenze ed esperienze fortemente qualificate!
In un contesto sempre più connesso, inoltre, la semplice capacità di rispondere correttamente alle azioni di un utente diventa insufficiente per un normale software di tipo enterprise: con il proliferare di dati personali anche sensibili e le possibili transazioni economiche, diventa fondamentale la sicurezza. Un sistema informatico qualitativamente adeguato deve dunque garantire standard di sicurezza molto elevati, assicurando il superamento di test strutturati e, anche in questo caso, svolti da profili con spiccate competenze di hacking! In questo ambito, peraltro, esistono diversi riferimenti a cui ricondursi, tra questi, uno dei principali è certamente OWASP, un progetto finalizzato a definire linee guida, strumenti e metodologie per migliorare la sicurezza delle applicazioni.
Un altro aspetto cruciale per il successo di un programma informatico è la resistenza al carico di lavoro, responsabilità che il software condivide con i server e l'infrastuttura di rete (connessione, ampiezza e disponibilità di banda, bilancaimento, ecc.) su cui gira. In questo caso le prove vengono svolte mediante applicativi specifici, che simulano grandi quantità di accessi contemporanei e verificano la tenuta dell'intero sistema sia in termini di velocità di risposta (performance test) che di resistenza alle richieste senza andare in errore (stress test). I risultati di tali verifiche sono dettagliati in report che descrivono sia il comportamento del software e dell'hardware, indirizzando di conseguenza eventuali accorgimenti necessari.
Ma tutto questo ancora non basta a certificare che un software sia realmente pronto per il mercato: anche il più completo e privo di bug può essere sepolto sotto la croce del fallimento se non supera la verifica più insidiosa e complicata: il giudizio dell'utente! In questo ambito non esistono prove certe e inconfutabili attuabili a priori ma esiste una materia di studio che, nel tempo, ha acquisito una sempre maggiore rilevanza nello sviluppo di programmi di qualità: l'usabilità, cioè la capacità di un software di essere intuitivo e di rapida e agevole fruizione da parte dei suoi utenti. Sebbene non sia sempre prevedibile il comportamento di un utente (non dimentichiamo che è pur sempre il primo bug di un software), esistono i cosiddetti test di usabilità che permettono di valutarne la qualità dell'interfaccia e, conseguentemente, restituire un risultato in grado di indirizzare e correggere elementi che possono migliorare l'interazione uomo-macchina del programma.
Tante sono le fasi di un progetto informatico e non sempre si coglie l'importanza di tutte. Tra queste il testing ha un impatto che può essere determinante per la qualità finale di quanto prodotto. Anche per questo, in Wonderlab, la cura per questo processo è massima, con l'impiego di profili qualificati e un continuo studio per acquisire competenze e nuovi strumenti efficaci per migliorare sempre la qualità dei nostri servizi.