Questa guida descrive come eseguire un test XCTest per iOS utilizzando l'interfaccia a riga di comando gcloud alpha
device-run e trovare i risultati nella console Google Cloud . Si presuppone che tu abbia un account e un progetto Google Cloud .
Se stai eseguendo la migrazione da Firebase Test Lab a Developer Device Platform, consulta la nostra guida alla migrazione, la traduzione di comandi e flag e la skill di migrazione per gli agenti AI.
Per utilizzare l'interfaccia a riga di comando device-run, devi fornire l'ID progetto Google Cloud. Consulta gcloud alpha
device-run per un riepilogo dei comandi.
Prima di iniziare
Questi passaggi presuppongono che tu abbia già:
- Creato un progetto Google Cloud .
- Configura Developer Device Platform seguendo la guida rapida.
- Autenticazione con
gcloudnel terminale. - Hai esaminato la panoramica di Device Run per informazioni generali.
- Compilato i test e creato un pacchetto ZIP.
Passaggio 1: Configura l'esecuzione del test
Puoi personalizzare l'esecuzione del test utilizzando i seguenti flag facoltativi
(anche se è richiesta almeno un'istanza del flag --device):
- Più dispositivi: specifica il flag
--devicepiù volte per eseguire lo stesso test su più dispositivi contemporaneamente:--device iphonese3-18-4 --device iphonese3-26-3o--device iphonese3-18-4,iphonese3-26-3 - App aggiuntive: installa uno o più pacchetti
.ipaaggiuntivi prima di avviare il test utilizzando--additional-apps:--additional-apps=/path/to/AdditionalApp.ipa - File
.xctestrunpersonalizzato: passa un file di configurazione personalizzato con--xctestrun-file:--xctestrun-file=/path/to/CustomTests.xctestrun - Versioni di Apple Xcode: accedi direttamente tramite l'interfaccia a riga di comando alle versioni di Xcode supportate con il flag
--xcode-version, ad esempio:--xcode-version=xcode-16-4 - Timeout del test: limita la durata dell'esecuzione:
--xctest-timeout=10m(l'intervallo valido è compreso tra1me1he il valore predefinito è5m). - Etichette: allega i metadati definiti dall'utente alla sessione:
--labels=env=staging,owner=my-team - Impostazioni internazionali: imposta le impostazioni internazionali del dispositivo:
--locale=en-US - Invia file al dispositivo: invia i file al container dei dati dell'app prima dell'esecuzione del test:
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - Estrai i file dal dispositivo: estrai i file dal container di dati dell'app dopo l'esecuzione del test:
--paths-to-pull=com.example.app:/Documents/output.txt - Tentativi di ripetizione dei test instabili: imposta il numero massimo di tentativi di ripetizione dei test instabili:
--flaky-test-attempts=3(il valore predefinito è 1 tentativo). - Bucket Cloud Storage personalizzato: specifica un bucket Cloud Storage personalizzato per gli input e gli output:
--bucket-name=my-custom-bucket(il valore predefinito èPROJECT_ID-devicerun). - Poiché il caricamento di file ZIP o IPA di grandi dimensioni può richiedere molto tempo, puoi fare riferimento direttamente ai tuoi file utilizzando i relativi percorsi
gs://di Cloud Storage per risparmiare tempo di caricamento.
Esecuzioni sincrone e asincrone
Per impostazione predefinita, il comando submit è bloccante (sincrono). Attenderà il completamento del test e stamperà una tabella di riepilogo dei risultati.
Per inviare la sessione e tornare immediatamente dopo aver caricato i file su Cloud Storage, aggiungi il flag --async:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
Viene restituito immediatamente un ID sessione. Puoi quindi attendere l'operazione utilizzando il comando sessions wait:
gcloud alpha device-run sessions wait SESSION_ID
Il comando verrà bloccato fino al completamento del job.
Più dispositivi
Per eseguire lo stesso test su più dispositivi, fornisci il flag --device con più ID dispositivo separati da virgole o con più flag --device, ognuno dei quali specifica un ID dispositivo distinto.
Separati da virgole
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
Più flag
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
Timeout test
Limita la durata di esecuzione del test:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xctest-timeout=10m
L'intervallo valido è compreso tra 1m e 1h e il valore predefinito è 5m.
Versioni software
Scopri e utilizza i pacchetti software e le versioni di Apple Xcode disponibili e ispeziona i relativi cicli di vita, le versioni supportate e i metadati prima di configurare le esecuzioni dei test.
Innanzitutto, elenca tutti i pacchetti software disponibili e le relative versioni:
gcloud alpha device-run software-versions list
Ricezione di un output simile al seguente:
ID NAME SOFTWARE_TYPE VERSION STATE IS_DEFAULT
androidx-test-orchestrator-1-4-1 AndroidX Test Orchestrator 1.4.1 ANDROIDX_TEST_ORCHESTRATOR 1.4.1 ACTIVE True
androidx-test-orchestrator-1-6-1 AndroidX Test Orchestrator 1.6.1 ANDROIDX_TEST_ORCHESTRATOR 1.6.1 ACTIVE
xcode-16-4 Xcode 16.4 XCODE 16.4 ACTIVE
xcode-26-2 Xcode 26.2 XCODE 26.2 ACTIVE True
Quindi, descrivi un pacchetto specifico utilizzando il relativo ID risorsa esatto dall'elenco:
gcloud alpha device-run software-versions describe xcode-16-4
Ricezione di un output simile al seguente:
id: xcode-16-4
lifecycle:
state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:
- '15.0'
- '15.1'
- '15.2'
- '15.4'
- '15.7'
- '16.0'
- '16.1'
- '16.2'
- '16.3'
- '16.5'
- '16.6'
- '18.0'
- '18.3'
- '18.4'
version: '16.4'
Ora che sai quali versioni software sono disponibili, puoi utilizzarle nelle tue esecuzioni di test con il flag --xcode-version, in questo modo:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Passaggio 2: Scegli i tipi di dispositivo
Utilizzando l'interfaccia a riga di comando device-run, i test per iOS possono essere eseguiti sui dispositivi fisici
disponibili. Per visualizzare l'elenco completo dei dispositivi disponibili, visita il catalogo dei dispositivi interattivo o esegui:
gcloud alpha device-run devices list
Output di esempio:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
Consulta il Catalogo dei dispositivi per scoprire come filtrare questo elenco. Per scegliere come target un dispositivo specifico per l'esecuzione del test, utilizza l'ID corrispondente (ad es. iphonese3-18-4) nel comando submit.
Passaggio 3: Prepara e pacchettizza il tuo XCTest
Prima di eseguire i test, devi compilarli, assicurarti che siano firmati, verificare le firme del codice e pacchettizzare gli artefatti risultanti in un file ZIP contenente la configurazione di .xctestrun e i bundle di test dell'applicazione.
1. Crea i test per i dispositivi iOS fisici
Apri il progetto in Xcode e crea l'app e i target di test per i test:
- Assicurati che la firma del codice sia configurata correttamente in Xcode (specificando un profilo di provisioning e un'identità sviluppatore validi) sia per il target dell'app sia per il target dell'esecutore del test.
Crea per i test utilizzando Xcode (Product > Build For > Testing) o con
xcodebuild.Per uno spazio di lavoro:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"Per un progetto autonomo:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
In questo modo vengono generati i prodotti della build in: ./build/Build/Products
2. Verifica i prodotti e le firme della build
Dopo la creazione, verifica che l'applicazione, l'esecutore e il manifest .xctestrun siano stati generati in ./build/Build/Products/. Se la firma è stata eseguita localmente, puoi verificare le firme del bundle utilizzando codesign:
Verifica l'app bundle:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appOutput previsto:
YourApp.app: valid on diskSe esegui un test XCUITest, verifica anche il bundle del test runner:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.appOutput previsto:
YourApp-Runner.app: valid on disk
3. Crea il file ZIP
Comprimi sia la directory Debug-iphoneos sia il file .xctestrun che si trovano nella cartella dei prodotti di output della build in un unico file ZIP.
Esegui questo comando dalla directory dei prodotti di build:
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
In questo modo viene creato il pacchetto MyTests.zip pronto per essere utilizzato con il flag --test.
Passaggio 4: Esegui XCTest
Tieni presente che questi flag sono obbligatori:
- Dispositivo: specifica un dispositivo utilizzando
--device:--device iphonese3-18-4 - Test: specifica il file ZIP di test utilizzando
--test:--test ./MyTests.zip
Per eseguire l'XCTest, utilizza il comando gcloud alpha device-run sessions submit xctest. Devi fornire il file ZIP di test (MyTests.zip) compilato nel passaggio precedente.
Per eseguire una sessione di test di base:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
All'inizio dell'esecuzione, l'interfaccia a riga di comando visualizza l'ID sessione creato e la destinazione Cloud Storage in cui verranno archiviati i risultati:
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
Passaggio 5: Esplora e gestisci l'esecuzione del test
Puoi monitorare le esecuzioni attive e gestire le sessioni storiche utilizzando questi comandi:
- Descrivi sessione: esegui una query sullo stato di avanzamento in tempo reale o sui risultati finali di una sessione:
gcloud alpha device-run sessions describe SESSION_IDAggiungi--fullper visualizzare i dettagli completi, tra cui le allocazioni dei dispositivi, gli ID esecuzione e i percorsi degli artefatti di Cloud Storage. - Elenca sessioni: visualizza le esecuzioni recenti:
gcloud alpha device-run sessions list --limit=10 - Annulla sessione: interrompi una sessione di test in esecuzione:
gcloud alpha device-run sessions cancel SESSION_ID - Annulla operazione: interrompi un'operazione in attesa o attiva:
gcloud alpha device-run operations cancel OPERATION_ID