Marc d’Automatització de Testing (MAT)
El Marc d’Automatització de Testing (MAT) és un framework especialitzat en l’automatització de proves, dissenyat per a integrar-se fàcilment amb els fluxos de desenvolupament i desplegament tant del SIC+ com del SIC 3.0. El seu objectiu és garantir la qualitat del programari mitjançant l’execució automatitzada de proves en entorns preproductius, facilitant així la detecció precoç d’errors i la validació contínua de les aplicacions abans d’arribar a l’entorn productiu.
El MAT es basa en un enfocament modular i flexible, permetent als equips de desenvolupament definir i executar proves específiques per a les seves aplicacions. Cada tipus de prova, funcional, regressió, rendiment o api, tindrà associat un repositori específic que allotjarà el codi dels tests, així com els recursos necessaris per a la seva execució.
La documentació oficial del MAT pot trobar-se al Portal de Qualitat, en concret a la Documentació Marc d’Automatització de Testing (MAT), on s’explica detalladament aquest framework desenvolupat per l’equip de Qualitat del CTTI.
Per a trobar informació sobre el desenvolupament de tests de Selenium, JMeter o Postman ha de consultar-se la documentació publicada per l’equip de qualitat. Qualsevol dubte referent al desenvolupament d’aquests tests, o la funcionalitat del propi framework MAT, ha de ser consultada a aquest equip. L’equip del SIC únicament és responsable de la integració amb el MAT, no del seu desenvolupament ni dubtes d’ús per part dels lots de manteniment d’aplicacions.
La integració amb el MAT únicament és possible a través de l’Orquestrador de Releases. S’ha eliminat la integració del MAT dels workflows unitaris de cada component. L’orquestrador s’encarrega de coordinar l’execució de les proves un cop s’han desplegat tots els components de la release, obtenint els paràmetres necessaris a partir dels fitxers application.yaml i release-plan.yaml del repositori application-metadata.
Tipus de proves del MAT
El SIC+ s’integra amb el MAT per l’execució de 4 tipus de proves diferents: funcionals, regressió, rendiment i API. Cadascun d’aquests tipus de proves té el seu propi repositori i estructura de codi.
Proves funcionals
El repositori de proves funcionals s’utilitza per a validar el comportament esperat de l’aplicació en escenaris específics Functional Tests Template. Aquestes proves se centren en verificar que les funcionalitats implementades compleixen amb els requisits definits i s’executen correctament. L’eina utilitzada per a les proves és Selenium, la qual permet simular interaccions d’usuari amb l’aplicació web i verificar que els resultats són els esperats.
El repositori compta amb tres branques principals, igual que la resta de repositoris del SIC+: develop, release i master. També inclou un conjunt de workflows de CI/CD que s’hauran d’usar seguint el GitFlow comú del SIC+ per al desenvolupament de les proves de Selenium.
Proves de regressió
El repositori de proves de regressió s’utilitza per a validar que els canvis realitzats en l’aplicació no introdueixen nous errors o afecten negativament les funcionalitats existents Regression Tests Template. Igual que les proves funcionals, s’utilitzen eines com Selenium per a simular interaccions d’usuari i verificar els resultats.
El repositori té les mateixes característiques que el de proves funcionals.
Proves de rendiment
El repositori de proves de rendiment s’utilitza per a avaluar el comportament de l’aplicació sota diferents càrregues i condicions Performance Tests Template. Aquestes proves permeten identificar colls d’ampolla, mesurar temps de resposta i garantir que l’aplicació pot assumir un determinat volum d’usuaris.
Aquestes proves s’executen amb l’eina JMeter, la qual permet simular múltiples usuaris i mesurar el rendiment de l’aplicació en diferents escenaris.
Aquest repositori, a diferència dels anteriors, només compta amb la branca master.
Proves d’API
El repositori de proves d’API s’utilitza per a validar el correcte funcionament de les interfícies de programació d’aplicacions (API) del sistema Api Tests Template. Aquestes proves es centren en verificar que les API responen correctament a les peticions i compleixen amb els contractes definits.
Aquestes proves s’executen amb l’eina Postman, que permet definir i executar proves sobre les API de manera senzilla i efectiva.
El repositori de proves de API, igual que el de proves de rendiment, només compta amb la branca master.
Configuració del MAT a través de l’Orquestrador de Releases
La integració amb el MAT es configura exclusivament des del repositori <cod_app>.<cod_comp>-<acronim>-application-metadata, a través de dos fitxers gestionats pel release manager: application.yaml i release-plan.yaml. Ja no existeix cap fitxer release.yml de configuració de proves als repositoris de tests.
Configuració al fitxer application.yaml
El fitxer application.yaml defineix els paràmetres globals del MAT aplicables a tots els desplegaments orquestrats, així com els repositoris de tests disponibles per a l’aplicació:
application.parameters.global.env_to_test: Entorn sobre el qual s’executaran les proves (Desenvolupament,PreproducciooProduccio).application.parameters.global.jira_project_key: Clau del projecte de Jira per a la traçabilitat.application.parameters.global.jira_issue_key: Identificador de la issue de Jira vinculada al desplegament. Pot ser sobreescrit per cada test alrelease-plan.yaml.application.parameters.functional.url_app: URL de l’aplicació per a les proves funcionals.application.parameters.regression.url_app: URL de l’aplicació per a les proves de regressió.application.parameters.api.app_name: Nom de l’aplicació per a les proves d’API.application.tests: Llista dels repositoris de tests disponibles, amb nom, tipus, URL i branca.
Configuració al fitxer release-plan.yaml
El fitxer release-plan.yaml defineix quins dels tests disponibles s’han d’executar en una release concreta. Cada test del pla ha de tenir un name que coincideixi amb un test definit al bloc tests del application.yaml:
tests:
- name: 'FunctionalTests'
jira_issue_key: '<jira_issue_key>'
- name: 'RegressionTests'
jira_issue_key: '<jira_issue_key>'
# - name: 'PerformanceTests'
# jira_issue_key: '<jira_issue_key>'
# - name: 'ApiTests'
# jira_issue_key: '<jira_issue_key>'
Els tests comentats o no informats s’ometen durant l’execució. El camp jira_issue_key és opcional i sobreescriu el valor definit a application.yaml per a aquell test concret.
Per a consultar exemples complets de configuració d’ambdós fitxers, vegeu la documentació de l’Orquestrador de Releases.
Integració amb el MAT en el workflow de l’Orquestrador de Releases
La integració amb el MAT s’ha eliminat dels workflows unitaris de cada component i únicament és possible a través del workflow de l’Orquestrador de Releases (release-orchestrator-cd.yml). Per habilitar-la, la variable d’organització ORGANIZATION_ITSM ha de ser true i el fitxer release-plan.yaml ha de tenir definit almenys un test.
Els steps relacionats amb el MAT al workflow orquestrador són els següents:
| Step | Descripció |
|---|---|
| Obtain test repository names | Obté els noms dels repositoris de proves a partir del application.yaml. |
| Application Metadata Processing | Crida l’action de l’orquestrador, valida el release-plan.yaml i el application.yaml i construeix els paràmetres de cada test. |
| MAT Functional Tests - Selenium | Executa els tests funcionals amb Selenium. |
| MAT Regression Tests - Selenium | Executa els tests de regressió amb Selenium. |
| MAT API Tests - Postman | Executa els tests d’API amb Postman. |
| MAT Performance Tests - JMeter | Executa els tests de rendiment amb JMeter. |
Nota: Si es necessita executar proves del MAT per a un component concret, cal fer-ho a través d’un desplegament orquestrat, fins i tot si la release conté un únic component.
Processament dels fitxers de configuració
L’action de l’orquestrador processa els fitxers application.yaml i release-plan.yaml per obtenir els paràmetres necessaris de cada test. Concretament:
- Es validen els tests definits al
release-plan.yamlcontra els tests declarats alapplication.yaml: cadanamede test del pla ha d’existir alapplication.yaml. - Es construeixen els paràmetres necessaris per a cada tipologia de test com a variables d’entorn en format JSON (
FUNCTIONAL_TESTS_PARAMS,REGRESSION_TESTS_PARAMS, etc.), combinant la informació delapplication.yaml(URL del repositori de tests, branca, paràmetres globals) amb els valors específics delrelease-plan.yaml(com eljira_issue_keyper test). - Els tests no inclosos al
release-plan.yamlo comentats s’ometen durant l’execució.
Per als esquemes de validació del application.yaml i el release-plan.yaml, consulteu la documentació de l’Orquestrador de Releases.