Cosa e come testare un’applicazione mobile nel testing software

Cosa e come testare un’applicazione mobile nel testing software

Testing di un’app mobile

Nell’ambito del testing software, non è possibile suddividere in compartimenti stagni gli obiettivi del testing di un’applicazione (app), sia essa desktop o mobile, tuttavia è possibile individuare una serie di macroaree sulle quali focalizzare l’effort, tenendo comunque presente che ci saranno sovrapposizioni e che i malfunzionamenti rilevati potrebbero spesso essere interdipendenti.

Per offrire una panoramica numerica di quanto detto si riporta il seguente passo del World Quality Report.

Il testing sta diventando sempre più importante in quanto i consumatori si aspettano una user experience coerente nell’utilizzo di applicazioni multi-canale e di dispositivi in un mondo “always-on”. La ricerca mostra che la sicurezza (59%) e le prestazioni (57% – in Italia il 63%) sono le aree principali per la migrazione delle applicazioni su Cloud e che la sicurezza rimane un fattore cruciale nel testing di applicazioni mobili (54%). Tuttavia si riscontra ancora una problematica nel mobile testing in quanto quattro intervistati su dieci hanno dichiarato di non avere abbastanza tempo per testare adeguatamente le loro soluzioni mobile.“.

Cosa e come testare un'applicazione mobile nel testing software

Comportamento funzionale

Questo tipo di testing spazia da quello più tradizionale, finalizzato a verificare che l’applicazione funzioni come da requisiti e che sia possibile portare a termine i casi d’uso senza intralci. Molte mobile app si comportano come client nei confronti di web service o servizi REST disponibili online. In questo caso bisogna dedicare una parte importante del testing a scenari in cui il server è offline, impiega troppo tempo a rispondere o restituisce risposte inattese o malformate. Cosa succederebbe se improvvisamente il device perdesse il collegamento a Internet.

Nel caso si utilizzino librerie ed API è importante verificare l’interazione con esse prevedendo un’apposita fase di API testing.

Usabilità e GUI

La parte più esposta di un’applicazione mobile è senza dubbio l’interfaccia. Una grafica accattivante ed user friendly può essere la chiave del successo rispetto ad i concorrenti.

Durante il testing bisogna verificare che ogni schermata sia come ci si aspetta, sia in modalità landscape che portrait, bisogna validare il flusso di navigazione assicurandosi che sia facile navigare tra le schermate e che i dati vengano preservati passando dall’una all’altra. Ad ogni passo i widget (button, text inputs, labels) previsti devono essere visualizzati e correttamente popolati o validati. Ad esempio bisogna verificare la comparsa di un dialog box di errore all’inserimento di un input errato.

Tuttavia la GUI è la parte dell’applicazione che risente maggiormente dei cambiamenti tra device e device. Parametri come la dimensione in pixel dello schermo, la densità ed il form factor possono condizionare seriamente la qualità del rendering.

A tal scopo l’automazione fornisce un grosso aiuto per eseguire i test sul maggior numero di dispositivi, reali o emulati.

Performance e Memoria

L’analisi delle prestazioni e del consumo di risorse è forse è l’aspetto più trascurato dagli sviluppatori meno esperti. Su dispositivi che spesso hanno capacità di calcolo e memoria limitati una disattenzione in fase di sviluppo può constare preziosi cicli di CPU durante l’esecuzione o un ridondante traffico di dati in rete (spesso limitato dagli operatori o dalle offerte attive sul dispositivo).

La complessità computazionale del software condiziona negativamente non solo le prestazioni generali dell’applicazione e dell’intero device ma aumenta anche drasticamente il consumo di batteria.

L’utente scontento tende a disinstallare l’applicazione poco reattiva o troppo dispendiosa.

Ecco perché un’importante fase del ciclo di sviluppo è costituita dai performance e stress test, in grado di individuare eventuali memory leak, malfunzionamenti dovuti al sovraccarico di richieste e all’eventuale mancato rilascio delle risorse acquisite (ad esempio: GPS, fotocamera, microfono).

Anche i tool di diagnostica nativi presenti su ciasun sistema operativo possono rivelarsi utili per capire se l’applicazione subisce rallentamenti o ha un picco nella richiesta di risorse.

Altri metodi empirici per rilevare problemi prestazionali potrebbero essere :

  • Surriscaldamento del device: se il device si riscalda molto probabilmente la CPU è sotto stress;
  • Rapido consumo della batteria: anche questo potrebbe essere sintomo di un codice poco efficiente o di operazioni ridondanti;
  • Rallentamento dell’applicazione.
  • Operational testing

Questa fase verifica che siano messi in atto tutti i controlli necessari affinché l’applicazione prosegua il proprio funzionamento anche in caso di eventi inattesi, occupandosi del backup delle informazioni necessarie e di implementare strategie di recovery per ripristinare la situazione in caso di arresto inatteso. Anche l’upgrade dell’applicazione è un momento critico durante il quale è possibile la perdita dei dati utente se non correttamente gestita.

Tra i più comuni eventi che potrebbero disturbare il comune svolgimento delle funzionalità ricordiamo:

  • ricezione chiamate, SMS, MMS
  • notifiche da parte di sensori o altre applicazioni
  • plug-in e rimozione di cavi USB ed auricolari
  • Interruzione della connessione
  • Media Player on/off
  • Device Power cycle

Installazione

Il software mobile può essere venduto attraverso i canali di distribuzione predisposti da ciascuna piattaforma o semplicemente distribuito standalone in formato eseguibile. In entrambi i casi una fase cruciale per l’accettazione da parte del cliente è quella di installazione.

L’installation testing verifica che il processo di installazione vada avanti senza che l’utente incontri alcuna difficoltà e che tutte le strutture dati e l’eventuale porzione di filesystem necessarie siano allocati senza problemi.

Naturalmente questa fase di testing include anche il processo di upgrade nel caso di ulteriori release e quello di disinstallazione.

Localizzazione

La localizzazione consiste nel modificare un’applicazione esistente per l’utilizzo in un’area geografica specifica . Tipicamente ciò include la traduzione di ogni testo nella lingua locale con un conseguente cambio di charset, cambio di valuta, formato delle date e tanti altri aspetti che richiedono opportune conversioni. In casi limite è addirittura necessaria l’inversione delle direzione del testo.

La localizzazione è dunque un’operazione complessa ma può rivelarsi fondamentale per vendere il prodotto in altre nazioni. Gli utenti privati, in media, preferiscono installare un prodotto che utilizzi la loro lingua mentre le aziende necessitano di applicazioni che supportino le valute e le date locali.

Sicurezza

Le applicazioni che scambiano dati sensibili in rete devono garantire la privacy utilizzando meccanismi di crittografia ed autenticazione (HMAC-SHA).

Bisogna inoltre considerare eventuali vulnerabilità e punti di accesso attraverso i quali potrebbero essere inviate informazioni maliziose. Per sviluppare in modo sicuro è necessario tenere sempre in mente che in rete non esistono fiducia e buona fede e che non è sufficiente affidarsi ai protocolli di base.

Oltre alla sicurezza in rete è necessario considerare anche quella sul filesystem, bisogna intercettare e impedire l’accesso ai dati ad altre applicazioni o ad altri utenti nel caso di applicazioni multiutente. Spesso questo è già garantito dalle API ma bisogna assicurare all’utente la massima privacy.

Un ultimo punto di vulnerabilità, come in tutte le applicazioni, sono gli input dell’utente che devono sempre essere appropriatamente validati.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *