From Wikipedia, the free encyclopedia
Desenvolupament guiat per proves de programari, en anglès: Test-driven development (TDD), és una pràctica d'enginyeria de programari que involucra unes altres dues pràctiques: Escriure les proves primer (Test First Development) i Refacció (Refactoring). Per escriure les proves generalment s'utilitzen les proves unitàries (unit test en anglès). En primer lloc, s'escriu una prova i es verifica que les proves fallen. A continuació, s'implementa el codi que fa que la prova passi satisfactòriament i seguidament es refacciona el codi escrit. El propòsit del desenvolupament guiat per proves és aconseguir un codi net que funcioni. La idea és que els requisits siguin traduïts a proves, d'aquesta manera, quan les proves passin es garantirà que el programari compleix amb els requisits que s'han establert.
Perquè funcioni el desenvolupament guiat per proves, el sistema que es programa ha de ser prou flexible com per permetre que sigui provat automàticament. Cada prova serà suficientment petita com perquè permeti determinar unívocament si el codi provat passa o no la verificació que aquesta li imposa. El disseny es veu afavorit, ja que s'evita l'indesitjat "sobre disseny" de les aplicacions i s'aconsegueixen interfícies més clares i un codi més cohesionat. Frameworks com JUnit proveeixen d'un mecanisme per posar en pràctica conjunts de proves automatitzades.
En primer lloc s'ha de definir una llista de requisits i després s'executa el següent cicle:
Tenir un únic repositori universal de proves facilita complementar TDD amb una altra pràctica recomanada pels processos àgils de desenvolupament, la "Integració Contínua". Integrar contínuament el nostre treball amb el de la resta de l'equip de desenvolupament permet executar tota la bateria de proves i així descobrir si la nostra última versió és compatible amb la resta del sistema. És recomanable i menys costós corregir petits problemes cada poques hores que enfrontar-se a problemes enormes prop de la data de lliurament fixada.
Una característica d'aquesta forma de desenvolupar programari és que s'evita escriure codi innecessari ("You Ain't Gonna Need It" (YAGNI)). S'intenta escriure el mínim de codi possible, i si el codi passa una prova encara que sapiguem que és incorrecte ens dona una idea que hem de modificar la nostra llista de requisits agregant-ne un de nou.
La generació de proves per a cada funcionalitat fa que el programador confiï en el codi escrit. Això permet fer modificacions profundes del codi (possiblement en una etapa de manteniment del programa) doncs sabem que si després aconseguim fer passar totes les proves tindrem un codi que funcioni correctament.
Una altra característica del Test Driven Development és que requereix que el programador primer faci fallar els casos de prova. La idea és assegurar-se que els casos de prova realment funcionin i puguin recollir un error.
Els programadors que utilitzen el desenvolupament guiat per proves en un projecte verge troben que en rares ocasions tenen la necessitat d'utilitzar el depurador o debugger.
Malgrat els elevats requisits inicials d'aplicar aquesta metodologia, el desenvolupament guiat per proves (TDD) pot proporcionar un gran valor afegit en la creació de programari, produint aplicacions de més qualitat i en menys temps. Ofereix més que una simple validació del compliment dels requisits, també pot guiar el disseny d'un programa. Centrar-se en primer lloc en els casos de prova fa que un hagi d'imaginar-se com els clients utilitzaran la funcionalitat (en aquest cas, els casos de prova). Per tant, al programador només li importa la interfície i no la implementació. Aquest avantatge és similar al disseny per conveni però s'assembla a ell pels casos de prova més que per les assercions matemàtiques.
El poder del TDD radica en la capacitat d'avançar en petits passos quan es necessita. Permet que un programador se centri en la tasca actual i el primer objectiu és, sovint, fer que la prova passi. Inicialment no es consideren els casos excepcionals i el tractament d'errors. Aquests, s'implementen després que s'hagi aconseguit que funcioni la funcionalitat principal. Un altre avantatge és que, quan és utilitzada correctament, s'assegura que tot el codi escrit està cobert per una prova. Això pot donar al programador un major nivell de confiança en el codi.
El desenvolupament guiat per proves requereix que les proves puguin automatitzar-se. Això resulta complex en els següents dominis:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.