Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Commencez à tester avec la CLI gcloud

Firebase Test Lab fournit une infrastructure basée sur le cloud pour tester les applications Android, y compris une intégration complète avec l' interface de ligne de commande (CLI) gcloud. Ce document couvre l'installation et la configuration requises pour commencer à utiliser Test Lab à partir de l'interface de ligne de commande gcloud.

Pour une liste complète des commandes gcloud vous pouvez utiliser avec votre application Android dans Test Lab, consultez la documentation de référence de gcloud firebase test android .

Créer un projet Firebase

Si vous n'avez pas de projet Firebase pour votre application, accédez à la console Firebase et cliquez sur Créer un nouveau projet pour en créer un maintenant. Vous aurez besoin de droits de propriété ou de modification dans votre projet.

Vous pouvez utiliser Test Lab pour un nombre limité d'exécutions de tests quotidiens sur les plans Spark et Flame. Pour utiliser Test Lab sans limites de quota quotidiennes, vous devez passer au plan Firebase Blaze.

Configurer la CLI gcloud

  1. Téléchargez le SDK Google Cloud.
  2. Cela inclut l'outil CLI gcloud.

  3. Assurez-vous que votre installation est à jour:
    gcloud components update
    
  4. Connectez-vous à l'interface de ligne de commande gcloud à l'aide de votre compte Google:
    gcloud auth login
    
  5. Définissez votre projet Firebase dans gcloud, où PROJECT_ID est l'ID de votre projet Firebase:
    gcloud config set project PROJECT_ID
    

Configurez votre test

Dans cet exemple, vous exécuterez des tests sur une simple application Android de prise de notes appelée Bloc-notes.

  1. Téléchargez le fichier APK binaire pour l'application Notepad ( app-debug-unaligned.apk ) et ses tests d'instrumentation correspondants ( app-debug-test-unaligned.apk ) fournis dans le répertoire NotePad / app / build / sorties / apk / du bloc - notes .zip .

  2. Obtenez la liste actuelle des appareils Android disponibles pour effectuer des tests, comme suit:

     
    $ gcloud firebase test android models list
     
    gcloud firebase test android models list output La première colonne de la sortie de la commande, MODEL_ID , contient l'identifiant que vous pouvez utiliser ultérieurement pour exécuter des tests sur un modèle spécifique. La colonne OS_VERSION_ID répertorie les versions du système d'exploitation prises en charge par ce périphérique. Si vous ne spécifiez pas le (s) MODEL_ID (s) à tester, la valeur par défaut indiquée sous la colonne TAGS est utilisée.

  3. En savoir plus sur un MODEL_ID Android MODEL_ID avec la commande firebase test android models describe , comme suit:

     
    $ gcloud firebase test android models describe Nexus5
     
    L'exemple de commande ci-dessus fournit des informations détaillées sur le modèle Nexus5 , y compris la marque, le fabricant et les niveaux d'API pris en charge, et Nexus5 si le modèle est physique ou virtuel.

  4. Obtenez la liste actuelle des versions de système d'exploitation Android disponibles pour tester:

     
    $ gcloud firebase test android versions list
     
    gcloud android versions list Vous pouvez utiliser un identifiant de l'une des deux premières colonnes de la sortie de commande ( OS_VERSION_ID et VERSION ), pour exécuter ultérieurement des tests sur une version du système d'exploitation Android. Si vous ne spécifiez pas les versions du système d'exploitation Android à tester, la valeur par défaut indiquée sous la colonne TAGS est utilisée.

  5. Obtenez la liste actuelle des paramètres régionaux disponibles pour effectuer des tests:

     
    $ gcloud firebase test android locales list
     
    La première colonne de la sortie de la commande, LOCALE , contient l'identifiant que vous pourrez utiliser ultérieurement pour exécuter des tests sur une locale. Si vous ne spécifiez pas les paramètres régionaux à tester, l'anglais est utilisé comme paramètres régionaux par défaut. La sortie de la commande n'est pas affichée ici car des centaines de paramètres régionaux sont disponibles.

Exécution de tests

Maintenant que vous connaissez la gamme de modèles d'appareil, de versions de système d'exploitation et de paramètres régionaux disponibles à utiliser lors du test de votre application, vous pouvez utiliser ces informations pour spécifier des appareils de test à l'aide de la commande gcloud firebase test android run et de l'indicateur --device . Cette commande et cet indicateur sont utilisés que vous utilisiez le test Robo pour tester automatiquement votre application ou que vous exécutiez des tests d'instrumentation écrits spécifiquement pour tester votre application.

Exécution du test Robo

Même si vous n'avez aucun test d'instrumentation, vous pouvez toujours rechercher des bogues dans votre application. Utilisez le test Robo pour effectuer un examen automatisé de l'interface utilisateur de votre application. Le test Robo exerce l'application en effectuant une analyse statique des différents chemins via l'interface utilisateur de l'application, puis en explorant l'application pour trouver des plantages et d'autres problèmes potentiels.

Commençons par exécuter un exemple de commande:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s

Le paramètre --type robo est implicite si aucune valeur --type n'est spécifiée. Vous pouvez voir l'ensemble complet des options de ligne de commande pour exécuter les tests en tapant: gcloud help firebase test android run . Au lieu de spécifier tous ces arguments sur la ligne de commande, vous pouvez éventuellement spécifier vos arguments dans un fichier d'arguments au format YAML. Exécutez gcloud topic arg-files pour apprendre à utiliser cette fonctionnalité.

Consultez la section Analyser vos résultats de test pour savoir comment analyser les résultats de test du test Robo.

Exécution de vos tests d'instrumentation

Utilisez maintenant l'outil de ligne de commande gcloud pour exécuter les tests Espresso de l'application Notepad sur les configurations de votre appareil Android spécifiées, en utilisant le type de test d' instrumentation pour exécuter les tests dans app-debug-test-unaligned.apk comme suit:

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape

Le paramètre d' --type instrumentation est implicite si un APK de test a été spécifié avec --test . Au lieu de spécifier tous ces arguments sur la ligne de commande, vous pouvez éventuellement spécifier vos arguments dans un fichier d'arguments au format YAML. Exécutez gcloud topic arg-files pour apprendre à utiliser cette fonctionnalité.

L'interface de ligne de commande gcloud prend en charge Android Test Orchestrator . Orchestrator nécessite AndroidJUnitRunner v1.0 ou supérieur. Pour l'activer, utilisez gcloud firebase test android run avec le
--use-orchestrator . Pour le désactiver, utilisez l'indicateur --no-use-orchestrator .

Remarque: vous pouvez également contrôler la manière dont Test Lab exécute vos tests d'instrumentation en utilisant des indicateurs supplémentaires qui ne sont pas affichés ci-dessus. Par exemple, vous pouvez utiliser l' --test-targets pour tester une seule classe ou une méthode de classe utilisée par votre APK de test. Vous pouvez également savoir si votre test qui a échoué était réellement floconneux ou non en utilisant l'indicateur '--num-flaky-test-tentatives', qui spécifie le nombre de fois qu'une exécution de test doit être relancée si un ou plusieurs de ses les cas de test échouent pour une raison quelconque. Pour en savoir plus, consultez gcloud firebase test android run .

Rapports de couverture de code pour les tests d'instrumentation

Test Lab prend en charge les outils de reporting de couverture de code EMMA et JaCoCo . Si l'un de ces outils est intégré à la version de votre application, vous pouvez obtenir un rapport de couverture du code pour les tests de laboratoire de test en exécutant la commande gcloud firebase test android run avec les arguments suivants:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model= TestDevice ,version= AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" \
  --directories-to-pull /sdcard

Lorsque Test Lab a terminé d'exécuter vos tests, recherchez vos rapports de couverture de code dans Google Cloud Storage:

  1. Ouvrez le lien de la console Firebase que l'outil gcloud imprimé au-dessus du tableau des résultats de test dans votre terminal.
  2. Cliquez sur une exécution de test dans la liste de ce lien pour ouvrir la page de détails de cette exécution.
  3. Cliquez sur Résultats du test pour accéder au bucket Google Cloud Storage avec les résultats du test de cette exécution.
  4. Ouvrez artifacts/coverage.ec pour voir votre rapport de couverture de code.

Analysez les résultats de vos tests

Après quelques minutes, un résumé de base de vos résultats de test est imprimé par l'outil gcloud:

Command test results

La sortie de votre test de ligne de commande comprend également un lien pour afficher les résultats du test. Pour en savoir plus sur l'interprétation de ces résultats, consultez Analyse des résultats de Firebase Test Lab pour Android .

