L’automazione dei test UI su iOS è diventata facile come scrivere test unitari da quando Apple ha introdotto il framework XCUI. In questo post, parlerò di come XCUI, insieme al design a strati, può aiutare ad automatizzare facilmente le applicazioni, specialmente quelle con più elementi UI personalizzati. Una di queste applicazioni in cui abbiamo usato ampiamente questo sistema è VMware Boxer, un’applicazione aziendale di VMware che aggrega tre importanti funzioni: e-mail, calendario e contatti. VMware Boxer usa diversi tipi di elementi UI, dalla UITableView nativa a elementi visivi altamente personalizzati.
Si presume che i lettori abbiano una conoscenza di base di Xcode, Objective C, Swift, il framework XCUI e l’ecosistema di sviluppo Apple in generale. Se siete nuovi di XCUI, dovreste iniziare da qui.
Come ogni altro progetto di automazione UI, il nostro team ha iniziato con una domanda su quale framework di automazione usare. Avevamo usato SeeTest. Tuttavia, abbiamo visto questa come un’opportunità per rivedere la nostra strategia di automazione data la nuova e complessa funzionalità aggiunta in VMware Boxer, il numero di prodotti nell’ecosistema VMware e i test di integrazione tra questi prodotti. Di seguito le scelte che abbiamo considerato-
1. Continuare con SeeTest
2. Earl Grey
3. XCUI
Mentre SeeTest aveva la capacità di gestire le nostre esigenze immediate di automazione, c’era una sfida indipendente da affrontare. Ci richiedeva di adottare un nuovo stack tecnologico. Ciò avrebbe richiesto una formazione aggiuntiva per gli sviluppatori iOS ed esperti dedicati alla manutenzione del sistema di automazione.
E Appium? Non abbiamo considerato Appium per le stesse ragioni menzionate sopra per SeeTest. Appium è una buona scelta se avessimo app ibride o codice condiviso significativo tra Android e iOS.
Earl Grey 1 era una possibile scelta, dato che ci permetteva di rimanere in Xcode e negli strumenti di sviluppo Apple ed era basato su XCTest. L’automazione Earl Grey 1, tuttavia, viene eseguita nello stesso processo dell’applicazione sotto test. D’altra parte, l’automazione basata sul framework XCUI di Apple viene eseguita in un processo separato dall’applicazione sotto test. Questo è preferito poiché l’applicazione sotto test non dovrebbe essere altro che una scatola nera per l’entità (un processo di automazione o un utente finale) che sta testando la sua UI.
Avere il processo di automazione (quello che sta testando) isolato dall’effettiva applicazione sotto test. L’applicazione sotto test non dovrebbe essere altro che una scatola nera per il processo di automazione.
Ogni nuovo strumento nell’ecosistema Apple che non è allineato con l’approccio di Apple (ad esempio Earl Grey 1) può fallire senza preavviso. Un tale approccio può richiedere un grande sforzo di manutenzione per continuare a lavorare con offerte più recenti o future di Apple.
Early Grey 2 ha aggiunto la capacità di interagire con XCUI. Era un tentativo di allinearsi con XCUI ma aveva questi problemi noti.
Alla fine, XCUI fu la scelta preferita. Con questo, uno sviluppatore avrà più controllo sull’automazione e sarà il beneficiario immediato di qualsiasi innovazione nell’ecosistema Apple.
App in prova e modulo di automazione XCUI
Prima di entrare nei dettagli, è importante ribadire che il modulo di automazione che usa XCUI viene eseguito come un processo indipendente dall’applicazione in prova. Per iniziare, abbiamo aggiunto un nuovo modulo che d’ora in poi chiameremo Automation Module(AM). AM è uno spazio di lavoro che contiene una collezione di classi e strutture dati utilizzate per l’automazione di VMware Boxer utilizzando XCUI.
Identificatori di accessibilità
È importante che l’applicazione sia sviluppata tenendo presente la sua testabilità. Una delle responsabilità dello sviluppatore è assicurare che ogni elemento dell’interfaccia utente che è esposto all’utente finale abbia l’identificatore di accessibilità impostato durante lo sviluppo. L’identificatore di accessibilità è il collegamento tra l’applicazione sotto test e il processo di automazione XCUI.
L’identificatore di accessibilità è il collegamento tra l’applicazione sotto test e il processo di automazione XCUI.
Design Pattern
Come detto prima, VMware Boxer è un’applicazione enorme. La scelta del design pattern da utilizzare è stata fatta tenendo presente che i test devono essere facili da implementare, facili da mantenere, riutilizzabili, robusti e scalabili. Il contenuto sottostante spiega i livelli dell’architettura del modulo XCUI Automation per VMware Boxer:
La figura seguente mostra gli elementi di base:
Classi di test
Questo è il livello che ha le classi con i metodi di test. L’intenzione di questo livello è di avere dei test composti da codice minimo che dice solo ciò che viene testato. Inoltre, lo sviluppatore che implementa i test ha bisogno di pensare solo al flusso dell’applicazione di alto livello richiesto per testare ciò che viene testato. Il resto della complessità (ad esempio come navigare verso l’UI dove il test desiderato può essere eseguito) dovrebbe essere astratto in strati riutilizzabili. Fate riferimento all’immagine qui sotto che mostra un metodo di test di esempio che spiega l’intento di cui sopra – il codice testa se una UI Settings può aiutare ad attivare/disattivare una funzione o se ha i controlli di commutazione richiesti.