Test di app macOS: creare test end-to-end per app Mac e Safari da Windows
Test di app macOS da Windows: create test end-to-end e funzionali di un'app Mac o di Safari tramite desktop remoto, ed eseguiteli a ogni build.
Per testare un'app macOS end-to-end da Windows, collegatevi a un vero Mac con un visualizzatore di desktop remoto, registrate un flusso in quella finestra con GUI Test Studio, aggiungete controlli di ciò che l'app mostra ed eseguite il test a ogni build.
Che cos'è un test end-to-end di un'app macOS?
Definizione
Un test end-to-end di un'app macOS esegue un flusso reale come fa un utente, dalla prima schermata al risultato, e controlla ciò che l'app mostra a ogni passo.
- Un test funzionale controlla una funzione nello stesso modo: il pulsante funziona, il record è salvato, il totale è giusto.
Molti team QA lavorano su Windows e hanno comunque una versione Mac della loro app da controllare, o un sito web i cui visitatori usano Safari.Di solito li testano a mano sull'unico Mac dell'ufficio, quindi il test delle app macOS arriva tardi, e raramente a ogni build.
Questa guida mostra come i tester e gli ingegneri del software creano test funzionali ed end-to-end di un'app Mac, o di un sito web in Safari, dal computer Windows che già usano.Ogni test viene registrato una volta e gira a ogni build, senza scrivere codice.
Perché non si può testare Safari direttamente su Windows
Apple ha smesso di produrre Safari per Windows nel 2012, e la sua ultima versione è troppo vecchia per mostrare un sito web moderno.Safari, e le app scritte per macOS, girano solo su un Mac.
Ognuna delle soluzioni abituali trascura qualcosa.
- Un browser basato su WebKit, il motore dietro Safari, non è Safari: non ha i moduli, i caratteri, le barre di scorrimento e le impostazioni propri di Safari.
- Un Mac che una persona controlla a mano è reale, ma è lento, e nessuno controlla ogni build.
- Un Mac raggiunto da Windows e testato da un software è reale e ripetibile.
Strumenti per i test dell'interfaccia macOS: XCUITest, Appium Mac2 e un test registrato
La via di Apple è XCUITest, la parte di XCTest dedicata ai test dell'interfaccia: i test si scrivono in Swift o Objective-C, in Xcode, su un Mac.Il driver Appium Mac2 pilota le app macOS attraverso lo stesso framework XCTest, quindi i test si possono scrivere in altri linguaggi, e richiede un Mac con Xcode, come dice la sua guida introduttiva.
| Cosa confrontate | XCUITest | Driver Appium Mac2 | GUI Test Studio |
|---|---|---|---|
| Come si crea un test | Scritto in Swift o Objective-C | Scritto come codice, in Java, Python, JavaScript o un altro linguaggio | Registrato, poi modificato su una timeline, senza codice |
| Cosa richiede | Un Mac con Xcode | Un Mac con macOS 11.3 o successivo, Xcode 13 o successivo e un server Appium | Un PC Windows con un visualizzatore di desktop remoto, e un Mac a cui collegarsi |
| Come trova gli elementi | Tramite le informazioni di accessibilità dell'app | Tramite le informazioni di accessibilità dell'app, con XCTest | A vista, sull'immagine dello schermo del Mac |
| A chi è adatto | Sviluppatori che gestiscono il codice dell'app | Team che scrivono già test con Appium | Team QA su Windows che testano l'app come la vedono i suoi utenti |
Un test scritto in codice legge la struttura dell'app, quindi continua a funzionare quando l'aspetto cambia, e richiede un Mac per ogni sviluppatore che ne scrive uno.Un test registrato vede lo schermo come un utente, quindi individua anche ciò che appare sbagliato, e chiunque nel team può crearne uno da Windows.
Come funziona: il visualizzatore è solo una finestra
Un visualizzatore di desktop remoto mostra lo schermo del Mac in una finestra su Windows, e invia al Mac il vostro mouse e la vostra tastiera.Per GUI Test Studio, quella finestra è un'app come le altre.
Il vostro PC Windows
GUI Test Studio
Registra la finestra del visualizzatore, vi riproduce mouse e tastiera e controlla ciò che mostra.
Il Mac
Su una scrivania, in un rack o nel cloud
Esegue la vostra app Mac o Safari, con un utente che ha effettuato l'accesso.
Collegarsi
Aprire il visualizzatore sul Mac
Registrare
Scegliere la finestra del visualizzatore
Controllare
Ciò che il Mac mostra
Report
Atteso e trovato, affiancati
GUI Test Runner-Recorder registra la finestra del visualizzatore, con Un'app nella sua domanda Che cosa vuole testare?, oppure una parte dello schermo con Un'area.Quando il test viene eseguito, muove il mouse reale e preme i tasti reali in quella finestra, e il visualizzatore li trasmette al Mac.Come funziona una registrazione è spiegato in Registrare un test.
Quale visualizzatore di desktop remoto usare
| Visualizzatore su Windows | Cosa gira sul Mac |
|---|---|
| Un visualizzatore VNC, come RealVNC Viewer o TightVNC | La Condivisione schermo del Mac stesso, attivata in Impostazioni di Sistema.Nulla da installare sul Mac. |
| NoMachine | Il programma NoMachine, installato sul Mac. |
| Parsec | L'app Parsec, installata sul Mac. |
| Jump Desktop | Jump Desktop Connect, installato sul Mac. |
| Chrome Remote Desktop | L'host di Chrome Remote Desktop, installato sul Mac. |
Va bene uno qualsiasi, perché a GUI Test Studio serve solo ciò che ogni visualizzatore offre: una finestra che mostra lo schermo del Mac e riceve il mouse e la tastiera.Scegliete quello che il vostro team usa già, oppure la Condivisione schermo del Mac stesso con un visualizzatore VNC gratuito.
Da dove viene il Mac: una scrivania, un rack o un Mac nel cloud per i test
Il Mac può stare in tre posti, e al test non importa quale.
Un Mac su una scrivania è il punto di partenza più semplice: il Mac che i vostri designer o sviluppatori hanno già, tenuto acceso e con l'accesso effettuato.
Un Mac mini in un rack serve l'intero team da una sala server, spesso senza alcun monitor collegato.
Un Mac nel cloud, come un'istanza Mac di Amazon EC2 o un Mac di MacinCloud o MacStadium, è un vero Mac che noleggiate e raggiungete via internet.
Un Mac nel cloud spesso arriva con la sola riga di comando.Seguite la guida del suo fornitore per attivare un desktop visibile, far accedere un utente e consentire la condivisione dello schermo, poi collegatevi come a un Mac sulla vostra scrivania.
Pianificare un test funzionale di un'applicazione Mac
Un buon test end-to-end segue un flusso che conta per i vostri utenti e ne dimostra il risultato.Scrivetelo in poche righe prima di registrare: dove inizia, cosa fa l'utente e cosa deve mostrare lo schermo alla fine.
Un test funzionale di un'app Mac
- 1Aprire l'app e accedereAsserzione visiva: il pulsante Accedi c'è e ha l'aspetto giusto
- 2Fare clic su Nuovo cliente e digitare il nome del clienteAsserzione visiva: il pulsante e il campo vengono trovati prima di ogni azione
- 3Fare clic su SalvaAsserzione testuale: il messaggio dice Cliente salvato
- 4Aprire la nuova fatturaAsserzione testuale dinamica: il numero di fattura ha il formato giusto, qualunque sia il suo valore
- 5Controllare l'elenco dei clientiAsserzione testuale: il nome del nuovo cliente è nell'elenco
- Iniziate ogni esecuzione dalla stessa schermata, come la prima finestra dell'app quando si apre.
- Tenete un solo flusso per test, così un errore indica una sola funzione.
- Controllate il risultato, non solo i clic: un messaggio di salvataggio, una nuova riga in un elenco, un totale.
- Usate dati di test che non cambiano tra un'esecuzione e l'altra, come lo stesso nome di cliente.
Quale controllo è adatto a quale elemento è spiegato in Scegliere il controllo giusto.
Creare un test automatizzato della vostra app Mac, passo dopo passo
La connessione al Mac si configura una volta sola.Dopo, creare un test Mac è come creare qualsiasi test.
- 1
Procurarsi un Mac con un utente che ha effettuato l'accesso
Usate un Mac sulla vostra scrivania, un Mac mini in un rack o un Mac nel cloud.Un utente deve aver effettuato l'accesso, con un desktop sullo schermo, perché una connessione che apre solo una riga di comando non mostra nulla da testare.
Impedite al Mac di andare in stop, e disattivate il salvaschermo e il blocco dello schermo, così il desktop è lì quando parte un'esecuzione.
- 2
Attivare l'accesso remoto sul Mac
In Impostazioni di Sistema, sotto Generali e Condivisione, attivate Condivisione schermo, oppure Gestione remota.Nelle sue opzioni, consentite ai visualizzatori VNC di controllare lo schermo con una password.Con un altro strumento di desktop remoto, installate invece il suo host sul Mac.
- 3
Collegarsi da Windows a una dimensione fissa
Aprite il visualizzatore sul computer Windows, collegatevi al Mac, e tenete la sua finestra alla stessa dimensione a ogni esecuzione, con lo schermo del Mac mostrato al 100%.Disattivate qualsiasi adattamento alla finestra che cambi l'immagine quando la finestra cambia.
Date al Mac una risoluzione dello schermo fissa.Impostate la qualità dell'immagine del visualizzatore su alta, o senza perdita dove ha questa impostazione, così bordi e lettere restano nitidi.
- 4
Registrare il flusso attraverso il visualizzatore
In GUI Test Runner-Recorder, fate clic su Registra, scegliete Un'app e selezionate il visualizzatore.Eseguite il flusso sul Mac attraverso il visualizzatore, dalla prima schermata al risultato, poi premete il tasto Termina.
Per iniziare ogni esecuzione allo stesso modo, spuntate Avvia l'app all'inizio del test e chiudila alla fine.Un passaggio Esegui app può anche avviare il visualizzatore con l'indirizzo del Mac, quando il visualizzatore lo accetta dalla riga di comando, e aprirlo ingrandito.
- 5
Scegliere cosa verifica il test
Quando la registrazione termina, lasciate attivo Verificare gli elementi visivi, e attivate Verificare il testo quando contano le parole sullo schermo.Lasciate attivo Verificare ciò che appare, così una finestra di dialogo o un messaggio di conferma riceve i propri controlli.
Ogni scheda di quella domanda è spiegata in Scegliere cosa verifica un test.
- 6
Aggiungere i controlli che dimostrano il risultato
Aprite il test in GUI Test Studio e aggiungete un'asserzione testuale per il messaggio che dimostra che il flusso ha funzionato, e un'asserzione testuale dinamica per un valore che cambia a ogni esecuzione, come un numero d'ordine o una data.
Raggruppate i passi in scenari, come Accesso e Creazione di un cliente, così un errore dice quale parte del flusso si è rotta.
- 7
Eseguirlo e leggere il report di affidabilità
Fate clic su Esegui test in GUI Test Runner-Recorder.Il report di affidabilità mostra ogni passo e, per ogni controllo, ciò che era atteso e ciò che il Mac ha mostrato.
- 8
Eseguitelo a ogni build
Eseguite il test con gtr-cli su un agente di build Windows che abbia un desktop con accesso effettuato e il visualizzatore collegato al Mac.
I controlli di un test dell'interfaccia macOS, trovati a vista
Su un'app Windows, il GTS Engine chiede prima all'applicazione dove si trova un elemento, tramite le informazioni di accessibilità che le app Windows forniscono, e lo trova a vista quando l'applicazione non lo dice.Attraverso un visualizzatore, lo schermo del Mac arriva come un'immagine: non c'è nulla da chiedere, quindi ogni elemento viene trovato a vista.
| Controllare | Cosa dimostra sul Mac | Esempio |
|---|---|---|
| Asserzione visiva | Un elemento è sullo schermo e ha l'aspetto registrato.Indica anche al clic successivo dove si trova ora l'elemento. | Il pulsante Salva, un'icona della barra degli strumenti, un grafico |
| Asserzione testuale | Un testo si legge come previsto, qualunque siano il carattere o il colore. | Cliente salvato, il titolo di una finestra, un totale |
| Asserzione testuale dinamica | Un valore ha il formato giusto, qualunque esso sia. | Un numero di fattura, la data di oggi, un prezzo |
| Asserzione testuale di assenza | Un testo è scomparso, o non appare mai. | Un messaggio di errore dopo un accesso corretto |
| Asserzione di gruppo | Tutto ciò che è apparso su una schermata è lì, insieme. | Una finestra di dialogo con il titolo, i campi e i pulsanti |
Ogni controllo attende ciò che cerca fino al suo timeout, quindi un Mac che risponde con un po' di ritardo non è un errore.Perché trovare a vista è affidabile, e come distingue gli elementi simili, è spiegato in come GUI Test Studio trova gli elementi.
Automatizzare i test su Safari: un test end-to-end nel vero Safari
Un test end-to-end di un'app web in Safari si crea esattamente allo stesso modo.Aprite Safari sul Mac, andate sulla pagina, e registrate la finestra del visualizzatore mentre seguite il flusso: registrarsi, aggiungere un prodotto al carrello, pagare con una carta di test e controllare la conferma.
- Il test gira su Safari stesso, con il suo motore, i suoi elementi dei moduli e i suoi caratteri.
- Un layout che si rompe solo in Safari si rompe anche nel test.
- Un'asserzione testuale legge ciò che Safari mostra davvero, e un'asserzione visiva confronta ciò che Safari disegna con ciò che disegnava quando il test è stato registrato.
Iniziate ogni test Safari da una pagina nota, come la pagina di accesso in una finestra privata, così nessuna sessione precedente cambia ciò che vede il test.
Come vengono coperti gli altri browser e i dispositivi emulati, e quali browser testare per primi, è spiegato nella nostra guida al test cross-browser.
Leggere il risultato di un'esecuzione
Dopo ogni esecuzione, il report di affidabilità si apre con il verdetto in alto e ogni passo sotto.Un controllo fallito mostra ciò che era atteso accanto a ciò che il Mac ha mostrato, con la differenza evidenziata, così vedete subito se l'app sbaglia o se lo schermo si è solo spostato.
Ogni parte del report è spiegata in Leggere il report di affidabilità.
Consigli per test affidabili tramite desktop remoto
Un test attraverso un visualizzatore viene superato ogni volta quando l'immagine e i tempi sono gli stessi a ogni esecuzione.Queste abitudini vi ci portano.
| Argomento | Cosa fare |
|---|---|
| Latenza | Ogni asserzione attende ciò che cerca fino al suo tempo massimo, 5 secondi per impostazione predefinita, quindi un Mac che risponde con un po' di ritardo non è un errore.Dove il Mac è lento, come dopo l'avvio di un'app, aumentate il tempo massimo di quell'asserzione o aggiungete un'attesa. |
| Il tasto Comando | Molti visualizzatori inviano il tasto Windows come Comando e Alt come Opzione, ma Windows può intercettare da solo alcune scorciatoie del tasto Windows.Attivate l'opzione del visualizzatore che invia i tasti di sistema al computer remoto, e provate ogni scorciatoia una volta durante la registrazione. |
| Qualità dell'immagine | Un visualizzatore che comprime l'immagine sfuma i bordi in modo un po' diverso a ogni esecuzione.Impostate la sua qualità su alta o senza perdita, e usate la severità della verifica Permissiva su una connessione che non potete cambiare. |
| Dimensione della finestra e ridimensionamento | Tenete la finestra del visualizzatore a una sola dimensione e lo schermo del Mac al 100% al suo interno.Un'immagine ridimensionata per adattarsi a un'altra finestra è un'altra immagine. |
| Retina e risoluzione | Date al Mac un'unica risoluzione fissa.Un Mac mini senza monitor può sceglierne da solo una piccola: impostatela, oppure collegate un emulatore di display. |
| Notifiche e finestre a comparsa | Attivate Non disturbare sul Mac, così una notifica non copre mai ciò che il test cerca. |
| Il punto di partenza | Prima di un'esecuzione, riportate il Mac sulla schermata in cui è iniziata la registrazione.GUI Test Runner-Recorder lo controlla e vi avvisa quando lo schermo non è dove il test inizia. |
Un profilo di baseline per Mac conserva un'immagine attesa separata per ciascuno, quando due Mac disegnano la stessa finestra in modo un po' diverso, come due versioni di macOS.
Eseguire i test Mac in CI/CD da un agent Windows
I vostri agenti di build restano su Windows.Serve un solo Mac, raggiunto tramite il visualizzatore, e gtr-cli, l'esecutore da riga di comando, esegue i test su Mac come qualsiasi altro test.
gtr-cli run tests\mac --countdown 0 --junit results\junit.xml --artifacts results\artifactsLa preparazione della macchina di build, i codici di uscita e i risultati JUnit sono spiegati in Eseguire i test nella pipeline.
Cosa sapere prima di iniziare
| Limite | Cosa significa |
|---|---|
| Serve un Mac | L'app o Safari gira su un vero Mac, su una scrivania, in un rack o nel cloud.GUI Test Studio stesso funziona su Windows. |
| Solo ciò che mostra il visualizzatore | Il test vede e controlla ciò che mostra la finestra del visualizzatore.Tenete al suo interno la parte dello schermo del Mac che testate. |
| Nessuna informazione di accessibilità | Un visualizzatore trasmette un'immagine dello schermo del Mac, quindi ogni elemento viene trovato a vista e ogni testo letto dall'immagine. |
| Safari solo su Mac | Safari su un iPhone o un iPad gira sul dispositivo, che questa configurazione non raggiunge. |
Punti chiave
- 1Un test end-to-end segue un intero flusso sul Mac, come accedere, creare, salvare, e controlla il risultato a ogni passo.
- 2Serve un vero Mac, perché non esiste un Safari attuale per Windows e le app Mac girano solo su un Mac.
- 3Il Mac può stare ovunque: su una scrivania, in un rack o nel cloud, raggiunto tramite un visualizzatore di desktop remoto.
- 4Il visualizzatore è una finestra, quindi GUI Test Studio la registra, vi riproduce input reali e controlla ciò che mostra con asserzioni visive e asserzioni testuali.
- 5Tenete l'immagine stabile: una dimensione della finestra fissa, il ridimensionamento al 100%, una risoluzione fissa e un'alta qualità dell'immagine, poi eseguite il test con gtr-cli a ogni build.
Domande
Come si creano test end-to-end per un'app macOS?
Registrate un flusso reale sul Mac, come accedere, creare un record e salvarlo, poi aggiungete controlli di ciò che l'app mostra.Con GUI Test Studio lo fate da Windows: un visualizzatore di desktop remoto mostra il Mac, e GUI Test Runner-Recorder registra quella finestra.Il test gira poi a ogni build con input reali di mouse e tastiera.
Posso testare Safari su Windows?
Non con Safari in esecuzione su Windows: Apple ha smesso di produrre Safari per Windows nel 2012.Potete testare il vero Safari da Windows raggiungendo un Mac tramite un visualizzatore di desktop remoto e registrando quella finestra con GUI Test Studio.Il test gira allora su Safari stesso, sul Mac, con input reali di mouse e tastiera.
Qual è un'alternativa a XCUITest per i test dell'interfaccia macOS?
I test XCUITest si scrivono in codice, in Xcode, su un Mac.Il driver Appium Mac2 permette di scriverli in altri linguaggi, e richiede comunque un Mac con Xcode.GUI Test Studio invece registra il test, da un computer Windows, e controlla ciò che mostra lo schermo del Mac senza alcun codice.
Mi serve un Mac per testare un'app Mac?
Sì, da qualche parte.Il Mac può essere sulla vostra scrivania, in un rack o nel cloud, come un'istanza Amazon EC2 Mac o un Mac di MacinCloud o MacStadium, e nessuno deve starci davanti.I test vengono registrati ed eseguiti da un computer Windows, attraverso un visualizzatore di desktop remoto.
Posso eseguire macOS in una macchina virtuale su Windows per i test?
La licenza di Apple per macOS consente le macchine virtuali macOS solo su hardware Apple, quindi un PC Windows non è il posto giusto per una di esse.Eseguite la macchina virtuale su un Mac, con uno strumento come Parallels Desktop, UTM o VMware Fusion, e raggiungetela da Windows tramite un visualizzatore di desktop remoto come qualsiasi altro Mac.
Il test può leggere il testo sullo schermo del Mac?
Sì.Le asserzioni testuali leggono ciò che il Mac mostra con il riconoscimento del testo di GUI Test Studio, come fanno su qualsiasi schermo.Tenete alta la qualità dell'immagine del visualizzatore, così le lettere conservano bordi nitidi.
Come preme il test il tasto Comando?
Attraverso il visualizzatore, come fa la vostra stessa tastiera.Molti visualizzatori inviano il tasto Windows come Comando e Alt come Opzione, ma Windows può tenere per sé alcune scorciatoie del tasto Windows.Attivate l'opzione del visualizzatore che invia i tasti di sistema al computer remoto, e provate ogni scorciatoia una volta durante la registrazione.
I test su Mac possono girare in una pipeline CI?
Sì. gtr-cli esegue il test su un agente di build Windows e fornisce alla vostra pipeline un codice di uscita e i risultati JUnit.L'agente ha bisogno di un vero desktop Windows con accesso effettuato, perché un servizio di Windows non ha schermo, e il visualizzatore deve essere collegato al Mac quando parte l'esecuzione.
Mac, macOS, Mac mini, Safari, Xcode, XCTest, iPhone, iPad, Appium, Parallels Desktop, UTM, VMware Fusion, Amazon EC2, MacinCloud, MacStadium, RealVNC, TightVNC, NoMachine, Parsec, Jump Desktop, Chrome Remote Desktop e Windows sono marchi dei rispettivi proprietari.
Continua a leggere
Tutti gli articoli
Test visivi
Test di screenshot pixel perfect: perché fallisce e che cosa scopre i veri bug visivi
12 min di lettura

Automazione dei test
Test manuali e test automatizzati: perché i test manuali non bastano per i test end-to-end
15 min di lettura

Test visivi
Test della modalità scura, altre lingue, altri schermi: un solo test per tutte le varianti
10 min di lettura