Con l’aiuto dello unit testing, spesso chiamato anche testing di unità o testing unitario, si ef­fet­tua­no test su singoli com­po­nen­ti di programmi. Si esamina quindi il corretto fun­zio­na­men­to delle singole parti, prima che prendano il loro posto all’interno di un software. Grazie a questi test si verifica in modo re­la­ti­va­men­te facile e veloce se le com­po­nen­ti fun­zio­na­no esat­ta­men­te come previsto dallo svi­lup­pa­to­re. Lo unit testing è uno tra i mezzi più efficaci per iden­ti­fi­ca­re tem­pe­sti­va­men­te gli errori presenti nel codice.

Lo unit testing svolge una funzione molto im­por­tan­te nella software quality assurance (cioè la garanzia di qualità del software). Questi metodi vengono uti­liz­za­ti so­prat­tut­to nella fase di sviluppo di un software; per lo più si punta a ef­fet­tua­re frequenti test di com­po­nen­ti ed è anche per questa ragione che vengono eseguiti in modo au­to­ma­ti­co. Programmi appositi eseguono testing di unità qualsiasi sem­pli­ce­men­te premendo un tasto. Di solito il testing di unità uti­liz­za­to è scritto nella stessa lingua dell’oggetto ve­ri­fi­ca­to.

A cosa serve lo unit testing?

Come già accennato, si parla anche di testing di unità o testing unitario, in quanto si ve­ri­fi­ca­no le unità più piccole del software, mentre le parti di sistema più piccole che è im­por­tan­te ve­ri­fi­ca­re sono i moduli.

Si consiglia di ve­ri­fi­ca­re questi moduli già agli inizi del processo di sviluppo, in quanto nella fase del test dei moduli è possibile cor­reg­ge­re gli errori in modo re­la­ti­va­men­te semplice e van­tag­gio­so. Nelle fasi suc­ces­si­ve questi processi com­por­ta­no costi maggiori. Lo unit testing si occupa prio­ri­ta­ria­men­te di proprietà fun­zio­na­li. Di solito lo svi­lup­pa­to­re esegue i test per­so­nal­men­te, ga­ran­ten­do così la cor­ret­tez­za delle funzioni.

Ambiente di test per lo unit testing

Una qualità im­por­tan­te dello unit testing è quella di isolare un modulo e cer­ti­fi­car­ne la cor­ret­tez­za. Il test esegue solo una funzione concreta, mentre lascia in un primo momento fuori tutti i fattori esterni, come la co­mu­ni­ca­zio­ne con altri sistemi. Le in­te­ra­zio­ni con altri com­po­nen­ti sono esclusi. In questo modo è possibile far risalire eventuali errori al modulo testato iso­la­ta­men­te.

Il processo di verifica avviene in un co­sid­det­to ambiente autonomo. In primo luogo è ne­ces­sa­rio creare questo speciale ambiente di test (ciò che si rivela re­la­ti­va­men­te complesso e rea­liz­za­bi­le solo con fatica, andrebbe prima impostato ma­nual­men­te). Poiché un modulo non è una parte ese­gui­bi­le in maniera autonoma, per ef­fet­tua­re il test si ha bisogno di un co­sid­det­to “test harness” (un insieme di software per ef­fet­tua­re i test). Solo con questo test harness l’oggetto diventa un programma ese­gui­bi­le. Per creare un ambiente di test rea­li­sti­co, si rea­liz­za­no oggetti di supporto (i co­sid­det­ti stub) che fun­zio­na­no come se­gna­po­sto, quando il modulo su cui si effettua il test, richiede altre com­po­nen­ti per poter in­te­ra­gi­re.

Framework per unit testing

L’obiettivo dello unit testing è quello di ve­ri­fi­ca­re gli errori all’interno dei singoli com­po­nen­ti. Se si vuole garantire la cor­ret­tez­za del codice durante tutto il periodo di sviluppo, si ese­gui­ran­no con­ti­nua­men­te degli unit test e pertanto l’au­to­ma­tiz­za­zio­ne in questo campo è un concetto molto im­por­tan­te. Ci sono speciali framework che servono all’ese­cu­zio­ne di unit test. Per quasi tutti i linguaggi di pro­gram­ma­zio­ne esiste un software di unit testing adatto, che legge il codice sorgente alla ricerca di eventuali errori. L’ambiente di testing sopra citato viene creato in au­to­ma­ti­co dai tool, mentre lo svi­lup­pa­to­re si concentra sulla rea­liz­za­zio­ne dei diversi casi di test. A questo link trovate una lista completa degli unit testing di­spo­ni­bi­li per i singoli linguaggi di pro­gram­ma­zio­ne.

Vai al menu prin­ci­pa­le