Caratteristiche e differenza tra code review e testing software

Caratteristiche e differenza tra code review e testing software

Code review vs Testing

Molti team, oltre ai modelli e alle metodologie di testing, utilizzano anche la pratica della code review, cioè del “controllo del codice”. Di seguito andiamo a definire vantaggi, svantaggi, analogie e differenze di entrambi gli approcci.
La code review è una tecnica che permette di analizzare il codice alla ricerca di errori, codice non pulito o non elegante, mancanze dal punto di vista della sicurezza o codice troppo complesso. Lo scopo è principalmente assicurare la qualità del codice garantendo allo stesso tempo che faccia ciò che dovrebbe.

Caratteristiche e differenza tra code review e testing softwareLa review è fatta da uno o più membri del team diversi da chi ha scritto il codice. Mentre, il testing normalmente ha come unico focus quello di scovare gli errori ed eventualmente di servire da documentazione, in modo che sia più chiaro cosa una parte di codice fa, o cosa dovrebbe fare.
La revisione del codice ha vari vantaggi, primo fra tutti il fatto che lo stesso viene osservato da un’altra persona e quindi da un altro punto di vista, in secondo luogo i revisori possono far notare incongruenze tra il codice prodotto e il resto della code base (metodi con lo stesso nome, riferimenti a classi non più esistenti etc.) dando quindi una più vasta visone d’insieme. In aggiunta, se si utilizzano sia le pratiche di testing che quelle di review, queste ultime permettono di controllare la correttezza e la completezza dei test. Un altro vantaggio sta nell’apprendimento, infatti i reviewer, trovando codice non pulito, suggeriranno una maniera per migliorarlo, condividendo la loro idea con gli altri e portando ad aumento delle expertise di tutto il team.

Questa descrizione può portare a pensare che le review possano sostituire totalmente il testing, ciò invece è sconsigliato, in quanto porta a vari svantaggi che dettaglieremo di seguito. La revisione è un processo manuale e come tale è soggetto a molti errori umani e necessita di tempo, inoltre nessun reviewer sarà mai certo che un pezzo di codice non introduca side-effect o che non rompa del codice scritto in passato. In aggiunta, va specificato che il compito diventa sempre più difficile con l’aumento della quantità di codice del progetto, tanto che il push di commit in produzione (senza regression tests) si rivela molto pericoloso.

Tuttavia neanche il testing rimpiazza le code review, innanzitutto perch´e i test non guardano alla qualità del codice, ma anche perch´e il controllo di uno sviluppatore esperto può scovare errori difficilmente riscontrabili tramite le suite. Per esempio, un reviewer potrebbe accorgersi di bug che si manifestano solo durante i weekend e cioè quando i test automatici non vengono eseguiti (e.g. errata indicizzazione di un array) oppure di errori che si producono solo con un preciso numero di utenti (per esempio la cattiva gestione di un caso limite).

In conclusione sia la code review che il testing hanno molti vantaggi e limiti, per cui non bisogna considerarle pratiche mutualmente esclusive, infatti molto spesso, nei team di successo, vengono utilizzate entrambe.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *