Test di qualità per le Applicazioni iOS
Quando si parla di test e di software, in particolar modo nell’ambiente Mobile, ma soprattutto nell’ambiente iOS, si fa riferimento solo agli Unit Test e ancor di più alla loro automatizzazione.
Questi test sono fondamentali, nonché molto utili, perché permettono di avere un processo di sviluppo lineare e ben documentato ma personalmente sono dell’avviso che dovrebbero essere affiancati da un test di qualità di tipo manuale dell’intero software.
Sono consapevole del fatto che testare qualcosa manualmente è noioso e porta via molto tempo. Per uno sviluppatore è decisamente più comodo scrivere Unit Test e lanciare il processo di testing automatizzato attendendo il risultato in tempi brevi, ma testare il codice e la sua stabilità non è sinonimo di qualità. Così come testare la UI in modo automatico non garantisce la certezza di aver sviluppato un prodotto di qualità né una buona applicazione.
L’unico modo per assicurarsi che un prodotto raggiunga davvero un elevato stato di qualità è quello di eseguire dei test specifici, che sono noti come QA Test.
Nei miei “quasi 10 anni” (App Store è nato nel 2008, devo attendere ancora un anno prima di poter parlare di 10 anni 😉 ) di sviluppo iOS ho fatto abbastanza esperienza da poter creare un metodo di lavoro concreto dove al suo interno fanno parte anche i QA Test.
Se anche tu sei uno sviluppatore iOS e lavori per molti clienti dovresti adottare questo genere di test all’interno del tuo processo di lavoro.
QA Test all’interno del processo di lavorazione
Per prima cosa durante la fase di analisi funzionale, cioè quella parte in cui si definiscono tutte le funzionalità dell’applicazione, si devono selezionare le funzionalità chiave che determinano la qualità del prodotto.
Successivamente, quando si è terminata l’analisi della UI/UX e la sua realizzazione, si devono determinare i corretti comportamenti per quelle funzionalità chiave.
Infine, occorre redarre il documento di Test di qualità. Si tratta di un documento con la lista dei test da effettuare per ogni funzionalità chiave e il loro comportamento. Questa lista deve comprendere gli step necessari per testare il punto descritto e il risultato atteso.
Ad esempio, nell’applicazione di controllo della guida che ho realizzato poco tempo fa, c’è una funzionalità di attivazione/disattivazione del tracciamento automatico. Tale funzionalità può essere eseguita in momenti differenti, come durante la guida o durante la mancata connessione alla rete.
Per questa funzionalità sono stati scritti dei test di questo genere:
Passi da eseguire
- Avviare l’applicazione
- Selezionare il tracking manuale
- Iniziare un viaggio in auto
- Premere il pulsante di avvio manuale
- Dopo qualche chilometro premere il pulsante di stop manuale
Risultato atteso
L’applicazione non deve avviare il tracking automaticamente quando si inizia un viaggio in auto se è stato selezionato il tracking manuale.
Premendo l’avvio manuale deve riconoscere il movimento dell’auto ed avviare il tracking.
Il pannello di tracking deve lampeggiare per tutto il tempo del tracciamento e smettere di lampeggiare a tracciamento finito.
In caso di mancata connessione della rete durante l’attivazione del tracking la UI deve mostrare un avviso all’utente.
L’esempio riportato è solo uno dei tantissimi test effettuati sull’applicazione.
Ora probabilmente vi starete chiedendo: “Non basterebbe testare il funzionamento del codice? Non basterebbe testare il funzionamento della UI?”
La risposta è NO. Testare il funzionamento del codice è fondamentale, ma ricordiamoci sempre che l’applicazione viene usata da persone in carne ed ossa.
Tanti sono i motivi per cui i test di qualità sono importanti, ma qui di seguito vi elenco quelli che a mio parere sono i più importanti:
- L’applicazione viene usata da persone reali, le quali possono fare quel che vogliono con l’app, come premere i pulsanti in un modo in cui il programmatore non ha mai pensato. Per questo è fondamentale dare l’applicazione in mano a persone fisiche e capire se davvero funziona.
- Ci sono molti comportamenti nascosti e ripetitivi in ogni tipo di applicazione che possono sfuggire e devono essere testati manualmente. Ad esempio lo sapete che la Status Bar di iOS cambia dimensione durante una chiamata? Sicuramente, ma avete notato cosa succede alla UI? A Facebook per esempio è sfuggito per molto tempo.
Oppure, avete presente cosa accade quando ruotate il device? La vostra applicazione supporta l’orientamento landscape? E la UI è sempre fruibile? E la Status Bar? Deve esserci oppure no? - L’applicazione deve funzionare sulla base di come è stata pensata e, nel caso di progetto per terzi, deve rispecchiare ciò che il cliente desidera. Deve cioè seguire le linee guida e i documenti di specifiche. Per assicurarsi tale conformità è necessario un intervento umano e un documento che ne certifichi il lavoro svolto.
- I test ci permettono di capire come stiamo lavorando, sia quelli automatici che quelli manuali e sono dati importanti per noi sviluppatori. Ci dicono, infatti, se stiamo incrementando o diminuendo i problemi nel prodotto. E i test QA ci permettono di sapere quando l’applicazione del nostro cliente può essere consegnata.
Proprio per la necessità di gestire in modo efficace e snello tutti questi test, qualche anno fa ho deciso di sviluppare un tool che mi permettesse di fare tutto questo con uno sforzo minimo.

È nato quindi Buildtest, un tool online per la gestione dei test QA che mi permette di:
- Aggiungere le applicazioni alla mia lista di prodotti
- Per ogni applicazione creare una versione specifica
- Per ogni versione creare una lista di test QA da eseguire
- Invitare i miei testers
- Ricevere un report dettagliato sui risultati dei test
Ogni tester ha la sua lista di task da eseguire e man mano che avanza con i test compila il report che, una volta concluso, ricevo direttamente nel tool con il resoconto dei test effettuati e del loro esito.
Grazie a Buildtest ho ottimizzato tutto il processo di testing manuale e ho la possibilità di avere uno spaccato esauriente di quello che accade con le applicazioni dei miei clienti. Inoltre posso assicurare loro l’ottima riuscita del prodotto.
Buildtest è gratuito e potete utilizzarlo anche voi per i vostri progetti andando su http://www.buildtest.net.
Come si può capire, ho un grandissimo interesse nei confronti della questione dei test e sono davvero molto curioso di conoscere il vostro metodo di lavoro.
Spero di poter condividere ancora con voi le mie esperienze su questo argomento.
