MAT - Marc d’Automatització de Testing

Introducció al Marc d'Automatització de Testing (MAT)

El MAT és un framework d'automatització de proves dissenyat específicament per millorar i garantir la qualitat del programari desenvolupat per al CTTI durant tot el seu cicle de vida. Basat en tecnologies modernes i escalables com Selenium Grid, Newman, JMeter i la seva integració amb GitHub Actions i Jira/Xray, aquest ecosistema integral proporciona eines, metodologies i bones pràctiques estandarditzades que permeten implementar processos de testing automatitzat de forma consistent, eficient i traçable.

Desenvolupat amb la visió d'establir un estàndard unificat de qualitat, el MAT representa l'evolució necessària en els processos de validació de programari dins l'ecosistema tecnològic de la Generalitat de Catalunya. Aquest marc metodològic permet als equips de desenvolupament i qualitat aplicar tècniques avançades d'automatització que acceleren els cicles de retroalimentació i minimitzen els riscos associats amb el desplegament de noves funcionalitats o modificacions en sistemes existents.

Visió estratègica del MAT

El MAT neix com a resposta a les necessitats creixents d'agilitat, eficiència i qualitat en el desenvolupament de solucions digitals per a l'administració pública. En un context on la transformació digital és un imperatiu, el marc proporciona:

  • Estandardització de processos: Unifica els criteris i metodologies de testing entre tots els projectes i proveïdors.
  • Optimització de recursos: Redueix la duplicació d'esforços mitjançant la reutilització de components i patrons de proves.
  • Escalabilitat: Permet gestionar eficaçment l'augment en la complexitat i volum de les proves necessàries.
  • Traçabilitat completa: Ofereix visibilitat total del procés de qualitat, des de la definició de requisits fins a la validació en producció.

Continuous Testing com a pilar fonamental

El MAT s'alinea amb els principis del Continuous Testing, un enfocament que integra les proves com una part constant i automatitzada del cicle de lliurament de programari. Aquesta aproximació permet:

  • Detectar errors en etapes primerenques del desenvolupament.
  • Reduir els temps de validació i desplegament.
  • Obtenir feedback immediat sobre la qualitat del codi.
  • Millorar la confiança en els desplegaments a producció.

Bones pràctiques de Continuous Testing implementades al MAT

  1. Automatització des de l'inici: Les proves s'automatitzen des de les primeres fases del desenvolupament, no com un afegit posterior.
  2. Testing shift-left: S'avancen les activitats de testing cap a les fases inicials del cicle de desenvolupament, permetent la detecció precoç de defectes.
  3. Integració amb CI/CD: Les proves s'executen automàticament a cada canvi del codi, garantint feedback immediat als desenvolupadors.
  4. Cobertura de diversos nivells: Es cobreixen diversos aspectes del programari, des de les unitats més petites fins a la funcionalitat completa.
  5. Tests com a documentació viva:Les proves automatitzades serveixen com a documentació executables de les funcionalitats.
  6. Mantenibilitat i escalabilitat: El disseny de les proves contempla la facilitat de manteniment i l'escalabilitat davant el creixement del projecte.

Gestió i presentació de resultats

Un aspecte diferencial del MAT és el seu enfocament en la gestió i presentació dels resultats de les proves:

  • Informes visuals i interactius que faciliten la interpretació dels resultats.
  • Integració amb plataformes de gestió de projectes que permeten el seguiment de la qualitat.
  • Quadres de comandament que ofereixen una visió global de l'estat de la qualitat del producte.
  • Alertes automàtiques en cas de detectar problemes crítics.

La maduresa en testing automatitzat

El MAT proporciona una ruta cap a la maduresa en testing automatitzat, definint diferents nivells d'adopció:

  1. Nivell bàsic: Automatització de proves funcionals clau.
  2. Nivell intermedi: Integració de proves en el pipeline CI/CD i cobertura àmplia.
  3. Nivell avançat: Test-driven development, proves contínues i retroalimentació immediata.

L'objectiu principal del MAT és assegurar que les aplicacions compleixin els més alts estàndards de qualitat, verificant que les solucions siguin funcionals, estables, segures i compatibles amb diversos dispositius i navegadors. Aquest enfocament transversal garanteix no només una experiència d'usuari òptima, sinó també una reducció significativa dels costos de manteniment i una detecció precoç de problemes potencials.

