Traduction des commandes et des indicateurs de la plate-forme d'appareils pour les développeurs Firebase Test Lab

La Developer Device Platform (DDP) remplace l'ancienne console Firebase Test Lab et les workflows de la CLI Test Lab par une CLI de test unifiée, performante et sécurisée, axée surGoogle Cloud : gcloud beta device-run

Ce guide fournit des traductions de lignes de commande et des mappages d'options de Test Lab (ou Flank) vers DDP. Suivez ces instructions pour migrer vos tests manuellement. Consultez Migrer de Firebase Test Lab vers Developer Device Platform pour découvrir les outils d'automatisation, les avantages, les principales différences et des conseils de migration.

Migration de partitionnement

DDP modernise les configurations de segmentation en remplaçant de manière native la segmentation intelligente complexe de Flank basée sur Cloud Storage et la segmentation uniforme de Test Lab.

Segmentation uniforme

  • Définissez --sharding-option=uniform.
  • Définissez --uniform-sharding-count={count} (1 à 20 pour les cartes physiques, 1 à 200 pour les cartes virtuelles).

  • Ancienne version de Firebase Test Lab : --num-uniform-shards {N}

  • CLI DDP : --sharding-option=uniform --uniform-sharding-count={N}

Segmentation intelligente

  • Définissez --sharding-option=smart.
  • Définissez --smart-sharding-target-duration={duration} (par exemple, 2m, 10m, 1h ; plage valide : de 2m à 1h).
  • Définissez --smart-sharding-record-name={record_name} (pointe vers l'enregistrement de suivi YAML dans --bucket-name sous automation/smart-sharding/).
  • Définissez --smart-sharding-max-shard-count={max_count} (limite maximale facultative : 0-20 pour les cartes physiques, 0-200 pour les cartes virtuelles).

En utilisant les métadonnées de timing historiques sur 30 jours :

  • Ancien Flank :

    max-test-shards: 10
    shard-time: 120
    smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yaml
    
  • CLI DDP :

    --sharding-option=smart \
    --smart-sharding-max-shard-count=10 \
    --smart-sharding-target-duration=2m \
    --smart-sharding-record-name=timing-record \
    --bucket-name=my-bucket
    

Configuration YAML déclarative (--flags-file)

Pour les configurations complexes ou les équipes qui préfèrent gérer des fichiers contrôlés par version plutôt que de longues commandes de terminal, gcloud fournit un préprocesseur d'arguments --flags-file universel (voir $ gcloud topic flags-file) :

Android

gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml

iOS

gcloud alpha device-run sessions submit xctest --flags-file=device-run-flags.yaml

Voici un exemple illustrant une liste à valeurs multiples et des options de dictionnaire :

Android

# device-run-flags.yaml
--device:

    -   mediumphone-arm-32
    -   shiba-36
--apps:
    -   app-debug.apk
    -   test-helper.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
--paths-to-pull:
    -   /sdcard/screenshots
    -   /sdcard/coverage.ec
--additional-test-options:
  coverage: "true"
  clearPackageData: "true"

iOS

# device-run-flags.yaml
--device:

    -   iphonese3-18-4
    -   iphone16pro-18-3
--test: MyTests.zip
--additional-apps:
    -   helper-app.ipa
--xcode-version: '16.4'
--xctest-timeout: 15m
--other-files-to-push:
  /local/path/test-config.json: com.example.app:/Documents/test-config.json
--paths-to-pull:
    -   com.example.app:/Documents/screenshots
--labels:
  env: staging
  team: mobile-qa

Exemples de traduction de commandes de bout en bout

Consultez ces traductions standards et complexes pour obtenir des exemples concrets.

Exemple : Exécuter un test d'instrumentation standard

Ancienne CLI Firebase :

gcloud firebase test android run \
  --app=app-debug.apk \
  --test=app-debug-androidTest.apk \
  --device model=shiba,version=36 \
  --timeout=5m \
  --num-flaky-test-attempts=2 \
  --directories-to-pull=/sdcard/screenshots \
  --environment-variables key=value

Traduction de la CLI DDP :

gcloud beta device-run sessions submit instrumentation \
  --device=shiba-36 \
  --apps=app-debug.apk \
  --test=app-debug-androidTest.apk \
  --instrumentation-timeout=5m \
  --flaky-test-attempts=3 \
  --paths-to-pull=/sdcard/screenshots \
  --additional-test-options key=value

Exemple : Migrer une configuration YAML Flank complexe

Ancienne configuration Flank :

app: app-debug.apk
test: app-debug-androidTest.apk
device:
  -   model: shiba
    version: 36
shard-time: 120
smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yaml

Traduction de la CLI DDP :

gcloud beta device-run sessions submit instrumentation \
  --device=shiba-36 \
  --apps=app-debug.apk \
  --test=app-debug-androidTest.apk \
  --bucket-name=my-bucket \
  --sharding-option=smart \
  --smart-sharding-target-duration=2m \
  --smart-sharding-record-name=timing-record

Post-exécution et récupération des résultats

Comme DDP n'est pas lancé avec une UI Web graphique (comme l'ancienne console Firebase), les développeurs doivent gérer, décrire et inspecter les résultats directement à l'aide de la CLI ou des API REST programmatiques :

