L’importanza di utilizzare gli unit test

Martedì 19 Febbraio 2008 - 09:09

di Simone Carletti

PHP e Open Source

Vorrei introdurre per la prima volta su questo blog un argomento a me molto caro: lo unit testing! Per chi non conoscesse questa pratica, consiglio di approfondire il discorso partendo, ad esempio, da Wikipedia.

Chi programma in abito professionale senz’altro avrà già sentito parlare di unit testing. O meglio: mi auguro che abbia pianificato la creazione di appositi test parallelamente alla propria attività di programmazione. Gli unit test non sono una pratica propria di un linguaggio piuttosto che un altro, bensì una pratica di buona programmazione.

Alcuni linguaggi, come Ruby, offrono framework per unit test direttamente integrati nella standard library. Altri, come Java e PHP, delegano il compito a librerie esterne o di terze parti.

Mi capita spessissimo di confrontarmi, anche ad alti livelli, con programmatori che continuano a testare il proprio codice “semplicemente eseguendolo” una o più volte.
Personalmente non potrei pensare al refactoring di una libreria, la riorganizzazione di un software senza aver creato una o più suite di unit test!

E voi? Quanto siete adepti a questa pratica di buona programmazione?

Vorrei concludere questo post segnalandovi uno splendido articolo, pubblicato a dicembre su Zend Developer Zone: An Introduction to the Art of Unit Testing in PHP.
Buona lettura… e buon unit testing!

Tags:

Categoria: PHP e Open Source | Permalink

sponsor

Commenti

1

il problema e’ semplice, il web non e’ piu’ solo server ma anche client/server e nessun linguaggio ha ancora un sistema valido, scalabile e affidabile per lo unit testing.

Selenium e’ un gran bel progetto ma ha anche lui i suoi limiti, Google pochi mesi fa chiedeva “se qualcuno avesse qualcosa di meglio” perche’ JS e’ un enviroment a parte.

Il testing a tentativi e’ quindi ancora valido, soprattutto per il Web 2.0, dove anche l’occhio deve accorgersi di problemi di parsing, layout, caratteri, CSS, cross browsing … etc etc.

Opinione personale :)

# - postato da andr3a - 19 Febbraio 2008 - 10:09

2

All’Università ci hanno stressato all’ennesima potenza con questi unit test (abbiamo usato NUnit e JUnit) e se all’inizio era solo una scocciatura, una volta che abbiamo capito è diventato un utilissimo strumento di supporto allo sviluppo e anche alla progettazione. Se si inizia molto presto a creare testSuite infatti ci si chiarisce molto bene le idee anche su quello che si dovrà andare a programmare..

# - postato da Miguel - 19 Febbraio 2008 - 10:53

3

La teoria è stupenda e cerco di creare unit test tutte le volte che è possibile, il problema è il tempo, far passare al team di sviluppatori l’utilità degli unit test è relativamente facile.
Farlo capire ai capi progetto è molto più complesso ma c’è ancora qualche speranza. Farlo capire ai project manager è proprio impossibile.

# - postato da LordMax - 20 Febbraio 2008 - 10:26

4

Un project manager che non comprende l’utilità delle test suite, a mio avviso, ha ancora molto da imparare. ;)

# - postato da Simone Carletti - 20 Febbraio 2008 - 10:52

5

@Simone Carletti
Spero che la tua realtà sia molto diversa dalla mia ma io, che lavoro principalmente per grossi gruppi (CSI Piemonte, FIAT, etc) posso garantirti che trovare un project manager che capisca anche solo qualcosina degli aspetti tecnici è un miracolo. Sono tutti, ma proprio tutti, degli assoluti incompetenti in campo tecnico.

# - postato da LordMax - 20 Febbraio 2008 - 12:03

6

quoto LordMax e agli altri chiedo: tutti web vecchio stile, vero? … ditemi come fate unit testing di applicativi 2.0, che io (e molti altri) ancora non ci siamo arrivati, grazie :D

# - postato da andr3a - 20 Febbraio 2008 - 22:43

7

andrea, lordmax, posso portarvi la testimonianza attuale.
Ho attivo in gestione alcuni progetti in sviluppo, con team differenti e collocati fisicamente in stati differenti (tra l’altro).

Per ciascuno è previsto un tempo da dedicare agli unit test, non solo.
Gli unit test rappresentano un requisito per il deploy dell’applicativo.
Se la piattaforma/software non supera tutti gli unit test non passa dalla fase di test a quella di produttività.

Se la piattaforma non raggiunge una percentuale stabilita di LOC coverage non passa in produttività.

Certo, stimato questo tempo non è poco.
Ma agevola in modo incredibile il refactoring ed il deploy futuro di una qualsiasi release.

E’ altrettanto ovvio che su alcuni sistemi è possibile, su altri no.
Per alcuni vecchi progetti questi sitema è un suicidio, sui nuovi software (desktop e/o web) e librerie basate su Ruby e PHP 5 è un requisito. :)

Mi rendo altrettanto conto che sia un’eccezione.
Come descritto nel post, quasi sempre noto un tendenza al loro non utilizzo come voi stessi testimoniate. :(

# - postato da Simone Carletti - 20 Febbraio 2008 - 23:09

8

Simone, nessuno ha detto non siano utili, li utilizzo anche io, ma non per siti.

Ergo ripeto la domanda: come lo fai lo unit testing su siti web 2.0? Io ed altri non ci siamo ancora arrivati, se non tramite selenium, ed in modo quindi limitato :)

# - postato da andr3a - 21 Febbraio 2008 - 13:07

9

web 2.0 o non 2.0 a mio avviso centra nulla.
Ho una certa avversione a questo termine, dunque tendo a non usarlo! :D

Normalmente sviluppiamo quasi tutto in ottica MVC.
Con unit test verifichiamo il funzionamento dei modelli e l’interazione con i db, performance test, integrational test e functional test coprono la parte view, controller e overall del prodotto.

Cosa ti interesserebbe sapere nello specifico? Software? Linguaggi? Metodologie?
Magari ci esce anche un post approfondito. :)

# - postato da Simone Carletti - 21 Febbraio 2008 - 14:14

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento