Història de Quality Assurance i les seves Fites

Quality Assurance
Història de Quality Assurance i les seves Fites

1950 Els inicis

Als anys 1950 la indústria de la computació estava en els seus primers passos, i amb ella, el concepte de qualitat de software va començar a prendre forma. Els primers sistemes computacionals, com el UNIVAC i l’IBM 701, eren màquines grans i costoses utilitzades principalment pel govern i grans corporacions. En aquesta època, la principal preocupació era assegurar-se que el software funcionés correctament, ja que els errors podien resultar en fallades costoses i temps d’inactivitat. Les proves eren manuals i realitzades principalment pels mateixos programadors que escrivien el codi. La correcció d’errors (debugging) era l’enfocament principal, i no existia una metodologia formal per a les proves de software.

1960 Primeres formes de proves estructurades

Amb l’augment de la programació estructurada es va començar a fer èmfasi en la necessitat de pràctiques més disciplinades per al desenvolupament i proves de software. Aquest període va marcar la introducció de tècniques sistemàtiques de verificació i validació. Es van començar a utilitzar les primeres formes de proves estructurades, incloent proves de caixa blanca (white-box testing), que analitzaven l’estructura interna del codi i s’asseguraven que totes les rutes possibles fossin executades almenys una vegada.

1970 Inspeccions formals

Una de les contribucions més significatives a la dècada dels 70 va ser la introducció d’inspeccions formals de software per Michael Fagan a IBM en 1976. Aquest mètode de revisió per parells (peer reviews) va estructurar el procés en què els desenvolupadors revisaven el treball d’altres per identificar defectes en etapes primerenques del desenvolupament. Les inspeccions formals incloïen fases específiques com la planificació, la reunió d’inspecció, la correcció i el seguiment, millorant significativament la capacitat de detectar i corregir errors abans que arribessin a les etapes posteriors del cicle de vida del desenvolupament. A part de les proves de caixa blanca, es van incloure les proves de caixa negra (black-box testing), que es centraven en les especificacions i els requisits del software, provant les entrades i sortides sense considerar l’estructura interna.

1980 Gestió de la Qualitat

La dècada de 1980 va marcar un avenç significatiu en la formalització dels processos de qualitat del software amb la introducció del Model de Maduresa de Capacitats (CMM) pel Software Engineering Institute (SEI) al 1987 i la publicació de la primera edició de la norma ISO 9000 al 1986. El CMM va proporcionar un marc estructurat per avaluar i millorar els processos de desenvolupament de software, identificant cinc nivells de maduresa des de processos inicials i caòtics fins a processos optimitzats i repetibles. Simultàniament, la ISO 9000 va establir un conjunt de normes per a la gestió de la qualitat en diverses indústries, incloent el software, promovent l’adopció de pràctiques sistemàtiques i consistents per garantir productes i serveis que complissin amb els requisits del client i les normatives aplicables.

L’aparició d’eines d’automatització de proves va permetre una major eficiència i cobertura en les proves de software. Eines com WinRunner (introduïda per Mercury Interactive en 1989) van oferir capacitats per automatitzar l’execució de proves funcionals i de regressió. L’automatització va permetre als equips de QA realitzar proves més exhaustives i repetibles, reduint el temps i l’esforç necessaris per identificar i corregir defectes.

Per a la gestió de projectes es va començar a adoptar metodologies de desenvolupament estructurades, com el model en cascada (waterfall). Aquest model dividia el desenvolupament de software en fases clarament definides: requisits, disseny, implementació, proves, desplegament i manteniment. Cada fase havia de completar-se abans de passar a la següent, cosa que facilitava la gestió i el control del procés de desenvolupament.

Les universitats americanes van començar a oferir cursos i programes especialitzats en enginyeria de software i gestió de la qualitat.

1990 Proves unitàries i de seguretat

Per respondre a les limitacions del model waterfall, es van començar a adoptar metodologies àgils per emfatitzar la flexibilitat, la col·laboració i l’entrega contínua de software funcional. El desenvolupament àgil va promoure iteracions curtes, retroalimentació constant i la capacitat d’adaptar-se ràpidament als canvis en els requisits del client. Tot i que el Manifest Àgil es formalitzaria en 2001, les arrels d’aquests enfocaments ja estaven prenent forma durant aquesta dècada amb mètodes com Scrum i Extreme Programming (XP).

L’adopció d’eines d’automatització de proves va permetre a les organitzacions augmentar l’eficiència i la cobertura de les seves proves. JUnit, introduït en 1997, va facilitar l’escriptura de proves unitàries automatitzades en Java, promovent el desenvolupament guiat per proves (TDD).

En 1991, el Software Engineering Institute (SEI) va publicar el Capability Maturity Model for Software (SW-CMM), basat en les primeres versions de CMM introduïdes als anys 1980. La norma ISO 9001, actualitzada en 1994, es va convertir en un estàndard àmpliament adoptat per a la gestió de la qualitat en la indústria del software.

