Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Commencez les tests avec la CLI gcloud

Ce guide décrit comment exécuter une instrumentation, Robo, ou jeu test de boucle à l' aide de la CLI gcloud .

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

Avant que tu commences

Si vous avez pas déjà, ajoutez Firebase à votre projet Android .

Étape 1. Configurer la CLI gcloud

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

  3. Assurez - vous que votre installation est mise à jour:
    gcloud components update
    
  4. Connectez - vous à la CLI gcloud en utilisant 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
    

Étape 2. Vérifiez les appareils de test disponibles

Utilisez les commandes gcloud suivantes pour afficher les appareils de test et les paramètres régionaux disponibles pour votre test.

En option, vous pouvez également télécharger l'exemple application Bloc - notes pour commencer à courir les commandes tout de suite. Utilisez le fichier binaire app-debug-unaligned.apk et des tests d' instrumentation fichier app-debug-test-unaligned.apk , qui sont situés dans NotePad/app/build/outputs/apk/ .

  • models list : Obtenir une liste des appareils Android disponibles pour vous pour effectuer le test.

    gcloud firebase test android models list
    

    Dans la sortie de la commande :

    • La colonne MODEL_ID contient l'identifiant , vous pouvez utiliser plus tard pour exécuter des tests sur le modèle de l' appareil.
    • La colonne OS_VERSION_ID contient les versions du système d'exploitation pris en charge par le dispositif.

    Exemple de sortie

    gcloud firebase test android models list output

  • models describe : Plus d' informations sur un Android spécifique MODEL_ID .

    gcloud firebase test android models describe MODEL_ID
    

    La sortie contient la marque du modèle d'appareil, le fabricant, les versions du système d'exploitation, les niveaux d'API pris en charge, les dates de sortie et si l'appareil est physique ou virtuel.

  • versions list des versions list : Obtenir une liste des versions OS actuellement disponibles pour effectuer le test.

    gcloud firebase test android versions list
    

    Vous pouvez utiliser un identifiant de l'une des deux premières colonnes de sortie de commande ( OS_VERSION_ID et VERSION ), pour effectuer des tests plus tard contre une version Android OS. Si vous ne spécifiez pas les versions Android OS pour effectuer le test, la valeur par défaut noté sous la TAGS colonne est utilisée.

    Exemple de sortie

    gcloud android versions list

  • locales list des locales list : Obtenez la liste actuelle des lieux disponibles pour effectuer le test.

    gcloud firebase test android versions list
    

    La première colonne de la sortie de commande, LOCALE , contient l'identifiant que vous pouvez utiliser plus tard pour exécuter des tests contre un lieu. Si vous ne spécifiez pas les paramètres régionaux à tester, l'anglais est utilisé comme paramètre régional par défaut.

Exécuter des tests

Maintenant que vous connaissez la gamme de modèles de périphériques, locales et versions OS disponibles pour tester votre application, vous pouvez spécifier les périphériques en utilisant l' gcloud firebase test android run commande et le --device drapeau pour exécuter des tests Robo ou instrumentation.

Exécution du test Robo

Même si vous n'avez pas de tests 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 teste l'application en effectuant une analyse statique des différents chemins via l'interface utilisateur de l'application, puis en parcourant l'application pour rechercher les plantages et 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 --type robo paramètre est implicite si aucune --type valeur est spécifiée. Vous pouvez voir l'ensemble complet d'options de ligne de commande pour l' exécution des 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écuter gcloud topic arg-files apprendre à utiliser cette fonction.

Voir la Analyze résultats de votre test section pour apprendre à enquêter sur les résultats des tests du test Robo.

Exécuter vos tests d'instrumentation

Maintenant , utilisez le gcloud outil de ligne de commande pour exécuter l'application Bloc - notes de Espresso tests sur vos configurations d'appareils Android spécifiées, en utilisant l' instrumentation type de test 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

L' --type instrumentation paramètre 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écuter gcloud topic arg-files apprendre à utiliser cette fonction.

La CLI gcloud supporte test Android Orchestrator . Orchestrator nécessite AndroidJUnitRunner v1.0 ou supérieur. Pour l' activer, l' utilisation gcloud firebase test android run avec le
--use-orchestrator drapeau. Pour désactiver l'utilisation --no-use-orchestrator drapeau.

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

Rapports de couverture de code pour les tests d'instrumentation

Test Lab prend en charge des outils de reporting couverture de code EMMA et JaCoCo . Si vous avez soit l' outil intégré dans la construction de votre application, vous pouvez obtenir un rapport de couverture de code pour les tests de laboratoire de test en exécutant le gcloud firebase test android run de gcloud firebase test android run commande 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 le gcloud outil imprimé au- dessus de la table de résultats de test dans votre terminal.
  2. Cliquez sur une exécution de test dans la liste sur ce lien pour ouvrir la page de détails de cette exécution.
  3. Cliquez sur les résultats de test pour aller dans le seau Cloud Storage avec les résultats des tests 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 la façon d'interpréter ces résultats, voir Analyse Test Lab Firebase Résultats pour Android .

Connexion personnalisée et saisie de texte avec test Robo

Test Robo effectue automatiquement la connexion dans les écrans qui utilisent un compte Google pour l' authentification, sauf si vous utilisez l' --no-auto-google-login paramètre. 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 compléter les champs de texte dans votre application, utilisez le --robo-directives paramètres et fournir une liste de séparés par des virgules key-value paires, où la key est le nom de la 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 spécifiques de l'interface utilisateur (par exemple, le bouton « déconnexion »). EditText champs sont pris en charge mais pas les champs de texte dans WebView éléments d' interface.

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

La CLI Test Lab gcloud dispose de plusieurs commandes et indicateurs qui vous permettent d'exécuter des tests avec différentes spécifications :

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

  • Jeu de drapeaux test de boucle : Un ensemble de drapeaux de configuration qui permettent et contrôlent un « mode démo » pour les actions des joueurs simulent dans les applications de jeu. En savoir plus sur l' exécution des tests de jeu en boucle avec Test Lab .

  • Uniforme drapeau Sharding (en version bêta) : Un drapeau qui indique le nombre de tessons dans lequel vous souhaitez répartir uniformément les cas de test. Les fragments sont exécutés en parallèle sur des appareils distincts.

  • Manuel drapeau Sharding (en version bêta) : Un indicateur qui spécifie un groupe de packages, classes et / ou des cas de test à exécuter dans un tesson (un groupe de cas de test). Les fragments sont exécutés en parallèle sur des appareils distincts.

  • Profils de trafic réseau drapeau (en version bêta) : Un indicateur qui spécifie quel profil réseau vos tests utilisent des dispositifs physiques. Les profils de réseau émulent diverses conditions de réseau, vous permettant de tester les performances de votre application sur des réseaux peu fiables ou imprévisibles.

Scripter des commandes gcloud avec Test Lab

Vous pouvez utiliser des scripts shell ou des fichiers batch 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'attente de deux minutes et signale si l'exécution du test s'est terminée 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 batch.

Scripting des codes de sortie pour Test Lab

Code de sortie Remarques
0 Toutes les exécutions de test ont réussi.
1 Une panne générale s'est produite. 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 scénarios de test (classes testées ou méthodes de classe) au sein d'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.