Connexion personnalisée et saisie de texte avec Robo test

Le test Robo complète automatiquement les écrans de connexion qui utilisent un compte Google pour l'authentification, sauf si vous utilisez le paramètre --no-auto-google-login . Il peut également remplir des écrans de connexion personnalisés à l'aide des informations d'identification de compte de test que vous fournissez. Vous pouvez également utiliser ce paramètre pour fournir un texte de saisie personnalisé pour d'autres champs de texte utilisés par votre application.

Pour remplir les champs de texte dans votre application, utilisez le paramètre --robo-directives et fournissez une liste séparée par des virgules de paires key-value , où la key est le nom de ressource Android de l'élément d'interface utilisateur cible et la value est la chaîne de texte . Vous pouvez également utiliser cet indicateur pour indiquer à Robo d'ignorer des éléments d'interface utilisateur spécifiques (par exemple, le bouton «déconnexion»). EditText champs EditText sont pris en charge mais pas les champs de texte dans les éléments de l'interface utilisateur WebView .

Par exemple, vous pouvez utiliser le paramètre suivant pour une connexion personnalisée:

 --robo-directives username_resource=username,password_resource=password
 

Commandes et indicateurs disponibles

L'interface de ligne de commande gcloud Test Lab dispose de plusieurs commandes et indicateurs disponibles qui vous permettent d'exécuter des tests avec des spécifications différentes:

  • Indicateur Android Test Orchestrator : un indicateur pour activer Orchestrator, un outil qui vous permet d'exécuter chacun des tests de votre application dans son propre appel d' Instrumentation . Test Lab exécute toujours la dernière version d'Orchestrator.

  • Drapeaux de test de la boucle de jeu : ensemble de drapeaux de configuration qui activent et contrôlent un "mode démo" pour simuler les actions des joueurs dans les applications de jeu. En savoir plus sur l'exécution des tests Game Loop avec Test Lab .

  • Indicateur de partage uniforme (en version bêta) : indicateur qui spécifie le nombre de fragments dans lesquels vous souhaitez répartir uniformément les cas de test. Les fragments sont exécutés en parallèle sur des périphériques séparés.

  • Indicateur de partage manuel (en version bêta) : indicateur qui spécifie un groupe de packages, de classes et / ou de cas de test à exécuter dans une partition (un groupe de cas de test). Les fragments sont exécutés en parallèle sur des périphériques séparés.

  • Indicateur de profils de trafic réseau (en version bêta) : indicateur qui spécifie le profil de réseau utilisé par vos tests avec les appareils physiques. Les profils réseau émulent une variété de conditions de réseau, vous permettant de tester les performances de votre application sur des réseaux peu fiables ou imprévisibles.

Script des commandes gcloud avec Test Lab

Vous pouvez utiliser des scripts shell ou des fichiers de commandes pour automatiser les commandes de test d'applications mobiles que vous exécuteriez autrement à l'aide de la ligne de commande gcloud. L'exemple de script bash suivant exécute un test d'instrumentation avec un délai d'expiration de deux minutes et signale si le test s'est terminé avec succès:

if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Codes de sortie de script

Test Lab fournit plusieurs codes de sortie que vous pouvez utiliser pour mieux comprendre les résultats des tests que vous exécutez à l'aide de scripts ou de fichiers de commandes.

Script de codes de sortie pour Test Lab

Code de sortie Remarques
0 Toutes les exécutions de test ont réussi.
1 Un échec général s'est produit. Les causes possibles incluent: un nom de fichier qui n'existe pas ou une erreur HTTP / réseau.
2 Le test s'est terminé car des commandes ou des arguments inconnus ont été fournis.
dix Un ou plusieurs cas de test (classes ou méthodes de classe testées) dans une exécution de test n'ont pas réussi.
15 Firebase Test Lab n'a pas pu déterminer si la matrice de test a réussi ou échoué en raison d'une erreur inattendue.
18 L'environnement de test pour cette exécution de test n'est pas pris en charge en raison de dimensions de test incompatibles. Cette erreur peut se produire si le niveau d'API Android sélectionné n'est pas pris en charge par le type d'appareil sélectionné.
19 La matrice de test a été annulée par l'utilisateur.
20 Une erreur d'infrastructure de test s'est produite.