Test funzionali: nuove sfide da superare

È tempo di trasformare il modo di affrontare i test funzionali considerando modalità operative automatizzate che accelerino il processo e consentano il test unificato delle funzionalità applicative end-to-end. Il tutto, per rispondere a un business che non può più attendere i tempi delle “vecchie procedure” di rilascio delle applicazioni

Pubblicato il 22 Apr 2013

I team di sviluppo software e controllo qualità che si occupano di applicazioni aziendali hanno di fronte un mondo che cambia a una velocità inimmaginabile solo fino a pochi anni fa. Le aziende non possono più permettersi di aspettare i tempi lunghi dei “vecchi” progetti di sviluppo che potevano richiedere anche qualche anno di attività di developing e lunghe fasi di test in back-end da effettuare prima che l'applicazione fosse messa in produzione. Oggi le aziende, per rimanere competitive all’interno di un mercato dinamico e sempre più “technology intensive”, hanno necessità di un supporto concreto da parte delle applicazioni software; supporto che, in molti casi, significa addirittura abilitazione di nuovi modelli di business (basati sul software, sul social web, sulle app mobili, ecc.) il cui time-to-market è determinante non solo per la competitività ma anche per la sopravvivenza stessa dell’organizzazione.

Questo scenario pone i team che si occupano dello sviluppo applicativo in una condizione di forti pressioni: è chiesto loro di accelerare i cicli di sviluppo software senza però compromettere la qualità o l'esperienza dell'utente finale, “errori” che oggi potrebbero mettere a serio rischio il business dell’azienda.

Per poter favorire continuamente nuove funzionalità software in grado di portare una differenziazione competitiva, i team applicativi devono perciò aumentare il ritmo dei processi di innovazione (innovazione tecnologica che diventa sempre più innovazione di business). Non solo: se pensiamo ai trend quali cloud e mobility e alla sempre maggiore complessità degli ambienti applicativi, risulta evidente che le sfide da affrontare per lo sviluppo delle applicazioni diventano sempre più numerose e critiche.

Gli analisti, per esempio, hanno già previsto che nel giro di pochi anni le vendite dei tablet supereranno quelle dei Pc e la maggior parte degli utenti (negli Stati Uniti) accederà a Internet da device mobili piuttosto che da Pc o da altri dispositivi wireline (ossia cablati). Questo rapido passaggio da parte di consumatori e aziende verso le applicazioni mobili porta con sé notevoli implicazioni per i team addetti ai test funzionali. Le applicazioni mobili, infatti, comportano tutte le complicazioni di test di quelle composite, ma hanno, in più, requisiti di interfaccia utente propri, flussi di processi particolari e dipendenze specifiche rispetto all'infrastruttura del tutto differenti rispetto alle applicazioni tradizionali. E se guardiamo al mondo delle business application, già oggi notiamo che queste saranno dotate sempre più di estensioni mobili che consentiranno ai dipendenti di lavorare in maniera più produttiva.

Volendo tracciare uno scenario della complessità applicativa, poi, è evidente già oggi che le applicazioni non sono più contenute in silos. Non c'è nulla che funzioni in isolamento, tutto è connesso. Le applicazioni di e-commerce, per fare un esempio, comprendono procedure per gli acquisti online, la raccolta dei dati degli utenti, la verifica delle carte bancarie, le opzioni di consegna e le conferme di transazione inviate tramite e-mail.

In questo scenario, come si può testare un sistema complesso che non è del tutto indipendente? Quali componenti di un'applicazione composita non sono disponibili per i test? Come è possibile convalidare l'integrazione di un front-end mobile con i servizi e le applicazioni back-end?

Per verificare la funzionalità di un'applicazione ibrida, gli sviluppatori software e i team di controllo della qualità devono testare sia le singole parti dell’applicazione, sia l'insieme:

• devono testare i singoli componenti di un'applicazione composita e la loro capacità di eseguire correttamente le proprie funzioni.

• devono testare l'intero scenario applicativo considerando centinaia di variabili differenti (e le domande sono numerose: sono emersi i dati corretti dal database?, L'applicazione funziona su determinati telefoni? E così via)

Come superare le sfide

A causa della loro complessità, mantenere per le odierne applicazioni ibride gli stessi standard di qualità delle applicazioni aziendali convenzionali rappresenta un sfida. Oltre alla complessità delle applicazioni, gli strumenti e le procedure di testing funzionale “tradizionali” non sono in grado di superare nemmeno le sfide del time-to-market richiesto dal business e della diffusione delle tecnologie mobili (che rappresentano, oggi, le sfide principali da affrontare).

