TDD per le viste

TDD per le visteCarlo Bottiglieri e Matteo Vaccari

Il Test-Driven Development è una tecnica centrale per gli agilisti. Eppure, molti pensano che applicare TDD alle GUI sia difficile. La miglior pratica che la maggior parte dei TDDer applica è di estrarre la logica in un oggetto testabile, che viene invocato dalla form. La view vera e propria viene poi testata manualmente.

Il problema con questo approccio è che ci costringe a fermare il processo di TDD quando si arriva alla GUI; per questo non riusciamo ad applicare il TDD come tecnica di design sulla GUI. Per questo la GUI diventa difficile da rifattorizzare, e diventa un ostacolo all’evoluzione del sistema. Spesso infatti il codice della GUI è pieno di duplicazione e codice morto.

L’altro approccio possibile è di scrivere test end-to-end con strumenti come Selenium per verificare il comportamento del sistema esercitandolo come farebbe un utente. Questi test end-to-end spesso sono a loro volta fragili, difficili da rifattorizzare e pieni di duplicazione. Ma il problema più grande è che non ci danno molto aiuto come strumenti per fare emergere il design.

In questa presentazione vorrei dare qualche suggerimento su come usare una tecnica diversa; trattando la GUI e i suoi elementi come oggetti, riusciamo a fare TDD sulla GUI in maniera semplice, senza bisogno di tecniche particolarmente esotiche.