Prima di entrare nella fase operativa, qualsiasi applicativo aziendale o destinato alla vendita deve superare una procedura di test. Il software testing è una sorta di controllo di qualità, indispensabile per garantire l’allineamento alle specifiche e soprattutto la fruibilità da parte degli utenti.
A seconda delle caratteristiche e della finalità d’uso, le procedure adottate possono essere diverse. Per tutte però, valgono alcuni principi generali ai quali allinearsi. L’obiettivo deve essere individuare non tanto i grandi errori, in teoria fuori discussione quando si arriva a questo punto, quanto i piccoli bug, le imperfezioni nascoste sfuggite i controlli dei progettisti. Per questo, a seconda della complessità del progetto, può essere utile accompagnare con i dovuti controlli l’intero processo di sviluppo.
Software testing: passi chiari, software efficiente
A grandi linee, l’operazione di software testing si può riassumere in una serie di passaggi. Una prima parte, a volte chiamati anche test funzionali, seguono un ordine logico e sono finalizzati a confermare l’allineamento con i requisiti aziendali e le specifiche. Successivamente, si passa dalla parte dell’utente per analizzare la componente operativa, per assicurarsi non solo la correttezza formale del codice, quanto invece anche prestazioni, sicurezza e usabilità.
Un buon punto di partenza è l’esame dei singoli moduli. In caso di organizzazione dei compiti tra gruppi di lavoro, è importante prevedere una fase di test prima di passare al livello successivo dell’assemblaggio. Come le altre, in casi circoscritti, almeno in teoria l’operazione può essere condotta anche manualmente. Tuttavia, i vantaggi di affidarsi a una soluzione automatica e specifica sono innegabili, proprio a partire dalla capacità di rilevare gli errori e di non introdurne di nuovi
Subito dopo, si passa a valutare l’affidabilità dei moduli nel loro insieme. L’insieme delle unità deve iniziare a comportarsi secondo le attese e i requisiti. Tanto più la fase precedente sarà stata accurata, tanto più questa richiederà meno tempo.
Il risultato di questi passaggi è arrivare a considerare l’intero pacchetto nel suo insieme, nell’ambiente operativo di destinazione. Tutte le funzionalità e tutti gli elementi devono essere sottoposti a verifica pratica. Facile quindi ribadire l’importanza di strumenti dedicati. Inoltre, se possibile, questa operazione dovrebbe essere affidata un team diverso da quello di sviluppo.
Se tutto va bene, si arriva allora alla conclusione. Dal punto di vista funzionale, l’applicazione deve fare esattamente quanto previsto e atteso. Un via libera formale, orientato alle funzionalità. Da solo però non è sufficiente.
Il software testing, dalla parte dell’utente
Serve infatti un’altra fase di software testing, più orientata all’utilizzo. Per quanto possa essere impeccabile dal punto di vista del codice, un’applicazione deve infatti fare i conti con il dispositivo sul quale verrà eseguita e sul modo con cui l’utente potrà sfruttarla. Si tratta di un campo diverso da quello, pur molto importante, della cyber security.
Una prima parte in questo caso è legata alle prestazioni. Aspetti come reattività e stabilità devono essere messe alla prova al di fuori degli ambienti di sviluppo. L’obiettivo è ricostruire le condizioni in cui si troverà a operare l’utente. Se la varietà è tale da non poterle realisticamente coprire tutte, bisogna almeno inquadrare la maggior parte delle possibilità. Anche in questo caso si rivela importante poter contare su soluzioni in grado di simulare gli ambienti senza doverli sperimentare tutti dal vivo.
Tra i test più diffusi in questo caso uno fondamentale è il carico, per stimare il numero di richieste simultanee gestibili. L’ideale è spingersi oltre il limite di utenti previsto, così da avere un margine in prospettiva di un allargamento del raggio d’azione. Oltre al volume vero e proprio di dati elaborati, conta anche il periodo di tempo durante il quale si riesce a gestire il picco prima di accusare un calo nelle prestazioni.
Sul lato utente, sono fondamentali anche i test sulla sicurezza. Sotto questo punto di vista, mobility e cloud sembrano fatti apposta per rendere difficile la vita agli sviluppatori. I rischi tuttavia sono concreti, continui e in crescita. Aspetti come integrità, autenticazione, difesa dei dati e accesso controllato devono essere oggetto di grande attenzione.
Temi per i quali è sempre utile intervenire anche sulla sensibilità degli utenti. Meno disponibili in genere ad accettare compromessi sull’usabilità vera e propria. Senza un’interfaccia attraente e funzioni accessibili senza complicazioni, il rischio di non vedere sfruttata un’applicazione come da previsioni, o cercare di aggirarla, è concreto.
In questa fase molto delicata del software testing, al fianco degli strumenti disponibili è utile valutare la possibilità di coinvolgere nel team di verifica anche un utente finale, il più possibile estraneo alle procedure progettuali.
Infine, il tutto deve sapersi adattare a qualsiasi dispositivo. La proliferazione di combinazioni tra hardware e sistemi operativi, fissi e mobili, locali o in cloud, fa sì che lo stesso utente si trovi a usare il programma in condizioni diverse, anche nel giro di pochi minuti. Assicurare un passaggio lineare è forse uno dei compiti più delicati per il software testing. Dal quale però scaturisce quella sorta di certificazione fondamentale rappresentata dalla soddisfazione degli utenti.
Per verificare poi lo stato di salute del software, si può anche passare al performance testing.