Salta el contingut
 

TDD – Desenvolupament Guiat per Proves

Autor: Joan Puigcerver Ibáñez

Correu electrònic: j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Introducció

Fins ara, normalment els projectes de programari s'han desenvolupat seguint una metodologia de desenvolupament tradicional, com la cascada (waterfall), en la qual les fases de desenvolupament s'executen de forma seqüencial, sense possibilitat de tornar enrere i sense possibilitat de fer canvis en les fases anteriors. A més, no hi ha una retroalimentació continuada entre el client i el desenvolupador, i el client no veu el producte final fins que no s'ha acabat el projecte.

Alguns d'aquests problemes es solucionen amb les metodologies àgils, com Scrum o Kanban, que es desenvolupen en xicotetes iteracions, amb una retroalimentació contínua entre el client i el desenvolupador, i amb la possibilitat de fer canvis en qualsevol moment del projecte.

No obstant això, aquestes metodologies no solucionen un problema molt important: com podem assegurar-nos que el nostre codi funciona correctament?. En qualsevol de les metodologies anteriors es poden fer proves manualment, però això és molt costós i no és escalable, o fins i tot automatitzar les proves. No obstant això, normalment aquestes proves s'escriuen a posteriori, quan el codi ja està escrit, i per tant, no són tan efectives i no se'ls treu rendiment.

Alguns problemes derivats d'aquesta situació són:

  • Els tests s'implementen i s'executen quan és massa tard perquè ens proporcionen informació útil, i per tant, es té la sensació que són una pèrdua de temps.
  • Sempre hi ha alguna cosa més urgent que fer que escriure tests.
  • Es té por a refactoritzar el codi perquè no es té la seguretat de que no es trencarà alguna cosa. If it works, don't touch it.
  • El cost de manteniment és molt elevat.
  • La documentació mai està actualitzada.
  • El desplegament o la posada en producció és no està controlada i el resultat és imprevisible.
  • L'equip de desenvolupament passa molt de temps intentant esbrinar per què el que fa un mètode o una classe.

Desenvolupament Guiat per Proves

El Desenvolupament Guiat per Proves o TDD (Test-Driven Development) és una metodologia de desenvolupament de programari en la qual les proves unitàries es redacten abans que la implementació del codi.

Aquesta metodologia no soluciona màgicament tots els problemes exposats anteriorment, però ens proporciona una manera de treballar que ens permet evitar-los.

El TDD consisteix en seguir un cicle de desenvolupament curt i repetitiu, que es pot resumir en tres passos:

  • RED: Escriure una prova unitària que falla.
  • GREEN: Escriure el codi mínim necessari perquè la prova passe.
  • REFACTOR: Refactoritzar el codi perquè siga més llegible, fàcil de mantindre i eficient.

Cicle del Desenvolupament Guiat per Proves

Figura 1. Cicle del Desenvolupament Guiat per Proves

Com les proves s'escriuen abans que el codi, es suposa que la prova fallarà inicialment. Si la prova no falla, és que la prova no és bona, ja que descriu un comportament que ja existeix o que s'ha implementat incorrectament i, per tant, aquestes proves s'haurien d'eliminar o refactoritzar.

Recursos addicionals

Bibliografia

  • Farcic, Viktor, and Alex Garcia. Test-Driven Java Development: Invoke TDD Principles for End-to-End Application Development with Java. Packt Publishing, 2015.

Comentaris