L’importanza del software testing nel processo dello sviluppo delle applicazioni

Perché utilizzare il Software Testing

Per poter immettere sul mercato un nuovo software ben funzionante, è necessario eseguire alcuni test e collaudi preliminari. Questa fase viene chiamata Software Testing.

Il software testing garantisce:

  • la qualità e l’affidabilità del software;
  • la corrispondenza delle sue funzionalità ai requisiti dichiarati dal produttore;
  • una User Experience (UX) aderente alle aspettative dell’utente finale.

I difetti del software, chiamati bug nel linguaggio informatico, possono danneggiare la reputazione di un marchio, creando frustrazione nei clienti e determinando il loro abbandono. In casi estremi, uno o più bug possono degradare sistemi interconnessi o causare gravi malfunzionamenti.

Utilizzando i test e i collaudi, le aziende possono risparmiare milioni di euro all’anno in sviluppo e supporto, se applicano una buona tecnica di test e di processi di controllo qualità (QA). Un sistema che soddisfa o addirittura supera le aspettative del cliente porta potenzialmente a più vendite e a una maggiore quota di mercato. ¹

Vantaggi e svantaggi della fase di testing

In sintesi, i vantaggi della fase tester sono:

  • l’identificazione dei bug dopo che è stato sviluppato il software, e prima che arrivi all’utente finale;
  • la riduzione dei costi dovuti a danni causati da un possibile malfunzionamento;
  • il miglioramento delle prestazioni; ²
  • l’identificazione preventiva di falle nel software. ³

Per quanto riguarda gli svantaggi, i test sono piuttosto costosi e possono richiedere molto tempo, soprattutto per i software più complessi ¹ (può incidere anche per il 50% sul costo del prodotto software ⁴). Per quest’ultimi, vengono utilizzati i test automatizzati, invece dei test manuali, che vengono utilizzati per software più piccoli. ¹

I test automatizzati (Software Automation Testing) richiedono la scrittura di alcuni programmi per computer speciali per individuare bug o difetti sul software in prova (SUT). Sono sempre consigliati per i miglioramenti della qualità dell’applicazione. L’approccio ai test automatizzati fornisce una copertura formale di quest’ultimi, evita errori umani e accelera il processo dell’esecuzione; È la soluzione più efficace per rispettare le scadenze rigorose e per ridurre drasticamente i costi. ³ ⁴

La fase di testing nell’atto pratico

Innanzitutto, la fase tester è composta in due distinte sottofasi:

  • Verifica (Verification), che viene svolta all’interno dell’azienda del produttore. Serve a scoprire se il prodotto realizzato funziona correttamente, viene confrontato con il documento delle specifiche e con il progetto di dettaglio;
  • Certificazione (Validation), che viene svolta nell’ambiente finale, davanti al cliente. Si verifica che sia stato ottenuto il prodotto richiesto e viene fatto il confronto con il documento dei requisiti. ⁴

Inoltre, vi sono due tipi di test:

  • Il test statico, ovvero una forma di analisi del software in cui è necessario solo il suo codice sorgente, senza doverlo eseguire. Le due tecniche più importanti dei test statici sono l’esame manuale (nota come revisione) e l’analisi automatizzata mediante appositi strumenti. Questo test è considerato preventivo, che viene eseguito per verificare la logica e la correttezza del codice software; ⁵ ⁶
  • Il test dinamico, che viene eseguito al momento dell’esecuzione del codice o dopo di esso. Può essere paragonabile al test di convalida perché prende i valori come input, i quali vengono convalidati rispetto al risultato atteso. Questo test è considerato curativo, in cui, a differenza del test statico, viene utilizzato per verificare la risposta del sistema quando vengono applicati input predefiniti, e per rettificare e correggere i bug. ⁶

Sempre durante la fase tester, è importante anche ricordare che: 

  • la fase tester si effettua a vari livelli e consiste in operazioni distinte;
  • tutti i test sono complementari: non vanno utilizzati in modo esclusivo, bensì è opportuno integrarli;
  • un test dinamico può rilevare la presenza di errori, ma non la loro assenza;
  • non si può avere la certezza assoluta della correttezza del prodotto software: la prova di correttezza può, a sua volta, essere sbagliata;
  • può essere provata la correttezza relativamente alle specifiche funzionali, ma non si può stabilire se le specifiche non funzionali (ad es. le prestazioni) siano state soddisfatte. ⁴

Infine, quando si testa un software, le situazioni più difficili sono quelle di eccezione o che presentano pericolosità. In questi casi, viene utilizzato un simulatore, un software ausiliario (ovvero che non verrà utilizzato al termine dello sviluppo) che imita le azioni di un altro software, di un altro hardware o dell’ambiente nel quale opererà il software. ⁴

Gli sviluppatori in Solve.it eseguono costantemente “Test di Modulo” durante gli sviluppi applicativi per assicurarsi che il Software prodotto corrisponda ai desiderata e ai requisiti concordati con il cliente. I test affiancano e seguono gli sviluppi per adeguarsi alla modalità ‘agile’ che è propria di diversi progetti.

Le applicazioni, una volta terminate e prima di essere condivise con il cliente, in Solve.it vengono sottoposte ad una ulteriore fase di test avvalendosi di risorse dedicate (tester) e distinte dagli sviluppatori, utilizzando strumenti di test come JUnit, SoapUI, Postman.

Fonti

¹ https://www.ibm.com/it-it/topics/software-testing

² https://www.techyon.it/articoli/software-tester-cosa-fa-quali-competenze.html

³ https://vitolavecchia.altervista.org/processo-e-pianficazione-automazione-del-testing-software/

⁴ https://moodle2.units.it/pluginfile.php/266491/mod_resource/content/0/Slide%20Test%20e%20Collaudo%20%28e%29.pdf

⁵ https://vitolavecchia.altervista.org/differenza-tra-test-statici-e-dinamici-per-il-testing-software/

⁶ https://it.itpedia.nl/2017/08/26/het-statisch-testen-van-requirements/

Condividi questo articolo: