Saltar al contingut

La Piràmide de Testing i el Software Confiable

La piràmide de testing de programari, també coneguda com la piràmide de Cohn o piràmide de proves, és un framework que proposa l'agrupació d'aquestes proves en capes i la quantitat relativa que s'ha de crear per cada capa. Bàsicament es tracta d'una guia que ajuda a crear proves més eficients i s'obté com a resultat un programari més confiable. Mike Cohn va crear una estructura en forma de piràmide per permetre als equips que treballen amb metodologies àgils organitzar les proves. Així neix el concepte de la "Piràmide de Cohn" y presenta la següent distribució:

Les proves unitàries són a la part inferior i representen les proves més granulars, de les quals hi hauria d'haver una gran gamma. La següent capa a la piràmide és la de servei o proves d'integració. Aquí és on es comença a provar com interactuen els diferents components de programari entre si, ja siguin integracions internes o externes. La prova d'extrem a extrem (E2E) és la més complexa i prova el programari en el seu conjunt per assegurar-se que funciona com s'espera de principi a fi.

  • Proves unitàries

Centrades en la part més petita del disseny del programari, tracten de provar una petita porció de codi, típicament una funció/mètode o fins a una classe, per determinar si compleix la seva funció correctament. Les característiques d' aquestes proves són simples i ràpides, per la qual cosa es desitja un gran percentatge d' elles en aquesta capa. Quan falla una prova unitària, els desenvolupadors reben una alerta i poden determinar ràpidament quines són les conseqüències no desitjades dels canvis en el seu codi.

  • Proves d' integració

La següent capa correspon als serveis on es realitzen les proves d' integració que es troben en el nivell mitjà de la piràmide de testing. Quan les proves unitàries són molt granulars, en aquest nivell utilitzem proves que comencen a verificar que els paquets més grans de codi funcionen correctament junts.

Aquestes proves són més lentes d'executar que les proves unitàries i requereixen que el seu programari s'implementi en un entorn de prova, però poden detectar problemes més complicats que les proves unitàries passen per alt. Són crucials per provar el programari implementat de manera eficient en comparació amb les proves d' un extrem a un altre.

Atès que l'abast de les proves és més ampli, augmenta el temps per diagnosticar i solucionar problemes. No obstant això, igual que amb les proves unitàries, les proves d' integració es poden repetir fins que totes les proves siguin reeixides.

  • Proves d'extem a extrem (E2E)

La prova E2E són les més complexes i estan dissenyades per avaluar el programari en el seu conjunt. Utilitzen dades i un entorn de prova per simular el funcionament d' aquest programari en el món real. És el més car de mantenir i el més lent d'executar. Atès que les proves E2E proven aplicacions completament acoblades, també és la fase més difícil en la qual diagnosticar possibles errors.

Aquest tipus de proves no es pot mantenir sense cap tipus d' automatització, llevat que s' hagi dissenyat prèviament un test pla sòlid que mostri detalladament com s' han de realitzar aquestes proves.

Piràmide de testing automatitzada de Quabu

Qualsevol piràmide de testing s'hauria de construir sobre una base sòlida d'una anàlisi de codi profund, seguint el model de qualitat del producte programari definit per la ISO/IEC 25010. Aquest model es troba compost per les vuit característiques de qualitat que es mostren en la figura següent:

Per aconseguir aquesta qualitat de producte, Quabu presenta una piràmide de testing automatitzada amb diferents eines de programari en les seves respectives capes:

  1. Proves unitaries: s'automatitzen a nivell de tasca (Jest)
  2. Proves d'integració: s'automatitzen a nivell de l'historia d'usuari (Postman).
  3. Proves E2E: s'automatitzen a nivell de característiques (CodeceptJS + Selenium).

Cal destacar també el procés d'automatització que Quabu duu a terme per a l' execució d' aquestes proves i les eines que també hi intervenen:

  1. Definició dels requeriments i condicions per a les històries d'usuari: Confluence.
  2. Definició e implementació dels diferentes test cases: Jira-XRAY.
  3. Repositori per a les proves automatitzades: Bitbucket.
  4. Execució de les proves automatitzades: Jenkins.
  5. Validació i reporting dels resutats obtinguts: XRAY.