Developer Device Platform Device Run per iOS

Questa guida descrive come eseguire un test XCTest iOS utilizzando la CLI gcloud beta device-run e trovare i risultati nella console Google Cloud . Presuppone che tu disponga di un account e di un progetto Google Cloud .

Per utilizzare la CLI device-run, devi fornire l'ID progetto Google Cloud. Consulta gcloud beta device-run per un riepilogo dei comandi.

Prima di iniziare

Questi passaggi presuppongono che tu abbia già:

  1. Creazione di un progetto Google Cloud .
  2. Configura la piattaforma per dispositivi per sviluppatori seguendo la Guida rapida.
  3. Autenticato con gcloud nel terminale.
  4. Ho esaminato la panoramica di Device Run per informazioni generali.
  5. Hai compilato i test e li hai inseriti in un file ZIP.

Passaggio 1: Scegli i tipi di dispositivi

Utilizzando la CLI device-run, i test iOS possono essere eseguiti su dispositivi fisici disponibili. Per visualizzare l'elenco completo dei dispositivi disponibili, visita il catalogo interattivo dei dispositivi o esegui:

gcloud beta 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 il relativo ID (ad es. iphonese3-18-4) nel comando di invio.

Passaggio 2: Preparare e creare il pacchetto XCTest

Prima di eseguire i test, devi compilarli, assicurarti che siano firmati, verificare le firme del codice e comprimere gli artefatti risultanti in un file ZIP contenente la configurazione .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 il test:

  1. 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 del test runner.
  2. Crea una build per i test utilizzando Xcode (Prodotto > Crea per > Test) 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"
    

Vengono generati i prodotti di build in: ./build/Build/Products

2. Verificare i prodotti e le firme della build

Dopo la creazione, verifica che l'applicazione, il runner e il manifest .xctestrun siano stati generati in ./build/Build/Products/. Se hai eseguito la firma localmente, puoi verificare le firme del bundle utilizzando codesign:

  1. Verifica l'app bundle:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app
    

    Output previsto: YourApp.app: valid on disk

  2. Se esegui un test XCUITest, verifica anche il bundle del test runner:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.app
    

    Output previsto: YourApp-Runner.app: valid on disk

3. Crea l'archivio 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 archivio ZIP.

Esegui questo comando dalla directory dei prodotti di build:

cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun

Viene creato il pacchetto MyTests.zip pronto per essere utilizzato con il flag --test.

Passaggio 3: 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 XCTest, utilizza il comando gcloud beta 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 beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./MyTests.zip

Quando inizia l'esecuzione, la CLI mostra 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 4: Configurare l'esecuzione 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 --device più volte per eseguire lo stesso test su più dispositivi contemporaneamente: --device iphonese3-18-4 --device iphonese3-26-3 o --device iphonese3-18-4,iphonese3-26-3
  • App aggiuntive: installa uno o più pacchetti .ipa prima di avviare il test utilizzando --additional-apps: --additional-apps=/path/to/AdditionalApp.ipa
  • File .xctestrun personalizzato: passa un file di configurazione personalizzato con --xctestrun-file: --xctestrun-file=/path/to/CustomTests.xctestrun
  • Timeout test: limita la durata dell'esecuzione: --xctest-timeout=10m (l'intervallo valido è da 1m a 1h e il valore predefinito è 5m).
  • Etichette: collega metadati definiti dall'utente alla sessione: --labels=env=staging,owner=my-team
  • Esegui il push dei file sul dispositivo: esegui il push dei file nel container di dati dell'app prima dell'esecuzione del test: --other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt
  • Recupera file dal dispositivo: recupera i file dal contenitore dei dati dell'app dopo l'esecuzione del test: --paths-to-pull=com.example.app:/Documents/output.txt
  • Nuovi tentativi di test instabili: imposta il numero massimo di tentativi per eseguire di nuovo i test instabili: --flaky-test-attempts=3 (il valore predefinito è 1 tentativo).
  • Bucket Cloud Storage personalizzato: specifica un bucket Cloud Storage personalizzato per input e 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.

Passaggio 5: Esplorare e gestire l'esecuzione del test

Puoi monitorare le esecuzioni attive e gestire le sessioni storiche utilizzando questi comandi:

  • Describe session: esegui query sullo stato di avanzamento in tempo reale o sui risultati finali di una sessione: gcloud beta device-run sessions describe SESSION_ID Aggiungi --full per visualizzare i dettagli completi, inclusi le allocazioni dei dispositivi, gli ID esecuzione e i percorsi degli artefatti di Cloud Storage.
  • Elenca sessioni: visualizza le tue corse recenti: gcloud beta device-run sessions list --limit=10
  • Annulla sessione: interrompi una sessione di test in esecuzione: gcloud beta device-run sessions cancel SESSION_ID
  • Annulla operazione: interrompi un'operazione in attesa o attiva: gcloud beta device-run operations cancel OPERATION_ID

Passaggi successivi

Poi, trova e analizza i log.