# 1. List active and completed test sessions
gcloud beta device-run sessions list

# 2. Get a summary and direct Cloud Storage bucket link of a session's results
gcloud beta device-run sessions describe session-number

# 3. Get detailed metadata and print full results
gcloud beta device-run sessions describe session-number --full

# 4. Cancel a running session (replaces console cancellation)
gcloud beta device-run sessions cancel session-number

Documentation de référence sur le mappage des options

Voici le mappage des options pour migrer les configurations de test de Flank ou gcloud firebase test android/ios run vers les nouvelles commandes DDP gcloud beta device-run sessions submit instrumentation et gcloud alpha device-run sessions submit xctest.

Paramètres et éléments principaux

Ancien paramètre (Test Lab/Flank) Paramètre DDP cible Logique de format/conversion
Flanc --project --project Option globale standard Google Cloud (--project=PROJECT_ID) ou configuration Google Cloud CLI active.
--client-details --labels Dictionnaire de paires key=value à associer à la session de test.
--other-files --other-files-to-push Dictionary. Fichiers auxiliaires à transférer vers l'appareil avant l'exécution du test. Inverse l'ordre DEST=SOURCE hérité en SOURCE=DEST (SOURCE=DEVICE_PATH sur Android ; SOURCE=BUNDLE_ID:DEVICE_PATH sur iOS).

Configuration et ciblage des appareils

Ancien paramètre (Test Lab/Flank) Paramètre DDP cible Logique de format/conversion
--device model={M},version={V} --device={M}-{V} Chaîne OBLIGATOIRE qui mappe le modèle et la version de l'OS à une seule chaîne d'ID --device. L'option --device de DDP accepte plusieurs ID d'appareil séparés par une virgule (par exemple, --device=shiba-34,tokay-36 ou --device=iphone16pro-18-3) ou plusieurs indicateurs --device, chacun spécifiant un ID de l'appareil distinct (par exemple, --device=shiba-34 --device=tokay-36).

Contrôle de l'exécution et instabilité

Ancien paramètre (Test Lab/Flank) Paramètre DDP cible Logique de format/conversion
--async --async Booléen : Maps 1:1. La commande s'exécute de manière synchrone par défaut. Transmettez cette option pour revenir immédiatement au terminal. Quitte immédiatement après l'importation du fichier et affiche les ID d'opération et de session.
--num-flaky-test-attempts {R} --flaky-test-attempts {A} Integer. Nombre maximal de tentatives d'exécution par segment de test. Convertissez le nombre de nouvelles tentatives R en limite du nombre total de tentatives A : A = R + 1 (par défaut, 1).

Sortie et stockage

Ancien paramètre (Test Lab/Flank) Paramètre DDP cible Logique de format/conversion
--results-bucket --bucket-name Chaîne. Bucket Cloud Storage dans lequel les artefacts de test, y compris les fichiers d'entrée locaux, les fichiers de sortie de test et les enregistrements de codes temporels de segmentation intelligente, sont importés (gs://[PROJECT_ID]-devicerun par défaut, si non spécifié).
--results-dir Gérée automatiquement Non compatible. Les sous-chemins sont automatiquement organisés dans Cloud Storage sous automation/sessions/{session_id}/.
--directories-to-pull --paths-to-pull List. Fichiers ou répertoires à télécharger depuis l'appareil après l'exécution du test (DEVICE_PATH sur Android ; BUNDLE_ID:DEVICE_PATH sur iOS).