La seguretat del software va començar a rebre una major atenció a causa de l’augment de la connectivitat a Internet i l’amenaça creixent de ciberatacs. Les proves de seguretat i la gestió de vulnerabilitats es van convertir en components essencials de l’assegurament de la qualitat del software, permetent identificar i mitigar riscos des de les primeres etapes del cicle de vida del software.

2000 Metodologies àgils i automatització

Als anys 2000 es van consolidar les metodologies àgils com Scrum, Extreme Programming (XP) i Kanban, guanyant una adopció significativa en la indústria del software. Aquests enfocaments es van centrar en l’entrega iterativa i incremental de software funcional, la col·laboració propera entre equips multidisciplinaris i la capacitat de resposta a canvis ràpids en els requisits del client. El Manifest Àgil, publicat en 2001, va formalitzar els principis clau que guien el desenvolupament àgil, promovent la satisfacció del client a través de l’entrega primerenca i contínua de software de valor.

L’automatització de proves i la integració contínua (CI) es van convertir en pràctiques estàndard en el desenvolupament de software. Eines com Jenkins, introduïdes en 2006, van facilitar la integració i l’entrega contínua (CD), permetent als equips automatitzar la compilació, prova i desplegament de codi de manera eficient i fiable. Aquesta automatització va millorar la qualitat del software en reduir errors humans i accelerar els cicles de desenvolupament.

Selenium, inicialment llançat en 2004, es va convertir en una eina dominant per a l’automatització de proves funcionals en aplicacions web, oferint suport multiplataforma i flexibilitat per escriure scripts de proves en diversos llenguatges de programació.

Amb l’augment de les amenaces cibernètiques i la creixent dependència de sistemes connectats, la seguretat del software es va convertir en una preocupació primordial als anys 2000. L’enfocament en la seguretat del software no només buscava prevenir atacs, sinó també assegurar la integritat i confidencialitat de les dades i la confiança de l’usuari.

Plataformes com Amazon Web Services (AWS) i Microsoft Azure van oferir serveis d’infraestructura com a servei (IaaS) i plataforma com a servei (PaaS), permetent a les organitzacions la capacitat d’aprovisionar recursos de prova sota demanda i replicar entorns de producció facilitant proves més escalables i eficients.

2010 Computació en el núvol

Les metodologies àgils van continuar guanyant popularitat i es van diversificar encara més per adaptar-se a diverses necessitats i contextos de desenvolupament de software. El moviment DevOps es va convertir en una tendència dominant en la indústria del software durant els anys 2010. DevOps promou la integració i col·laboració entre equips de desenvolupament (Dev) i operacions (Ops), facilitant l’entrega contínua i l’automatització de tot el cicle de vida del software. Eines com Docker, Kubernetes i Jenkins es van convertir en pilars de l’automatització contínua, permetent la creació, desplegament i gestió eficient d’aplicacions en entorns escalables i dinàmics.

Amb la proliferació de la computació en el núvol i les aplicacions distribuïdes es van desenvolupar tècniques avançades de proves com proves de càrrega i rendiment, proves de seguretat automatitzades, i anàlisi de vulnerabilitats continu per mitigar riscos i assegurar la integritat de les dades i l’experiència de l’usuari.

Un creixent reconeixement de la importància de l’experiència de l’usuari (UX) va expandir les pràctiques de QA per incloure proves d’usabilitat i accessibilitat, assegurant que els productes no només fossin funcionals i segurs, sinó també intuïtius i satisfactoris per als usuaris finals. El disseny centrat en l’usuari i la retroalimentació contínua es van integrar en els processos de desenvolupament àgil i DevOps per millorar l’experiència de l’usuari i l’adopció del software.

2020 Nous reptes

Els anys 2020 van començar amb un canvi sense precedents a causa de la pandèmia de COVID-19, que va accelerar l’adopció massiva del treball remot i la transformació digital a tot el món. Les organitzacions de desenvolupament de software van haver d’adaptar-se ràpidament, implementant eines de col·laboració remota, infraestructures en el núvol i pràctiques àgils robustes per mantenir la continuïtat operativa i la productivitat. La gestió de la qualitat del software també es va veure afectada, amb un enfocament renovat en l’automatització de proves i la seguretat cibernètica per garantir l’estabilitat i seguretat de les aplicacions en un entorn distribuït.

DevOps s’ha consolidat encara més com un enfocament integral per a l’entrega de software ràpid i fiable. La integració contínua (CI) i l’entrega contínua (CD) s’han convertit en pràctiques estàndard, facilitant l’automatització de proves, la implementació i el monitoratge continu d’aplicacions.

La intel·ligència artificial (IA) juga un paper creixent en les pràctiques de QA. Es poden utilitzar eines que utilitzen IA per a la generació automàtica de casos de prova, l’anàlisi predictiu de defectes i l’optimització de la cobertura de proves. Les proves autònomes i la detecció automàtica d’anomalies permeten als equips identificar i resoldre problemes de manera més eficient, millorant l’eficàcia de les proves i reduint els temps de cicle de desenvolupament.