Una delle vie possibili per superare tali criticità è intervenire sulla trasformazione dei metodi e delle procedure utili ad affrontare i test funzionali. Per rendere disponibili in tempi rapidi nuove e più efficaci applicazioni senza sacrificare la qualità o l'innovazione, le aziende potrebbero, infatti, implementare funzionalità automatizzate avanzate in grado di ottimizzare e accelerare il processo dei test funzionali.

Questo però significa rimettere in discussione le pratiche consolidate. In particolare, andrebbero ripensate alcune procedure e si dovrebbe intervenire in ambiti quali:

1) i cicli di vita cosiddetti “a cascata”, in cui si realizza interamente un prodotto e si esegue il test solo alla fine del processo di sviluppo, prima della messa in produzione dell’applicazione;

2) la manutenzione per le risorse di test, come gli script di automazione, la documentazione e i dati (spesso disorganizzata ed inefficiente sul piano dei costi);

3) le inefficienze riconosciute legate ai test manuali (che spesso risultano lenti e con un elevato rischio di errore);

4) l’eventuale “duplicazione” dello sforzo tra i vari team addetti ai test (e persino all'interno di un unico team che, spesso, svolge i medesimi test in modo disorganizzato e non strutturato);

5) l'incapacità di molte organizzazioni di testare trasformazioni complete di configurazioni di sistema Gui (sistema operativo ad interfaccia grafica) e configurazioni mobili;

6) l'utilizzo di strumenti eterogenei all'interno dell'azienda, con una conseguente mancanza di risorse condivise, costi di formazione più elevati e impossibilità di sfruttare gli investimenti tecnologici al meglio.

Automazione e unificazione dei test: due risposte concrete

Per accelerare il time-to-market senza compromettere la qualità delle applicazioni, i team addetti ai test funzionali dovrebbero, in sostanza, trovare nuove vie per rilasciare in produzione più velocemente un “codice testato”, ossia accelerare il rilascio applicativo introducendo i test funzionali già all’interno dei cicli di sviluppo. E per riuscire a fare ciò, due risposte concrete arrivano dall’automazione e dall’unificazione dei test funzionali, peraltro suggeriti anche da approcci metodologici riconosciuti universalmente come la metodologia Agile.

Per rispondere agli obiettivi di qualità e time-to-market, le aziende dovrebbero, infatti, investire in metodologie, strumenti e formazione su test funzionali automatizzati per consentire una più rapida esecuzione dei test e dare risposte più veloci alle mutevoli esigenze del business.

I test Agile non possono essere eseguiti senza l'automazione. L'automazione è un requisito necessario per garantire una corretta copertura dei test sugli ambienti e sulle tecnologie, sia del codice legacy sia della funzionalità di nuovi software. Per esempio, è possibile automatizzare le attività più delicate associate alla creazione di casi di test e ai test manuali, integrando le funzionalità di authoring dei test nei propri processi, oltre a scanner che rilevano problemi legati a errori di ortografia, localizzazione e conformità, il tutto in modo automatizzato, appunto. L’automazione rappresenta un risposta da non sottovalutare anche per accelerare i lunghi processi di test manuali integrando strumenti che consentano agli sviluppatori di convertire i passaggi dei test manuali, in script automatizzati che possono essere riutilizzati da tutti i componenti del team (evitando quindi anche la ripetizione inutile dei test da parte di più team).

Per portare l'automazione a un livello superiore, infatti, l’ottimale sarebbe investire in framework di test che massimizzino il riutilizzo delle risorse e accelerino la manutenzione e l'authoring dei test (i framework consentono di segmentare i processi in componenti funzionali che possono essere utilizzati da altri test: una modifica nell’applicazione può essere ripetuta una sola volta nel componente riutilizzabile, quindi applicata automaticamente a tutti i test che utilizzano tale componente nel framework).

Un ulteriore livello di efficientamento dei processi di sviluppo e rilascio delle applicazioni si raggiunge con l'approccio unificato ai test funzionali che non solo consente di automatizzare i test funzionali delle applicazioni, ma addirittura di anticiparli all'interno del ciclo di sviluppo del software consentendo così di individuare i difetti non appena vengono introdotti.

Sul piano tecnologico, l’approccio unificato ai test funzionali colloca l'assistenza all'automazione dei test per le interfacce utente grafiche (Gui) e le interfacce di programmazione delle applicazioni (Api) all'interno di un'unica interfaccia integrata. Il test del livello Gui implica la convalida funzionale tradizionale, ma anche i test di molteplici interfacce mobili e tecnologie di social media intelligenti. Il test del livello Api, invece, consente di sfruttare l'automazione sin dall'inizio per individuare i bug dell’applicazione il prima possibile. L'unione dei test di Gui e Api, di fatto, permette di creare una vera e propria convalida end-to-end dell'esperienza dell'utente. Tale soluzione rappresenta un nuovo modo per individuare i problemi che non sarebbe possibile rilevare testando Gui e Api separatamente.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4