Configuration du partitionnement horizontal

Ancien paramètre (Test Lab/Flank) Paramètre DDP cible Logique de format/conversion
--num-uniform-shards {N} --sharding-option=uniform --uniform-sharding-count={N} Chaîne et Entier. La configuration combinée des options active la stratégie de segmentation uniforme et définit le nombre maximal de segments (plage de valeurs valide : 1 à 20 segments physiques, 1 à 200 segments virtuels).
Flanc --max-test-shards {N} --sharding-option=smart --smart-sharding-max-shard-count={N} Chaîne et Entier. La configuration combinée des options active la stratégie de segmentation intelligente et définit le nombre maximal de segments (plage de valeurs valide : 0 à 20 segments physiques, 0 à 200 segments virtuels).
Flanc --shard-time {S} --sharding-option=smart --smart-sharding-target-duration={S} OBLIGATOIRE Chaîne. Active le partitionnement intelligent avec un temps d'exécution cible (par exemple, 2m, 10m, 1h). Plage valide : de 2m à 1h.
Flanc --smart-flank-gcs-path --smart-sharding-record-name={name} --bucket-name={bucket} OBLIGATOIRE Chaîne. Nom du fichier YAML de l'enregistrement de segmentation (sans l'extension de fichier) dans --bucket-name sous smart-sharding/ dans Cloud Storage.

Options spécifiques à Android

Utilisez ce tableau pour mapper les anciens indicateurs gcloud firebase test android run et Flank Android à leurs nouveaux équivalents gcloud beta device-run sessions submit instrumentation :

Type de test Groupe de caractéristiques Ancien paramètre (firebase android/Flank) Paramètre DDP cible Logique de format/conversion
Android commun Paramètres et éléments principaux --app --apps List. Si plusieurs APK/AAB d'application sont fournis, transmettez-les tous à --apps dans l'ordre d'installation sur l'appareil. Le chemin d'accès peut être local ou dans Cloud Storage (gs://...).
Android commun Paramètres et éléments principaux --additional-apks --apps List. Fusionnez les valeurs de liste supplémentaires directement dans la liste --apps principale.
Android commun Paramètres et éléments principaux --obb-files --other-files-to-push Dictionnaire au format SOURCE=DEST. Transférez les fichiers OBB directement vers le chemin d'accès de l'appareil cible (/sdcard/Android/obb/{package_name}/).
Android commun Configuration et ciblage des appareils --device locale={L} --locale={L} Chaîne. Mappe les paramètres régionaux de l'appareil Maps avec le drapeau --locale de premier niveau (language-region, par exemple, --locale=en-US) vers lequel basculer l'appareil avant d'exécuter le test.
Android commun Configuration et ciblage des appareils --device orientation={O} --orientation={O} Chaîne. Mappe l'orientation de l'appareil sur l'option --orientation de premier niveau (portrait ou landscape).
Android commun Configuration et ciblage des appareils N/A --coordinates Chaîne. Simule les coordonnées de localisation GPS de l'appareil (par exemple, --coordinates=37.4220,-122.0841).
Android commun Contrôle de l'exécution et instabilité --grant-permissions Modération automatique Automatique. Les autorisations d'exécution sont accordées automatiquement par défaut (équivalent à --grant-permissions=all).
Android commun Sortie et stockage N/A --dumpsys Chaîne. Collectez l'état du système à l'aide de dumpsys (valeurs : always, on-failure).
Android commun Sortie et stockage N/A --bugreport Chaîne. Collectez un bugreport complet à partir de l'appareil (valeurs : always, on-failure).
Android commun Sortie et stockage --record-video --video Chaîne. Indique quand enregistrer une vidéo de l'écran de l'appareil pendant l'exécution du test. Les valeurs valides sont always ou on-failure.
Instrumentation Android Paramètres et éléments principaux --type=instrumentation sessions submit instrumentation La structure de la sous-commande détermine le type de test au lieu d'un flag --type.
Instrumentation Android Paramètres et éléments principaux --test --test OBLIGATOIRE Chaîne. Chemin d'accès à l'APK de test contenant les tests d'instrumentation, en local ou dans Cloud Storage.
Instrumentation Android Contrôle de l'exécution et instabilité --timeout --instrumentation-timeout Durée (ex. : 10m, 20s, 1h). Plage valide : de 1m à 3h (par défaut : 5m).
Instrumentation Android Contrôle de l'exécution et instabilité N/A --flaky-test-parallel-retry Booléen : Indique si les échecs de test doivent être réessayés en parallèle (la valeur par défaut est false pour l'exécution séquentielle).
Instrumentation Android Contrôle de l'exécution et instabilité N/A --flaky-test-retry-level Chaîne. Définit si les nouvelles tentatives doivent être effectuées au niveau de shard ou de chaque test (par défaut, shard).
Instrumentation Android Exécuteur de test et cibles --test-runner-class --test-runner-class Chaîne. Classe d'exécuteur de test d'instrumentation complète (par exemple, com.foo.MyRunner) à utiliser. Si elle n'est pas spécifiée, une classe d'exécuteur par défaut est déterminée en examinant le fichier manifeste de l'application.
Instrumentation Android Exécuteur de test et cibles --test-targets --test-targets Dictionnaire des cibles de test ou des filtres de cible à exécuter. Chaque cible doit être entièrement qualifiée avec le nom du package ou de la classe compatible avec des clés telles que package, notPackage, class, notClass, annotation, notAnnotation et size. Les formats testfile ou notTestfile ne sont pas acceptés.
Instrumentation Android Exécuteur de test et cibles --use-orchestrator --orchestrator-version Indique si vous devez utiliser Android Test Orchestrator. Prend auto (orchestrateur par défaut) ou une chaîne de version spécifique (par exemple, 1.6). Les versions disponibles peuvent être interrogées à l'aide de gcloud beta device-run software-versions list.
Instrumentation Android Exécuteur de test et cibles --environment-variables --additional-test-options Dictionnaire des options transmises à l'exécuteur de tests d'instrumentation. Les formats compatibles avec --test-targets ne sont pas autorisés ici.

