Definizione di testing software o collaudo del software

Definizione di testing software o collaudo del software

L’Institute of Electrical and Electronics Engineers (IEEE) definisce il testing software come “il processo di valutazione di un sistema attraverso strumenti manuali o automatici col fine di determinare se il sistema soddisfa i requisiti specificati oppure se il suo comportamento verificato differisce da quello atteso”.

A differenza di un comune prodotto non informatico, lo sviluppo di un software può dipendere da altri sistemi o da altri software, pertanto il testing può essere fatto più volte durante le fasi del ciclo di vita del software in base al modello di sviluppo adottato.

Al fine di installare in produzione un software finito, lo scopo del testing è quello di rilevare i difetti tramite i malfunzionamenti per poterli correggere prima che venga utilizzato dall’utente finale.
Teorema di Dijkstra (anno 1969): “il test di un programma può rilevare la presenza di malfunzionamenti, ma mai dimostrarne l’assenza”.

Definizione di testing software o collaudo del software

Accenni ai modelli di sviluppo

L’ingegneria del software definisce modello di sviluppo il modo in cui i processi, definiti per la progettazione e messa in esercizio di un programma software, interagiscono e si connettono tra di loro.
Le singole attività descritte nel ciclo di vita del software sono:

  1. Definizione dei requisiti ed analisi di progetto;
  2. Progettazione;
  3. Implementazioni;
  4. Collaudo del software;
  5. Rilascio;
  6. Manutenzione.

A seconda del modello utilizzato, le attività possono essere ripetute più volte, affrontate ad alto livello con la stesura di documenti oppure ad un livello più basso con la sola fase di scrittura del codice. Alcuni modelli prevedono più incontri con il cliente e sviluppi incrementali, altri un incontro all’inizio ed uno alla fine prima della messa in esercizio.

L’evoluzione dei modelli è avvenuta in modo incrementale, il miglioramento del primo diventava un secondo modello. Primo fra tutti quello a “cascata” mentre negli ultimi anni si sta passando a modelli con metodologie dette “agili” .

Modelli Agili

Dagli anni ’90 è nata una nuova filosofia di sviluppo, le attività definite nei modelli precedentemente creati dall’ingegneria del software sono state considerate “pesanti”, “lente” e non competitive con il mercato a fronte dell’evoluzione tecnologica in corso. Si è pensato, duqnue, di creare delle metodologie più “leggere” ed “agili” per affrontare i problemi più rapidamente, direttamente con il cliente, senza dover aspettare la fase successiva come accade nei modelli precedentemente descritti. L’ordine delle attività non è più sequenziale ma dinamico in base all’andamento dello sviluppo.

Un esempio di metodologia agile è l’ “Extreme Programming” (letteralmente “programmazione estrema”, abbreviata in XP), un approccio all’ingegneria del software formulato da Kent Beck, Ward Cunningham e Ron Jeffries. Kent Beck, scrisse il primo libro sull’XP, Extreme Programming Explained: Embrace Change. Aspetti interessanti sono la programmazione a più mani (generalmente in coppia), la verifica continua del programma durante lo sviluppo per mezzo di programmi di test e la frequente reingegnerizzazione del software a passi incrementali, senza dover rispettare fasi di sviluppo particolari. Vengono adottati processi di sviluppo come la Test Driven Development (letteralmente “sviluppo guidato alle verifiche”, abbreviato in TDD ), dove in base alle funzionalità e specifiche che si dovranno implementare, si creano prima i test e poi il codice sorgente.

Si noti, infine, che in qualsiasi modello di sviluppo che si adotti, la fase di testing sarà sempre un passo fondamentale per la buona riuscita del progetto.

 

Precedente Definizione di dispositivo mobile: smartphone e tablet Successivo Le tecniche di Black-Box e White-Box testing

Lascia un commento

*