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

Implementare un Proof of Concept (PoC) per la Test Automation

proof-of-concept_test_automation_2

(articolo redatto da Fiore Braciglianese)

Quarto appuntamento di approfondimento dedicato al software testing.

Dopo aver parlato di Efficacia ed efficienza nella Quality Assurance: strategie di test ibride, di come Gestire il Rischio di Regressioni in un Processo di Quality Assurance (QA) e delle Linee guida essenziali per lo sviluppo di un progetto di TEST AUTOMATION, in questo articolo vogliamo descrivere come sia possibile implementare un Proof of Content (PoC) per il dimensionamento di una infrastruttura di Test Automation (TA), utilizzata per mitigare il rischio di regressioni durante i rilasci in produzione di applicazioni complesse.

Indice dei contenuti

Introduzione

Nei contesti dinamici, dove le modifiche al software sono molto frequenti e i rilasci in produzione avvengono in modo rapido e continuo, è di cruciale importanza adottare strategie per ridurre i tempi richiesti dal collaudo software durante la verifica dei test di copertura.

In tali contesti l’automazione è un valido strumento per affrontare con agilità le sfide delle moderne metodologie di sviluppo per poter far fronte alla rapidità delle iterazioni richieste nella costruzione di un prodotto software.

I processi di automazione rivestono un ruolo strategico nella Quality Assurance (QA), riducendo gli errori umani nella fase di collaudo e contribuendo a mitigare il rischio di regressioni in produzione. Generalmente, è richiesto uno sforzo iniziale prima di poter massimizzare i benefici nel medio e lungo termine. L’automazione, molto spesso, a causa di pregiudizi comuni in molte organizzazioni, è poco accettata dai membri di un team, i quali, per paura di perdere il proprio lavoro, preferiscono non adottarla e di sostituirla con processi manuali.

Oggi, la sfida sta nel sensibilizzare le organizzazioni sui vantaggi dell’automazione dimostrando che essa non sostituisce il testing manuale, ma si integra nel processo di collaudo. Inoltre, tale strategia va implementata in maniera opportuna per poter massimizzare i risultati appieno nel più breve tempo possibile.

Un Proof of Concept (PoC), in generale, si rivela uno strumento efficace per verificare la fattibilità di un progetto. Permette di creare un prototipo in modo rapido prima di impiegare risorse consistenti per lo sviluppo completo.

Key Points: Sviluppo di un PoC per un progetto di Test Automation

Basandoci sull’esperienza maturata negli anni nello sviluppo di progetti pilota, vogliamo suggerire alcuni punti chiave da tenere in considerazione nella realizzazione di un Prof of Concept (PoC) di un progetto di Test Automation.

In particolare:

Definizione degli Obiettivi: Definire gli obiettivi in modo chiaro e preciso rappresenta una necessità cruciale. È fondamentale perseguire tali obiettivi con determinazione e valutarli attraverso metriche che misurano i risultati in maniera quantitativa:

  • Copertura dei Test: Numero di casi di test automatizzati rispetto al totale;
  • Efficienza dei Test: Tempo risparmiato nell’esecuzione rispetto al testing manuale;
  • Risparmio Risorse: Risorse liberate dall’attività ed allocate su attività più critiche;
  • Correzione Difetti: Numero di difetti intercettati e corretti prima del rilascio;
  • Costi e Benefici: Confronto tra i costi associati al PoC ed i benefici ottenuti.

Analisi dei requisiti: L’analisi dei requisiti consente di identificare le funzionalità da testare e quindi un insieme di casi di test da automatizzare. È importante definire la complessità di ciascun test case. Un elemento di complessità può essere rappresentato dall’integrazione dell’applicazione con altri servizi esterni, oppure dall’utilizzo del meccanismo di STRONG authentication con il recupero del token di autenticazione, oppure dalla complessità della struttura del DOM e degli elementi/attributi presenti nelle pagine HTML.

La suddivisione dei test in termini di complessità permette di avere una visione chiara delle risorse da impiegare.

Riportiamo nella seguente tabella il caso in cui bisogna automatizzare 100 test case, per i quali sono stati individuati diversi livelli di complessità: LOW, MEDIUM, HIGH. In generale, tale suddivisione aiuta ad effettuare un piano dettagliato di attività.

PROJECT TEST AUTOMATION

TEST CASES

LEVEL OF COMPLEXITY

LOWMEDHIGH
TARGET100353530

Pianificazione delle Attività: La definizione di un piano dettagliato di attività da svolgere può includere le risorse necessarie, il coinvolgimento delle parti interessate (tester developers, analisti, sviluppatori software), le tempistiche e le milestone da traguardare. Nella seguente tabella, è riportato il numero di script per WAVES (es, il numero di test da implementare su base mensile), suddivisi per livello di complessità:

TEST SCRIPT DEVELOPMENT PLAN
TOTALLEVEL OF COMPLEXITY
LOWMEDHIGH
WAVE 110352
WAVE 23012108
WAVE 360202020

Selezione degli Strumenti: Strumenti e tecnologie vanno individuate sulla base delle esigenze del progetto: il framework di automazione, il linguaggio di scripting, gli ambienti di sviluppo, le piattaforme di runtime, l’integrazione con sistemi esterni di analisi, monitoring and defect management. Una dashboard offre il vantaggio di fornire agli stakeholders una panoramica istantanea delle informazioni chiave relative a un processo o un progetto. Consente agli utenti di avere una visione completa e rapida delle metriche, dei dati e dello stato delle attività.

Riportiamo di seguito una dashboard generata da un sistema di test management.

dashboard - sistema di test management

Sviluppo del Prototipo: Lo sviluppo del prototipo permette di dimostrare non solo la fattibilità tecnica del progetto, la disponibilità di risorse, le tecnologie e gli strumenti per traguardare gli obiettivi preposti, ma fornisce anche indicazioni importanti sulla pianificazione strategica e la roadmap per lo sviluppo completo del progetto.

La fase di sviluppo del prototipo offre l’opportunità ai team coinvolti di comprendere il grado di comunicazione da instaurare, creando le basi per una collaborazione efficace. Consente inoltre al team di sviluppo di capire come scrivere codice maggiormente testabile di modo che il collaudo possa implementare script efficaci per le attività di testing. Tutto questo, al fine di dimostrare che l’automazione è una soluzione valida e vantaggiosa e può contribuire a creare valore all’organizzazione migliorando la qualità del software. Se il prototipo riesce a dimostrare questo, può giustificare ulteriori investimenti nello sviluppo di soluzioni complete.

Collaudo e Valutazione: Un progetto di Test Automation condivide molti degli aspetti di un progetto di Sviluppo Software, e pertanto è soggetto anche a test di verifica. Questa fase è decisiva per dimostrare la fattibilità del progetto e se è in grado di raggiungere gli obiettivi prefissati. Durante questa fase, vengono eseguiti gli script creati per testare l’applicazione, ed il processo è attentamente monitorato.

Di seguito riportiamo una dashboard che mostra a runtime i risultati dell’esecuzione di una suite di circa 1000 test automatici:

dashboard - sistema di test management

In caso di anomalie o problemi, è fondamentale condurre un’analisi dettagliata dei risultati al fine di determinare se si tratta di un difetto dell’applicazione, che richiede l’intervento del team di sviluppo, oppure se l’origine del problema risiede nello script stesso, richiedendo quindi un intervento da parte del team di test per la sua correzione.

Il Ruolo Chiave della Formazione nello sviluppo di una Test Automation

Le competenze svolgono un ruolo essenziale nella realizzazione di un progetto di Test Automation. L’evoluzione tecnologica, in costante crescita, richiede che un Tester Developer possegga una base solida di conoscenze di sviluppo. L’acquisizione di tali conoscenze può essere agevolata da percorsi di formazione svolti da esperti del settore, e come tale possono rappresentare un’inestimabile fonte di apprendimento.

Ecco 3 caratteristiche di un Tester Developer che aiutano a implementare test efficaci:

  1. Competenze tecniche: Per sviluppare script di test automatici efficaci ed efficienti, sono essenziali solide competenze tecniche. Queste comprendono la conoscenza approfondita di linguaggi di programmazione, strumenti, framework e dei principi fondamentali di ingegneria del software.
  2. Conoscenze di dominio: Le conoscenze del dominio applicativo sono importanti per comprendere ed implementare al meglio le funzionalità da testare. Contribuiscono a individuare e risolvere problemi migliorando l’efficacia dei test in funzione delle aspettative degli utenti finali.
  3. Capacità di problem-solving: Il processo di automazione dei test richiede spesso la capacità di identificare rapidamente soluzioni a problemi che possono sorgere durante la fase di sviluppo. Pertanto, è fondamentale possedere spiccate abilità di problem-solving per affrontare scenari imprevisti e trovare soluzioni efficaci.

In sintesi, un Tester Developer dovrebbe avere una solida base di conoscenze tecniche e di caratteristiche come la capacità di risolvere problemi e l’abilità di automatizzare scenari utente. La formazione gioca un ruolo chiave nel perfezionamento di tali abilità.

Conclusioni

Nel contesto dell’evoluzione costante del panorama tecnologico, un progetto di Test Automation ha assunto un ruolo centrale nel garantire la qualità del software. Tuttavia, l’implementazione di un tale progetto non dovrebbe essere vista solo come un processo tecnico; piuttosto, dovrebbe essere considerata un’opportunità per adottare un approccio strategico e mirato.

In questo articolo abbiamo avuto modo di capire come un Proof of Concept (PoC) si possa configurare come strumento potente in questo percorso, costituendo una tappa cruciale nella pianificazione e nell’attuazione di un progetto di successo, aprendo la strada a un testing più efficiente ed efficace e contribuendo a garantire il valore del software prodotto.


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

Questo sito utilizza cookies propri e si riserva di utilizzare anche cookie di terze parti per garantire la funzionalità del sito e per tenere conto delle scelte di navigazione.
Per maggiori dettagli e sapere come negare il consenso a tutti o ad alcuni cookie è possibile consultare la Cookie Policy.

USO DEI COOKIE

Se abiliti i cookie nella tabella sottostante, ci autorizzi a memorizzare i tuoi comportamenti di utilizzo sul nostro sito web. Questo ci consente di migliorare il nostro sito web e di personalizzare le pubblicità. Se non abiliti i cookie, noi utilizzeremo solo cookies di sessione per migliorare la facilità di utilizzo.

Cookie tecnicinon richiedono il consenso, perciò vengono installati automaticamente a seguito dell’accesso al Sito.

Cookie di statisticaVengono utilizzati da terze parti, anche in forma disaggregata, per la gestione di statistiche

Cookie di social networkVengono utilizzati per la condivisione di contenuti sui social network.

Cookie di profilazione pubblicitariaVengono utilizzati per erogare pubblicità basata sugli interessi manifestati attraverso la navigazione in internet.

AltriCookie di terze parti da altri servizi di terze parti che non sono cookie di statistica, social media o pubblicitari.