<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Prova de programari <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## Introducció Les __proves o testing__ és una pràctica molt important en el desenvolupament de software, ja que ens ajuda a assegurar que el nostre programa funcione correctament i estiga lliure d'errors. El testing és una part molt important del procés de desenvolupament de software, ja que ens ajuda a assegurar la qualitat del nostre programa i a detectar i solucionar els errors abans que aquest arribe als usuaris finals. Hi ha diferents tipus de realitzar les proves, cada un amb un objectiu específic, però en general, consisteix en executar __casos d'ús o escenaris concrets__ amb l'objectiu de comprovar que el programa s'estiga comportant com s'espera. És impossible provar tots els casos que existeixen, però quantes més proves hi hagen i més extenses seiguen, més podem reduir el risc d'errors. ## Etapes del procés de prova Hi ha diferents etapes en el procés de testing: 1. __Planificació del testing__: En aquesta etapa, es defineixen els objectius del testing, es crea un pla de testing i es seleccionen les eines i recursos necessaris per realitzar-lo. 2. __Creació dels casos de testing__: Es creen els __casos de prova__, que són escenaris o situacions concretes que es volen provar amb el programa. Això inclou l'especificació dels passos a seguir, les dades d'entrada i els resultats esperats. 3. __Execució dels casos de prova__: Es duen a terme els casos de prova, seguint els passos especificats i comprovant que el programa done els resutats esperats. 4. __Anàlisi dels resultats__: Es revisen els resultats obtinguts, es registren els errors trobats i es decideix quines accions s'han de prendre per solucionar-los. 5. __Regressió__: Una vegada s'han solucionat els errors trobats, es torna a executar les proves (pas 3) per assegurar que els canvis realitzats no hagen tingut cap efecte negatiu en altres parts del programa. 6. __Acceptació__: Una vegada s'han superat tots els casos de prova i s'ha fet una regressió adequada, es considera que el programa està preparat per ser lliurat al client o per ser posat en producció. ## Classificació de les proves ### Segons la realització Segons de com es realitzen les proves, podem classificar-les en: - __Manuals__: són aquelles que es fan de forma manual, és a dir, amb la intervenció d'un humà que executa els casos de testing i analitza els resultats. Aquest tipus de testing es fa generalment quan es vol fer una avaluació visual o quan es vol comprovar el comportament del programa en diferents escenaris o situacions. - __Automatitzades__: són aquelles que es fan amb l'ajuda d'un programa o eina específica. Aquest tipus de testing es fa per tal de fer un seguiment dels canvis realitzats al programa i detectar qualsevol incidència. Les proves automatitzades són útils per a reduir el temps de testing i assegurar que es cobreixen tots els casos de testing de forma consistent. ### Segons el coneixement del sistema Segons si s'utilitza el codi font del sistema en les proves, podem classificar-les en: - __Proves de caixa negra__: es valida el comportament d'un programa sense tindre en compte la seva implementació interna. Es fa principalment a partir de les especificacions del programa i de les dades d'entrada i eixida, sense necessitat de tindre accés al codi font del programa. - __Proves de caixa blanca__: es valida el comportament d'un programa tenint en compte la seva implementació interna. Això implica tenir accés al codi font del programa i fer servir tècniques com ara l'anàlisi de codi o la revisió de codi per comprovar que es compleixen els criteris de qualitat establerts. ### Segons el propòsit - __Testing unitari:__ Es fa per comprovar el correcte funcionament de cada unitat o mòdul individual d'un programa. L'objectiu és assegurar que cada part del programa estigui funcionant correctament per si mateixa abans de fer-les treballar junts. - __Testing d'integració:__ Es fa per comprovar el correcte funcionament de les diferents unitats o mòduls del programa quan treballen junts. Aquest tipus de testing es fa per detectar errors que es puguin produir en la interacció entre diferents parts del programa. - __Testing de sistema:__ Es fa per comprovar el correcte funcionament del programa com a tot. L'objectiu és assegurar que el programa complet estigui comportant-se com s'espera i estigui preparat per ser lliurat o posat en producció. - __Testing de validació:__ Es fa per comprovar que el programa compleix amb els requisits especificats pel client o per l'usuari final. L'objectiu és assegurar que el programa estigui fent el que s'espera que faci. - __Testing de regressió:__ Es fa per comprovar que els canvis realitzats en un programa no hagin tingut cap efecte negatiu en altres parts del programa. L'objectiu és assegurar la integritat del programa després de fer modificacions o correccions. - __Testing de càrrega:__ Es fa per comprovar com el programa es comporta quan està sotmès a una càrrega de treball elevada. L'objectiu és assegurar que el programa pugui gestionar la càrrega esperada sense fallar. - __Testing d'acceptació:__ Es fa per comprovar que el programa compleix amb els requisits del client i està preparat per ser lliurat o posat en producció. L'objectiu és assegurar que el programa estigui llest per ser utilitzat pels usuaris finals.