Característiques del MAT

  • Plantilles de treball estandarditzades: Les plantilles proporcionades pel MAT estableixen estàndards mínims de qualitat, assegurant una execució de proves homogènia i eficient. Faciliten la transferència de coneixement entre equips i redueixen el temps d'incorporació de nous membres al projecte.
  • Capacitat d’integració contínua: El MAT facilita l'execució de proves automàtiques mitjançant eines com Jira, GitHub Actions i Jenkins, proporcionant feedback constant durant tot el procés. També incorpora un sistema de monitoratge per gestionar incidències en temps real.
  • Adaptabilitat a metodologies àgils: S'integra perfectament en metodologies de desenvolupament àgil, permetent l'execució de cicles curts de prova i validació alineats amb sprints i lliuraments incrementals.

2. Alta a les eines

Per integrar-se correctament amb el MAT, cal disposar d'accés a les eines necessàries i complir alguns requisits bàsics per garantir un procés fluid i sense errors. Aquest procés permet una configuració òptima per a l'execució de proves automatitzades i la gestió del cicle de vida del programari.

Requisits previs

  • Accés als repositoris de codi: L’usuari ha de tenir els permisos necessaris per treballar amb el codi font i les proves.
  • Eines de gestió de projectes: Es recomana utilitzar plataformes com Jira per gestionar proves.

En cas de no disposar d’accés, les heu de tramitar des de:

Eina Sol·licitud a
Repositoris de Codi Via ticket ACOCLDSIC
Projecte a Jira Podeu trobar informació per la creació i configuració de projectes Jira al web Alta i accés

3. Detall Prova en Jira

Jira és una eina clau per a la gestió i traçabilitat de les proves automatitzades dins del MAT. Permet gestionar i documentar els casos de prova, planificar-ne l'execució i integrar els resultats amb altres eines de desenvolupament.

Configuració d’un projecte de proves en Jira

  • Creació del projecte Jira: Si el projecte encara no està configurat, cal crear un espai dedicat a la gestió de proves.
  • Definició d’un Pla de Proves: Crear un Issue per a cada conjunt de proves que es vol executar.
  • Utilització de XRay: Aquest complement de Jira permet gestionar casos de prova, executar-los i emmagatzemar els resultats.
  • Integració amb GitHub o CI/CD: Els resultats de les proves poden ser sincronitzats amb GitHub Actions o Jenkins per automatitzar-ne l'execució.

Execució i seguiment de les proves

  • Cada prova es documenta dins de Jira, permetent una traçabilitat completa.
  • Els casos de prova es poden agrupar en plans de proves per facilitar la seva execució ordenada.
  • Els resultats de les proves són accessibles directament a Jira, amb la possibilitat d'afegir captures de pantalla i logs.
  • En cas de fallada, Jira permet obrir històries d’usuari automàticament per al seu seguiment i resolució.

Beneficis d'usar Jira per a la gestió de proves

  • Centralització de la informació: Tots els casos de prova i resultats es troben en una única plataforma.
  • Traçabilitat completa: Integració amb altres eines per relacionar proves amb desenvolupament i desplegaments.
  • Automatització i monitoratge: Possibilitat d’integrar-se amb GitHub Actions, Jenkins o altres eines per a l'execució automatitzada de proves.
  • Generació d'informes: Els informes de proves es poden generar automàticament per facilitar l'anàlisi i la presa de decisions.

Si no es disposa de Jira, es pot executar directament a través de GitHub Workflows.

Descripció gràfica:

Després s'obre la finestra per emplenar les dades del pla de proves

Primer crearem el pla de proves (Test Plan).

Després crearem les diferents proves i les descriurem, per tal de que es connectin directament amb el MAT, el tipus de prova ha de ser Generic

4.- Creació de proves automatitzades