Options spécifiques à iOS

Utilisez ce tableau pour mapper les anciens indicateurs iOS gcloud firebase test ios run et Flank à leurs nouveaux équivalents gcloud alpha device-run sessions submit xctest :

Type de test Groupe de caractéristiques Ancien paramètre (firebase ios/Flank) Paramètre DDP cible Logique de format/conversion
iOS courants Paramètres et éléments principaux --additional-ipas --additional-apps Liste des fichiers d'assistance .ipa à installer sur l'appareil avant l'exécution du test.
XCTest iOS uniquement Paramètres et éléments principaux --type=xctest sessions submit xctest La structure de la sous-commande détermine le type de test au lieu d'un flag --type (utilise gcloud alpha).
XCTest iOS uniquement Paramètres et éléments principaux --test --test OBLIGATOIRE Chaîne. Chemin d'accès au fichier ZIP contenant l'application iOS et les fichiers XCTest, en local ou dans Cloud Storage.
XCTest iOS uniquement Contrôle de l'exécution et instabilité --timeout --xctest-timeout Durée (ex. : 5m, 15m, 1h). Plage valide : de 1m à 1h (par défaut : 5m).
XCTest iOS uniquement Sortie et stockage --record-video --video Quand enregistrer une vidéo : always ou on-failure. Une vidéo est enregistrée pour chaque scénario de test d'UI (iOS 17 ou version ultérieure).
XCTest iOS uniquement Exécuteur de test et cibles --xctestrun-file --xctestrun-file Chaîne. Chemin d'accès à un fichier .xctestrun personnalisé, local ou dans Cloud Storage.
XCTest iOS uniquement Exécuteur de test et cibles --xcode-version --xcode-version Chaîne. ID de catalogue ou chaîne de version de Xcode à utiliser (par exemple, xcode-16-4 ou 16.4). Les versions disponibles peuvent être interrogées à l'aide de gcloud beta device-run software-versions list.

Commentaires et questions

Contactez-nous pour signaler des bugs, demander des fonctionnalités ou rejoindre notre forum de discussion.