Els jocs de proves són programes realitzats per a garantir el correcte funcionament d’una aplicació. El seu objectiu és detectar els errors el més aviat possible per a que sigui més fàcil corregir-los i que afectin en la mínima mesura als usuaris. Una vegada s’ha escrit un jocs de prova, aquest s’executa de forma automàtica i valida que el programa que estem desenvolupant funcioni de forma correcta.
Per exemple si estem desenvolupant una calculadora, es podrien desenvolupar els jocs de proves següents:
- Si introduïm 2+5 i el programa ens ha de retornar 7.
- Si introduïm 10-3 i el programa ens ha de retornar 7.
- Si introduïm 3*5 el programa ens ha de retornar 15.
- Si introduïm 5/0, els programa ens ha de tornar error de divisió entre 0.
- Si introduïm 4/2, el programa ens ha de tornar 2.
Aquestes proves en serveixen per provar el correcte funcionament de les operacions bàsiques d’una calculadora. Si s’executa aquestes proves cada vegada que es realitza una modificació al codi podrem garantir que les operacions de suma, resta, multiplicació i divisió no fallaran mai davant del usuari.
El cost de corregir un error
Al gràfic de l’esquerra es mostra el cost de corregir un error en funció de la fase del cicle de desenvolupament en que es detecta. En aquest gràfic es pot observar que l’esforç necessari per corregir un error en la fase de desenvolupament és 20 vegades superior al de corregir-lo en la fase d’anàlisis del requeriments. De totes formes, si deixem que l’error es propagui fins a la fase d’operacions (que és quan l’usuari de l’aplicació esta exposat a ell) l’esforç necessari creix fins a 150 vegades. Aquestes dades porten a la conclusió que s’ha d’intentar detectar els errors el més aviat possible, per tal de que els recursos necessaris siguin els mínims i aquests es puguin dedicar al desenvolupament de noves funcionalitats.
Com ens ajuden els jocs de proves?
Els jocs de proves estan escrits per a ser executats cada vegada que es fa una modificació en el codi. Gràcies als jocs de proves podem veure si la nostra modificació ha provocat algun error en alguna funcionalitat existent. Si es desenvolupa un joc de proves cada vegada que es vol realitzar una nova funcionalitat aconseguim que aquesta estigui provada abans d’arribar a l’usuari, amb el que s’augmenta la qualitat del nostre programa.
Els jocs de proves no són perfectes, i si no s’escriu els jocs necessaris per a provar el 100% de l’aplicació es poden produir errors. Per això cal valorar quines funcionalitats són les que no poden fallar i dedicar temps per a escriure els jocs necessari per que aquell totes les funcionalitats bàsiques es puguin provar de forma automàtica i així estiguin totalment protegida davant de fallades.
Els jocs de proves són una gran ajuda per als llenguatges interpretats (com per exemple: Javascript, Python, Ruby, Perl i molts més), on la flexibilitat es més alta que en els llenguatges compilats i es poden produir més errors en temps d’execució. En els llenguatges compilats els compilador ens ajuden a detectar errors, però això tampoc és suficient per garantir que no es produeixin errors quan s’executa el codi.