Per començar amb l’automatització de proves, és imprescindible que els testers disposin dels repositoris adequats amb les plantilles preconfigurades. Per això, han de sol·licitar l’aprovisionament dels repositoris de proves, els quals contenen els recursos necessaris, incloent-hi exemples pràctics i documentació detallada sobre l’ús de les plantilles. Aquest pas és fonamental per garantir la coherència i l’eficiència en la creació i execució de les proves automatitzades.

Un cop obtingut l’accés als repositoris, les proves es desenvolupen a l’entorn local del tester, utilitzant la plantilla proporcionada pel MAT (Marc d’Automatització de Testing). Aquesta plantilla proporciona una estructura estàndard per a les proves, assegurant que cada cas de prova inclogui:

  • El propòsit de la prova, descrivint què es vol validar.
  • Els passos a seguir per executar la prova de manera sistemàtica.
  • Les dades d’entrada necessàries, com inputs de formularis o paràmetres d’API.
  • Els resultats esperats, per verificar que el sistema respon correctament.
  • Altres detalls rellevants, com precondicions o dependències.

Tipus de proves automatitzades

Les proves automatitzades poden abordar diferents aspectes del sistema, com ara:

  • Proves de Frontend: Validen la interfície d’usuari, assegurant que funcioni correctament en diferents navegadors i dispositius.
  • Proves d’APIs: Comproven la comunicació entre serveis, verificant que les peticions i respostes siguin correctes.
  • Proves de Rendiment: Avaluen la capacitat de resposta del sistema en diferents condicions de càrrega per detectar possibles colls d’ampolla.

És fonamental seguir les instruccions de la documentació per configurar l’entorn correctament i assegurar que les proves es desenvolupin segons els requisits establerts.

Integració i validació de proves

Un cop desenvolupades les proves a l’entorn local, cal validar-les abans de la seva integració. Això es fa mitjançant un pull request al repositori de proves, que desencadena automàticament un flux de verificació. Aquest procés és essencial per assegurar que:

  • Les proves compleixen els estàndards de qualitat definits.
  • No introdueixen errors en el sistema.
  • Totes les modificacions són revisades i validades abans de fusionar-se a la branca principal.

Quan es fa el pull request al repositori de proves, s’executa un conjunt de validacions automàtiques. Els resultats d’aquestes validacions es poden consultar directament al pull request, facilitant la detecció de possibles errors abans que el codi es fusioni. Aquesta pràctica és fonamental per garantir un codi estable i fiable abans de desplegar-lo a producció.

Bones pràctiques per a una integració eficient

Per mantenir un flux de treball ordenat i eficient, és recomanable seguir aquestes bones pràctiques:

  • Crear branques específiques per a cada funcionalitat o correcció de bugs.
  • Utilitzar noms descriptius per a les branques, facilitant la seva identificació.
  • Fer commits freqüents i ben documentats, explicant els canvis realitzats.
  • Revisar els resultats de les proves automàtiques abans de fusionar el codi.

Aquest enfocament permet identificar i corregir problemes de manera primerenca, reduint el risc d’introduir errors en la branca principal.

Contribució a la qualitat del programari

Amb aquest procés, els testers tenen un paper clau en la garantia de qualitat del programari. Seguint un enfocament estructurat en la creació i execució de proves automatitzades, es minimitzen errors i es millora la fiabilitat del sistema. Això assegura que el producte final compleixi els estàndards esperats abans d’arribar als usuaris finals.

5. Repositori

6. Execució de proves a GitHub Actions

Amb les proves llestes i validades, les podrem executar sota demanda a través de GitHub omplint els paràmetres requerits en el Flux de GitHub Actions, que es proporciona amb la plantilla de repositori.

Cicle de vida de les proves a través de Pull Request

Per garantir una integració correcta i la verificació del codi de les proves, abans de posar-les en producció, el flux de treball s'activarà automàticament després de fer un pull request al repositori de proves. Aquesta pràctica assegura que totes les modificacions proposades siguin revisades i validades abans de fusionar-les a la branca principal, evitant així la introducció d'errors al sistema.

