Testare codice legacy sconosciuto: mob programming e Golden Master testing
Ferdinando ha portato un kata relativo ad un quiz game. Il codice del programma è contenuto in un’unica classe dove abbiamo il metodo main()
e altri metodi necessari al funzionamento del gioco quali l’aggiunta di un giocatore, il lancio del dado, la creazione delle categorie e la risposta alle domande.
L’idea è testare questo software che non conosciamo. Da dove partire?
Siamo in tanti in una stessa aula, abbiamo a disposizione un computer e il codice è proiettato e ben visibile a tutti. Perché non utilizzare la tecnica del mob programming?
Il mob programming è un approccio allo sviluppo software in cui l’intero team lavora sulla stessa cosa, allo stesso tempo, nello stesso spazio e sullo stesso computer.
Estende il concetto di pair programming dalla coppia all’intero team.
Per l’occasione Ferdinando ha deciso di adottare un particolare stile di pair programming, lo Strong Style di Llewellyn Falco.
In questa configurazione di fatto è il navigator che programma, mentre il driver ha il solo compito di tradurre linguaggio naturale in codice. In altre parole, tutto il codice arriva al computer passando dal cervello e dalla bocca del navigator attraverso le orecchie e le mani del driver.
Ferdinando e i presenti in sala hanno assunto il ruolo di navigator, il collega Damiano quello del driver.
I presenti hanno proposto fin da subito diversi possibili test da scrivere, dal test su una nuova istanza del gioco al test dell’aggiunta di un nuovo giocatore.
L’obiettivo è usare i test per ottenere informazioni dal software, caratterizzandolo con casi d’uso. In questo particolare esercizio ci siamo avvalsi delle <code>print</code> sullo standard output, in modo da ottenere del testo da usare nelle asserzioni.
Ferdinando ha spiegato quindi come redirigere lo standard output in uno stream, e nel giro di pochi minuti Damiano, sotto suggerimento della platea, ha scritto dei casi di test che verificassero l’intera esecuzione del programma.