Sviluppo web e test

Sviluppo web e test

Nel mio lavoro non mi reputo un fenomeno, nè tantomeno uno sviluppatore eccezionale. Quello che so l'ho imparato testando e creando test. Non mi stancherò mai di sottolineare l'importanza del testing nello sviluppo web. La teoria non basta: bisogna scrivere codice. Il copia e incolla va bene quando andiamo di fretta e ci sono delle deadline da rispettare. Lo facciamo tutti, me incluso. Ma quando torni sul tuo codice e vuoi modificare qualcosa, ti accorgi che manca la parte di test e che le tue conoscenze non sono solide. Questo perchè non abbiamo provato un'altra soluzione, o non sappiamo cosa succede se modifichiamo un parametro di una funzione o qualsiasi altra variabile nel gioco complesso di un applicazione web.

Io ho iniziato lo sviluppo web con HTML e CSS. Prima era C++, che se non altro mi ha insegnato il rigore e il timore/tremore per il codice. Ero abituato a pensare in maniera uniforme: ero io che sbagliavo, non il compilatore. Poi vennero i browser, e di lì la confusione. Firefox e Internet Explorer, due browser, due mondi paralleli che non comunicavano. Un layout CSS che appariva ben fatto in Firefox era un orrore in Internet Explorer. Un elemento HTML era supportato nell'uno ma non nell'altro, o era supportato in maniera diversa. Gli sviluppatori web conoscono il peccato originale derivato dalle scelte implementative dei browser: questo o quello, HTML ma non XHTML, embed e object, addEventListener e attachEvent, la scelta di cogliere la mela e la cacciata dal paradiso dell'interoperabilità.

Da lì ho capito l'importanza dei test. Non si tratta di perdere tempo prezioso, ma di risparmiarlo per il futuro, quando magari dobbiamo consegnare un progetto e i tempi stringono, quando Google non ci restituisce lo snippet giusto da usare. Testare oggi è utile per domani, secondo il detto impara l'arte e mettila da parte.

Non servono test complessi, anzi. Più un test è atomico più è utile, perchè ci permette di isolare solo il dettaglio che ci serve. O meglio, che ci servirà quando ne avremo bisogno. E i dettagli sono tutto. Io stesso mi sono spesso bloccato davanti ai dettagli di un'applicativo, quando il cliente voleva una determinata cosa e io ragionavo e ragionavo sul codice senza vedere subito la soluzione. E la soluzione era un dettaglio.

Testare significa:

  • Conoscere l'argomento (specifiche, teoria, ecc.).
  • Fissare un obiettivo da raggiungere col test.
  • Stabilire la procedura da seguire.
  • Scrivere il test.
  • Analizzare il risultato.

Primo: conoscere l'argomento. Per esempio, pagamento con carta di credito su Banca Sella. Secondo: obiettivo. Eseguire un pagamento fittizio. Terzo: procedura. Come funziona il gateway di Banca Sella? Ha una sandbox di sviluppo? Ha script di esempio? Quindi, analizzare gli script di esempio, predisporre il server e via dicendo. Quarto: visto che è un test, posso prima copiare gli script di esempio cambiandone la configurazione e poi provare a creare del codice personalizzato. Quinto: il pagamento ha funzionato? I valori sono giusti? Sono riuscito a salvare i dati nel database? Ci sono errori? Il reindirizzamento funziona? Se l'ultimo punto presenta dei problemi, occorre procedere sistematicamente nell'analizzare i punti precedenti alla ricerca di errori o lacune.

Non bisogna scoraggiarsi se i risultati non sono quelli sperati al primo colpo. La pazienza è la nostra migliore alleata. E se non riusciamo da soli, possiamo cercare aiuto in rete. Sbagliare in questo caso significa che stiamo andando avanti nel nostro cammino professionale. E questo ciò che conta di più.

Torna su