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éeGoogle Cloud-first : 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 la plate-forme Developer Device pour découvrir les outils d'automatisation, les avantages, les principales différences et les 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).Ancien Firebase Test Lab :
--num-uniform-shards {N}DDP CLI :
--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 :2mà1h). - Définissez
--smart-sharding-record-name={record_name}(qui pointe vers l'enregistrement de suivi YAML dans--bucket-namesousautomation/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.yamlCLI 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
Étant donné que DDP ne se lance pas avec une interface utilisateur 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
Référence du mappage des indicateurs
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 composants principaux
| Ancien paramètre (Test Lab / Flank) | Paramètre DDP cible | Format / Logique de conversion |
|---|---|---|
--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://...). |
--test |
--test |
OBLIGATOIRE Chaîne. Chemin d'accès à l'APK de test contenant les tests d'instrumentation, en local ou dans Cloud Storage. |
--client-details |
--labels |
Dictionnaire de paires key=value à associer à la session de test. |
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 plusieurs indicateurs --device, chacun spécifiant un ID d'appareil distinct (par exemple, --device=shiba-34 --device=tokay-36). |
--device locale={L} |
--locale={L} |
Chaîne. Mappe les paramètres régionaux de l'appareil au drapeau --locale de premier niveau (language-region, par exemple --locale=en-US) pour définir l'état de l'appareil avant l'exécution du test. |
--device orientation={O} |
--orientation={O} |
Chaîne. Mappe l'orientation de l'appareil sur l'indicateur --orientation de niveau supérieur (portrait ou landscape). |
| N/A | --coordinates |
Chaîne. Simule les coordonnées GPS de l'appareil (par exemple, --coordinates=37.4220,-122.0841). |
Contrôle de l'exécution et instabilité
| Ancien paramètre (Test Lab / Flank) | Paramètre DDP cible | Format / Logique de conversion |
|---|---|---|
--num-flaky-test-attempts {R} |
--flaky-test-attempts {A} |
Nombre entier. Nombre maximal de tentatives d'exécution par segment de test. Convertissez le nombre de nouvelles tentatives R en nombre total de tentatives A : A = R + 1 (par défaut, la valeur est 1). |
| 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). |
| 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). |
--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. |
Exécuteur de test et cibles
| Ancien paramètre (Test Lab / Flank) | Paramètre DDP cible | Logique de format / conversion |
|---|---|---|
--environment-variables |
--additional-test-options |
Dictionnaire des options transmises à l'exécuteur de tests d'instrumentation. Les formats acceptés dans --test-targets ne sont pas autorisés ici. |
--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 et notTestfile ne sont pas acceptés. |
--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. |
--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 aucune classe de test n'est spécifiée, une classe de test par défaut est déterminée en examinant le fichier manifeste de l'application. |
--directories-to-pull |
--paths-to-pull |
List. Répertoires à télécharger depuis l'appareil après l'exécution du test. |
--other-files |
--other-files-to-push |
Dictionary. Liste SOURCE=DEST de fichiers auxiliaires séparés par une virgule à transférer sur l'appareil avant l'exécution du test. |
Sortie et stockage
| Ancien paramètre (Test Lab / Flank) | Paramètre DDP cible | Format / Logique de 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 temps 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}/. |
Configuration du partitionnement horizontal
| Ancien paramètre (Test Lab / Flank) | Paramètre DDP cible | Format / Logique de conversion |
|---|---|---|
--num-uniform-shards {N} |
--sharding-option=uniform --uniform-sharding-count={N} |
String et Integer. 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 pour les appareils physiques, 1 à 200 pour les appareils virtuels). |
Flanc --max-test-shards {N} |
--sharding-option=smart --smart-sharding-max-shard-count={N} |
String et Integer. La configuration combinée des indicateurs active la stratégie de sharding intelligent et définit le nombre maximal de shards (plage de valeurs valides : de 0 à 20 pour les shards physiques et de 0 à 200 pour les shards 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 d'enregistrement du partitionnement (sans l'extension de fichier) dans --bucket-name sous smart-sharding/ dans Cloud Storage. |
Options spécifiques à Android
Utilisez ce tableau pour faire correspondre les anciens indicateurs gcloud firebase test android run à leurs nouveaux équivalents device-run :
Ancien paramètre (firebase android) |
Paramètre DDP cible | Format / Logique de conversion |
|---|---|---|
--additional-apks |
--apps |
List. Fusionnez les valeurs de liste supplémentaires directement dans la liste --apps principale. |
| N/A | --bugreport |
Chaîne. Collectez un bugreport complet à partir de l'appareil (valeurs : always, on-failure). |
| N/A | --dumpsys |
Chaîne. Collectez l'état du système à l'aide de dumpsys (valeurs : always, on-failure). |
--timeout |
--instrumentation-timeout |
Durée (ex. : 10m, 20s, 1h). Plage valide : de 1m à 3h (valeur par défaut : 5m). |
--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. |
Options spécifiques à iOS
Utilisez ce tableau pour faire correspondre les anciens indicateurs gcloud firebase test ios run à leurs nouveaux équivalents device-run :
Ancien paramètre (firebase ios) |
Paramètre DDP cible | Format / Logique de conversion |
|---|---|---|
--test |
--test |
Chemin d'accès au fichier ZIP XCTest compilé. |
--device model={M},version={V} |
--device={M}-{V} |
Chaîne d'ID de l'appareil cible. |
--device locale={L} |
--locale={L} |
Chaîne de paramètres régionaux cibles (language-region, par exemple --locale=en-US). |
--timeout |
--xctest-timeout |
Durée (par exemple, 5m). Plage : de 1m à 1h. |
--xcode-version |
--xcode-version |
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. |
--results-bucket |
--bucket-name |
Bucket GCS de destination personnalisé. |
--async |
--async |
Synchrone par défaut, transmettez pour quitter immédiatement. |
--other-files |
--other-files-to-push |
Dictionnaire au format SOURCE=BUNDLE_ID:DEST. |
--directories-to-pull |
--paths-to-pull |
Liste au format BUNDLE_ID:DEVICE_PATH. |
--additional-ipas |
--additional-apps |
Liste des IPA d'assistance à installer avant le test. |
--xctestrun-file |
--xctestrun-file |
Chemin d'accès au fichier plist .xctestrun personnalisé. |
--num-flaky-test-attempts |
--flaky-test-attempts |
Nombre entier de nouvelles tentatives (par exemple, 3). |
--client-details |
--labels |
Paires clé/valeur (KEY=VALUE). |
Commentaires et questions
Contactez-nous pour signaler des bugs, demander des fonctionnalités ou rejoindre notre forum de discussion.