Importanza, benefici e successo dell’automatizzazione del testing software

Importanza, benefici e successo dell’automatizzazione del testing software

Definizione di software testing

Il software testing consiste nell’eseguire una componente software per valutarne una o più proprietà di interesse. In generale, queste proprietà indicano se il componente in esame:

  • soddisfa i requisiti decisi in fase di progettazione e sviluppo;
  • risponde correttamente a tutti i tipi di input;
  • esegue la sua funzione in un ragionevole lasso di tempo;
  • è sufficientemente facile da usare;
  • è installabile e utilizzabile nell’ambiente per cui è stato sviluppato
  • soddisfa i risultati richiesti dagli stakeholder

Dato che il numero di possibili test, anche per componenti software molto semplici, è praticamente infinito, tutti i processi di testing utilizzano delle strategie per selezionare dei test adeguati alle risorse e al tempo a disposizione. Ciò significa che il testing pùo essere usato per verificare la presenza di errori nel codice ma non per garantirne la totale l’assenza. In altre parole: il testing non pùo dimostrare che un prodotto funziona a qualsiasi condizione, pùo solo dimostrare che non funziona come dovrebbe sotto specifiche condizioni.

E’ per questo motivo che molto spesso, in ambito di qualità software, si parla di code coverage dei test, ovvero il rapporto tra il codice coperto e il codice non coperto da test. L’obiettivo dello sviluppatore di test deve quindi essere quello di raggiungere una code coverage adeguata utilizzando il minor numero possibile di test.
Il testing è in ogni caso da considerare non come una singola attività ma come un processo che si articola durante tutto il ciclo di vita del software; è un processo iterativo: la risoluzione di un bug potrebbe svelarne altri, ancora più nascosti, o addirittura crearne di nuovi.

Importanza, benefici e successo dell'automatizzazione del testing software

Importanza dei test nello sviluppo software

Il processo di sviluppo software è uno degli aspetti più complessi e vasti delle discipline informatiche; ingloba elementi economici e sociali, necessita della collaborazione di un team, spesso eterogeneo, ed è uno degli elementi più importanti per il successo di un software.
Sviluppare un software in maniera strutturata significa aumentarne la solidità e la facilità di manutenzione; significa avere documentazione attendibile e architetture solide su cui costruire funzioni complesse; senza queste basi è difficile che il prodotto risulti appetibile e, in ogni caso, sarebbe complicato da manutenere. Il testing rappresenta uno degli aspetti più importanti all’interno del ciclo di vita di un software: permette di individuare gli errori durante la fase di sviluppo, aumenta la qualità del software e quindi la sicurezza e la fiducia da parte dei cliente e degli stakeholder verso l’azienda, è necessario per applicazioni di alta qualità che vogliono mantenere un basso costo di manutenzione ed è fondamentale per riuscire a mantenersi sul mercato.

La difficoltà di individuazione e il costo di risoluzione di un bug aumentano notevolmente con l’avanzare del ciclo di vita del software. Per questo motivo il testing dovrebbe essere effettuato a partire dalle prime fasi di produzione del codice. Generalmente è il metodo di sviluppo software scelto per il progetto a determinare quando e come viene condotto il testing. Per esempio, nei metodi a cascata, gran parte del testing viene svolto dopo la definizione dei requisiti di sistema. Al contrario, negli approcci agili, analisi dei requisiti, programmazione e testing vengono spesso fatti in parallelo.

Benefici dell’automatizzazione del testing

Nel testing automatizzato si usano strumenti software per scrivere ed eseguire test automatici, in grado di collaudare rapidamente vari aspetti e requisiti di un’applicazione, prima del rilascio della stessa in produzione.

Negli scenari descritti, come si è visto, i tipi di test da effettuare sul codice sono numerosi e complessi: anche se per certe tipologie di collaudo è preferibile, o necessario, l’intervento di un tester dotato di determinate competenze sul prodotto, il testing del software eseguito manualmente, quindi senza l’ausilio di tool di automazione, può rivelarsi un’attività caratterizzata da operazioni spesso laboriose, ripetitive e noiose che rischiano di abbassare la qualità delle verifiche in essere. Può essere necessario reiterare molte volte su un computer uno stesso test funzionale, per osservare il comportamento dell’applicazione, o ripetere il test in altre condizioni, ad esempio su più macchine con diversi sistemi operativi, o differenti configurazioni hardware. Utilizzando operatori umani, il test manuale implica tempi e costi elevati, dipendenti dalla complessità di analisi del codice e dall’entità delle risorse umane utilizzate.

Nel collaudo automatizzato, invece, gli strumenti di software testing sono in grado di eseguire in autonomia svariati tipi di analisi e di condurre anche migliaia di differenti test case e operazioni. I test automatici sono vantaggiosi soprattutto nei collaudi con operazioni ripetitive, in cui occorre rieseguire molte volte di seguito gli stessi, complessi casi di test a fronte di dati di input differenti.

Velocità e ripetibilità dei test con l’automazione

Durante i cicli di sviluppo software, per assicurare la qualità, ogni qualvolta il codice subisce modifiche, i test vanno ripetuti sia per accertarsi che le nuove features introdotte siano tra di loro integrabili sia per verificare che le features in essere non subiscano una regressione (Regression Test). Ad esempio, ad ogni rilascio di una nuova versione di un software, occorre rieseguire i test su tutti i sistemi operativi e le configurazioni hardware supportate: in queste situazioni, avere a disposizione test automatizzati che, una volta creati, possono essere riutilizzati e ripetuti con rapidità quante volte si desidera, senza ulteriori costi, rappresenta senza dubbio un notevole vantaggio.

Va poi considerato che il testing automatizzato permette di eliminare gli errori che anche il tester più zelante, prima o poi, finisce per commettere, collaudando manualmente l’applicazione in monotone operazioni di routine. Non solo, ma lo stesso tester, liberato da questo genere di compiti, può dedicarsi ad attività a più alto valore aggiunto, come la creazione di nuovi test software automatizzati, o il collaudo e la verifica di requisiti non funzionali, come l’usabilità dell’applicazione.

Ancora, la tecnologia di automazione dei test consente di eseguire il collaudo di applicazioni software altrimenti difficili, se non impossibili, da mettere alla prova: può essere il caso di quando è necessario collaudare un’applicazione web con migliaia di utenti. Qui il testing automatizzato è in grado di simulare centinaia o migliaia di utenti virtuali che interagiscono con l’applicazione, in modo da valutarne il grado di scalabilità.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *