Scroll Top
Via Antonio Amato, 20/22 84131 Salerno (SA)

Efficacia ed efficienza nella QA: strategie di test ibride

Quality Assurance | Software Testing

(articolo redatto da Fiore Braciglianese)

Adottare una strategia di Test Ibrida serve a migliorare l’efficacia e l’efficienza del processo di Quality Assurance (QA).

La qualità di un prodotto software dipende dalla maturità dell’organizzazione che lo produce, intesa come insieme di competenze, efficacia dei processi, dei metodi, delle tecniche e degli strumenti impiegati all’interno del ciclo di vita dello sviluppo software.

Migliorare il processo significa influenzare positivamente la qualità interna del prodotto software, la qualità esterna e, infine, la qualità in uso, cioè quella percepita dall’utente finale. Al contrario, seguendo la scala di valore in senso opposto, un valido feedback fornito dagli utenti finali, è utile per migliorare la qualità esterna del prodotto, quindi la qualità interna, e in definitiva l’efficacia e l’efficienza del processo.

Nella serie di articoli che vi proporremo, cercheremo di mostrare come applicare una combinazione di strategie di software testing per migliorare una componente significativa di un processo di sviluppo, cioè la Quality Assurance (QA).

Il miglioramento della QA, unitamente ad altre componenti, permette di ottimizzare la qualità del software e quindi quella dell’intero processo di sviluppo.

L’obiettivo preposto è fornire le linee guida per implementare una strategia ibrida di test che comprende elementi analitici, di reattività, di regressione ed automazione, da impiegare in modo flessibile e adattabile su diversi progetti.

Il contesto di riferimento

Il contesto che si vuole prendere come riferimento, è quello di una multinazionale, leader a livello globale nel settore del turismo, dove abbiamo avuto l’opportunità di maturare una significativa esperienza nel collaudo di applicativi software e di sistemi complessi implementati per supportare il business dell’organizzazione.

In tale contesto, svolgono un ruolo importante i servizi implementati per offrire soluzioni innovative ai propri clienti, fruibili attraverso piattaforme di e-commerce, sistemi di prenotazioni online, sistemi di gestione recensioni, servizi clouds, applicazioni per mobile devices e dispositivi interattivi, integrazioni con piattaforme partners e fornitori di servizi esterni, motori di ricerca avanzati, sistemi di human resource (HR), etc.

Un contesto internazionale favorisce la formazione di team multidisciplinari, composti da professionisti con competenze eterogenee, provenienti da diverse culture e con prospettive variegate sul lavoro e sulle attività quotidiane. La diversità culturale diventa un elemento distintivo che influisce sul modo in cui il team collabora e interagisce. Le differenze di background promuovono lo scambio di conoscenze, il miglioramento delle competenze individuali e collettive, stimolano l’adozione di soluzioni creative ed innovative. Questa eterogeneità contribuisce al successo dei progetti e alla crescita dell’organizzazione.

I progetti richiedono diverse figure professionali con competenze nella pianificazione, organizzazione, gestione attività, nella capacità di analisi e traduzione delle esigenze degli utenti in specifiche, progettazione architetturale, sviluppo software, collaudo, delivery, etc. Tutti concorrono alla generazione di prodotti di lavoro con elevati standard di qualità che soddisfino gli obiettivi dell’organizzazione.

Metodologia di sviluppo: agile/scrum

In un tale contesto internazionale, un processo di sviluppo software favorisce l’impiego di metodologie AGILE/SCRUM, per poter far fronte con agilità ai possibili cambiamenti organizzativi ed alle modifiche legate ai requisiti e al software durante l’intero ciclo di vita di sviluppo. Le attività si svolgono durante gli sprint (finestre temporali dalla durata di 3, 4 settimane), in cui vengono pianificate le attività da svolgere fino rilascio in produzione.

All’inizio di ogni sprint, si identificano gli elementi prioritari dal backlog di prodotto, che rappresenta l’insieme di tutti i requisiti e le funzionalità da implementare. Durante la fase di pianificazione, l’intero team collabora per determinare quali elementi del backlog devono essere completati entro fine sprint. Questa selezione viene fatta in base alle priorità, alla capacità e alle risorse disponibili. L’intero team si coordina e si impegna a completare le attività di analisi, sviluppo, collaudo nei tempi prestabiliti.

Il progress delle attività viene condiviso durante il daily meeting, stand-up giornaliero, generalmente della durata di 30 minuti. Lo scopo principale è di promuovere la comunicazione, la collaborazione e la trasparenza, condividendo informazioni sullo stato dei lavori, ed eventuali impedimenti, in maniera tale che il team possa mantenere un flusso di lavoro efficace ed efficiente. A fine sprint, vengono presentati i risultati ottenuti agli stakeholders, i quali forniscono feedback preziosi per le attività di retrospettiva identificando aspetti positivi, negativi e opportunità di miglioramento.

A livello tecnico, l’adozione di un approccio innovativo si traduce nell’utilizzo di architetture basate sui servizi. In particolare, un paradigma che favorisce l’adozione di nuove tecnologie, accelerando il time-to-market per l’introduzione di nuove funzionalità è basato sui microservizi. A differenza delle tradizionali architetture monolitiche, dove i processi sono strettamente interconnessi e gestiti come un unico servizio, i microservizi si distinguono per la loro indipendenza e la capacità di operare come servizi autonomi.

Rilasci frequenti vs Rischio regressioni

Un aspetto fondamentale del processo è l’attenzione dedicata ai feedback degli utenti, importante per garantire un costante coinvolgimento degli utilizzatori del software nel processo di sviluppo. Per quanto riguarda il processo di delivery, un approccio valido è basato sui rilasci frequenti in produzione. Tali rilasci vengono effettuati con cadenza quasi giornaliera, talvolta anche di un singolo elemento del backlog purché di priorità alta e di grande utilità per il business.

Tale strategia consente agli utenti di utilizzare il software il prima possibile e di ricevere tempestivamente il loro feedback, permettendo così al team di progetto di intervenire in modo rapido ed incisivo mitigando i rischi di qualità e promuovendo la cultura del miglioramento continuo. Ovviamente, i rilasci frequenti favoriscono, da una parte lo sviluppo incrementale del prodotto, eseguendo una serie di piccoli “incrementi” che generano un valore commerciale più significativo, dall’altro, però, aumentano il rischio di regressioni sul software esistente. Pertanto, è fondamentale adottare una strategia di Test robusta per gestire efficacemente il rischio di impatti significativi sul software in produzione.

Adozione di una strategia ibrida di test

Le attività di Quality Assurance svolgono un ruolo cruciale all’interno del processo di sviluppo software, poiché mirano a garantire l’elevata qualità del prodotto ed assicurare un’esperienza positiva agli utenti finali. Sappiamo tutti che problemi funzionali, di performance, stabilità, usabilità, possono influire negativamente sulla soddisfazione degli utilizzatori. In questo contesto, uno dei compiti principali di un Team di collaudo è quello verificare che il software sia aderente alle specifiche, e ciò richiede un’attenta attività di analisi e comprensione dei requisiti funzionali e non funzionali, al fine di progettare gli scenari di test più rilevanti ed ottenere la massima copertura dei requirements.

Per questo la figura del Test Manager (TM) riveste un ruolo di fondamentale importanza nella pianificazione e nella gestione delle attività, nonché nella definizione della strategia di test più adeguata al raggiungimento degli obiettivi di progetto. Nei progetti complessi, una strategia ibrida permette di impiegare le risorse in modo efficiente, garantendo il raggiungimento degli obiettivi, ottimizzando i tempi e i costi, senza compromettere la qualità del prodotto finale.

Una strategia dei test ibrida può combinare diversi elementi delle diverse strategie:

  • Analitica
  • Reattiva
  • Regressione.

Conclusioni

Un progetto di sviluppo software presenta una serie di sfide che richiedono la gestione attenta di attività strategiche per potersi adattare rapidamente alle esigenze di un mercato in continua evoluzione.

L’adozione di strategie che combinano approcci diversi alle attività di quality assurance può rappresentare un modo per migliorare l’efficacia e l’efficienza di un processo di sviluppo software. Tali strategie riflettono la natura mutevole dei processi operativi moderni, dove l’equilibrio tra analisi, reattività e continuità riveste un ruolo chiave nel garantire la riuscita di progetti complessi. Cercheremo di analizzare in modo dettagliato i vantaggi, i fattori di successo, i rischi di ciascuna strategia adottata in questo approccio ibrido, evidenziando gli impatti sulle attività di collaudo. Forniremo una panoramica su come massimizzare l’efficacia di ciascuna strategia per ottenere risultati ottimali.

Continuate a seguirci per scoprire come queste strategie possono essere adattate alle esigenze specifiche di altri progetti e come possono contribuire a garantire una qualità maggiore del software.


Se anche tu vuoi occuparti di progetti di Software Testing
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!