Procés per arribar al pull request

  1. Desenvolupament local: Primer, el tester ha de dissenyar la prova en el seu entorn local.
  2. Verificació inicial: Un cop comprovat que la prova retorna el resultat esperat, es puja al repositori de proves.
  3. Validació en branques de desenvolupament: Abans d'incorporar la prova a la branca principal, es recomana pujar-la a una branca de desenvolupament específica per fer una primera revisió interna.
  4. Pull request al repositori de proves: Quan la prova està llesta, es fa un pull request al repositori de proves, activant automàticament el flux de verificació.

Execució i validació de proves

Abans de fusionar el codi a la branca principal, també és possible executar manualment les proves des de les accions del repositori, referenciant la branca corresponent. Això permet als testers assegurar que la integració amb el MAT, SIC+ i SIC3 és correcta i que les proves es comporten segons els requeriments establerts.

Bones pràctiques per garantir la qualitat

Per mantenir una integració controlada i evitar problemes en la branca principal, es recomana seguir aquestes bones pràctiques:

  • Utilitzar una política de branques clara, creant branques específiques per cada funcionalitat o correcció de bugs.
  • Fer commits freqüents i ben documentats, explicant cada canvi realitzat.
  • Executar les proves manualment abans del pull request, si és necessari, per detectar errors abans que passin a la validació automàtica.

Quan es realitza el pull request al repositori de proves, s'executa automàticament un flux de verificació que comprova que el codi compleix els estàndards de qualitat i no introdueix errors. Aquesta validació permet detectar i corregir problemes de manera precoç, abans que puguin afectar altres parts del sistema.

Abans de fer el merge, aquest flux de verificació s'executa immediatament i el seu resultat es pot consultar dins del mateix pull request per verificar l’estat de les proves. Això proporciona un control addicional i permet assegurar que només es fusiona codi fiable a la branca principal.

Una vegada validada i acceptada la petició de Pull Request i executat el Merge, ja tindrem les proves llestes per executar-les.

7. Visualització de resultats

Un cop executat el flux de treball, podrà visualitzar als registres de GitHub tota la informació respecte de la prova en curs. Aquests registres proporcionen detalls exhaustius sobre l'execució de les proves, incloent-hi els resultats, els errors trobats i qualsevol altra informació rellevant. A més, una de les grans avantatges de la generació d'informes de proves amb Selenium en format HTML és la seva claredat i facilitat de lectura. Aquests informes són visuals i interactius, permetent una ràpida identificació de problemes i una millor comprensió dels resultats de les proves.

Després d'executar el flux de treball a través d'un pull request, els informes generats es poden trobar fàcilment a Jira gràcies a la integració entre GitHub i Jira. Aquesta integració permet que els resultats de les proves i els informes HTML es sincronitzin automàticament amb les tasques corresponents a Jira, facilitant així el seguiment i la gestió de les proves. Verificar l'estatus de la prova realitzada a Jira és senzill, ja que tota la informació es troba centralitzada i accessible des d'una única plataforma.

A més, l'informe .HTML generat proporciona una visió completa i detallada de les proves realitzades, incloent-hi captures de pantalla, logs d'execució i altres dades importants que ajuden a diagnosticar i solucionar problemes de manera eficient. Aquesta documentació detallada és essencial per assegurar que totes les parts interessades tinguin una comprensió clara de l'estat de les proves i dels resultats obtinguts. La visualització de resultats a través dels registres de GitHub i els informes HTML a Jira ofereix una solució completa i eficient per al seguiment i la gestió de les proves automatitzades.

Guia per a l'Estructuració de Proves Automatitzades

Per dur a terme el que s'ha vist anteriorment, el Tester haurà d'estructurar les seves proves automatitzades, per a la qual cosa hem facilitat una plantilla que resumeix funcionalitats rellevants de manera que li sigui més pràctic la construcció i execució de les seves proves.

Proves Funcionals:

Aquestes proves es centren en validar la funcionalitat de l'aplicació des de la perspectiva de l'usuari, simulant interaccions reals de l'usuari, com fer clic en botons, omplir formularis i navegar per diferents pàgines.

Selenium permet crear scripts que emulen accions humanes, la qual cosa garanteix que l'aplicació compleixi amb els requisits funcionals i que es mantingui estable davant possibles canvis o actualitzacions.

En el següent manual, podeu executar proves funcionals de Selenium, a través de Selenium Grid, una eina que permet orquestrar i escalar els navegadors.

Per tal de desenvolupar les proves, hem preparat un manual que podeu trobar aquí:

Execució de la prova des de Jira:

Els proveïdors podran executar les proves directament des del pla de proves de Jira.

Dades necessàries per a l'execució

  • Repositori de codi font: URL on estan allotjades les proves funcionals.
  • Entorn: Entorns per a fer les proves.
  • Branca: Branca del repositori de proves.
  • URL de l'aplicació: URL de l'aplicació.
  • Llindar de QG: Límit de fallades de les proves.
  • JIRA_PROJECT_KEY: Project Key de Jira.
  • JIRA_ISSUE_KEY: Test Plan Key de Jira.

Accedir al pla de proves en Jira:

En Jira es poden veure els resultats dins del:
  • Pla de proves: dins del Pla de proves, es poden veure els adjunts de l'execució.
  • El report de les proves funcionals és un document .HTML que prové de la llibreria Extent Report.

  • Test: dins del test, es poden veure les execucions associades a aquest Tests.
  • En aquestes execucions es pot veure l'estat del test.

    També es pot veure l'estat general del projecte en els taulers:

Proves d’API

Les proves de REST API consisteixen a enviar peticions a un conjunt d’APIs, per tal d'observar-les i monitorar les respostes per a assegurar-se que funcionen de la forma que s'espera. Les API (Interfícies de Programació d'Aplicacions) són una col·lecció de mètodes i funcions que permeten desenvolupar aplicacions. Funcionen com a missatgers entre les persones i el proveïdor de serveis, rebent les peticions i responent amb un resultat. Per tant, les proves d’API es concentren principalment en la funcionalitat d'una aplicació més que en cadascuna de les seves parts o com es mostren a un usuari.

Eines per a les proves

En el següent manual, podeu executar proves d’API a través de Postman i Newman (CLI per a Postman).

Resultats de les proves

Els resultats de les proves seran bolcats al quadre de comandament de Grafana, per mitjà de InfluxDB. A més, els resultats seran també bolcats a Jira (amb el plugin de XRay).

Desenvolupament

Podeu trobar el procés de creació de les proves d’API aquí.

Instal·lació:

És possible usar Postman en la seva versió web o en aplicació d'escriptori.

Per a més informació acudir a la guia oficial: Install and update Postman | Postman Docs

Haurem d’instalar Newman per tal d’executar les proves de Postman via consola

Creació de proves:

  1. Utilitzar la plantilla de proves proporcionada al repositori de proves d’api.
  2. Crear les proves en el següent fitxer: backend-test-java/<app_name>-backend-postman.json
  3. Exportar des de Postman el fitxer de les variables d'entorn en: environment.json

Execució de proves:

Per a executar les proves, s'utilitzarà Newman, una extensió de Postman que permet executar per línia de comandos.


                    newman run -backend-postman.json -e environment.json 
                      -r 'cli,junitxray,htmlextra'  
                      --reporter-htmlextra-export 'newman/report.html' 
                      --reporter-junitxray-export postman_echo_junitxray.xml 
                      -n 1
                  

MAT:

Execució del job des de Jira:

Els proveïdors podran executar les proves directament des del pla de proves de Jira, ja que està connectat amb el Job de Jenkins.

Aquests són les dades necessàries per a aquesta execució:

  • Job de Jenkins: MAT-PROVES-API-POSTMAN
  • Paràmetres:
    • repositori = ... URL on estan allotjades les proves funcionals.
    • branca = ... Branca del repositori de proves.
    • app_name= ... nom de l'aplicació.
    • entorn = ... Entorns per a fer les proves.

Accedir al pla de proves en Jira

Resultats:

En Jira es poden veure els resultats dins del:

  • Pla de proves: dins del Pla de proves, es poden veure els adjunts de l'execució.
  • El report de les proves de API és un document .html que prové de Newman Reporter.

  • Test:

Proves de Rendiment

Accedir al pla de proves en Jira:

Responsable Destinataris
Àrea de Qualitat Proveïdors de desenvolupament i manteniment dels SI de la Generalitat de Catalunya, Responsables de Projecte, Responsables de Qualitat
Guies i Manuals