Ce guide explique comment exécuter un test d'instrumentation, Robo ou Game Loop à l'aide de la CLI gcloud .
Pour obtenir une liste complète des commandes gcloud
que vous pouvez utiliser avec votre application Android dans Test Lab, consultez la documentation de référence pour gcloud firebase test android
.
Avant que tu commences
Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet Android .
Étape 1 : Configurer l'interface de ligne de commande gcloud
- Téléchargez le SDK Google Cloud.
- Assurez-vous que votre installation est à jour :
gcloud components update
- Connectez-vous à l'interface de ligne de commande gcloud à l'aide de votre compte Google :
gcloud auth login
- Définissez votre projet Firebase dans gcloud, où PROJECT_ID est l'ID de votre projet Firebase :
gcloud config set project PROJECT_ID
Cela inclut l'outil CLI gcloud.
Étape 2. Vérifier 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 d'application Bloc-notes pour commencer à exécuter les commandes immédiatement. Utilisez le fichier binaire app-debug-unaligned.apk
et le fichier de tests d'instrumentation app-debug-test-unaligned.apk
, qui se trouvent dans NotePad/app/build/outputs/apk/
.
models list
: Obtenez une liste actuelle des appareils Android disponibles pour vous tester.gcloud firebase test android models list
Dans la sortie de la commande :
- La colonne
MODEL_ID
contient l'identifiant que vous pourrez utiliser ultérieurement pour exécuter des tests sur le modèle d'appareil. - La colonne
OS_VERSION_ID
contient les versions du système d'exploitation prises en charge par l'appareil.
Exemple de sortie
- La colonne
models describe
: obtenez plus d'informations sur unMODEL_ID
Android spécifique .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 interfaces binaires d'application (ABI) prises en charge, les dates de sortie et si l'appareil est physique ou virtuel.
versions list
: obtenez une liste des versions de système d'exploitation actuellement disponibles pour tester.gcloud firebase test android versions list
Vous pouvez utiliser un identifiant de l'une des deux premières colonnes de la sortie de la commande (
OS_VERSION_ID
etVERSION
) 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 notée dans la colonneTAGS
est utilisée.Exemple de sortie
locales list
: obtenez la liste actuelle des paramètres régionaux disponibles pour les tests.gcloud firebase test android versions list
La première colonne de la sortie de la commande,
LOCALE
, contient l'identifiant que vous pouvez 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ètre régional par défaut.
Étape 3. Exécutez votre test
Maintenant que vous connaissez la gamme de modèles d'appareils, de paramètres régionaux et de versions de système d'exploitation disponibles pour tester votre application, vous pouvez spécifier des appareils à l'aide de la commande gcloud firebase test android run
et de l'indicateur --device
pour exécuter des tests Robo ou d'instrumentation.
Exécuter un 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 exerce l'application en effectuant une analyse statique des différents chemins via l'interface utilisateur de l'application, puis parcourt l'application pour rechercher des plantages et d'autres problèmes potentiels.
Pour exécuter un test Robo, exécutez l'exemple de commande suivant :
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 \ --client-details matrixLabel="Example matrix label"
- Le paramètre
--type robo
est implicite si aucune valeur--type
n'est spécifiée. - Pour vous aider à identifier et à localiser vos matrices de test dans la console Firebase, vous pouvez utiliser l'indicateur facultatif
--client-details matrixLabel="Example matrix label"
pour étiqueter votre matrice de test. - Vous pouvez voir l'ensemble complet d'options de ligne de commande pour exécuter des tests en tapant :
gcloud help firebase test android run
.
Au lieu de spécifier 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é.
Pour savoir comment analyser les résultats du test Robo, consultez Analyser vos résultats de test .
Exécuter un test d'instrumentation
Utilisez maintenant l'outil de ligne de commande gcloud
pour exécuter les tests Espresso de l'application Bloc-notes sur les configurations d'appareils Android que vous avez spécifiées. Utilisez le type de test 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 --client-details matrixLabel="Example matrix label"
- Le paramètre d'instrumentation
--type
est implicite si un APK de test est spécifié avec--test
. - Pour vous aider à identifier et à localiser vos matrices de test dans la console Firebase, vous pouvez utiliser l'indicateur facultatif
--client-details matrixLabel="Example matrix label"
pour étiqueter votre matrice de test. - Vous pouvez voir l'ensemble complet d'options de ligne de commande pour exécuter des tests en tapant
gcloud help firebase test android run
.
Au lieu de spécifier 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.1 ou supérieur. Pour l'activer, utilisez gcloud firebase test android run
avec le
--use-orchestrator
. Pour le désactiver, utilisez le drapeau --no-use-orchestrator
.
Vous pouvez également contrôler la façon dont Test Lab exécute vos tests d'instrumentation à l'aide d'indicateurs supplémentaires qui ne sont pas affichés ci-dessus. Par exemple, vous pouvez utiliser l'indicateur --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-attempts
, qui spécifie le nombre de fois qu'une exécution de test doit être retentée si un ou plusieurs de ses cas de test échouer pour quelque raison que ce soit. 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 rapport de couverture de code EMMA et JaCoCo . Si l'un ou l'autre de ces outils est intégré à la version de votre application, vous pouvez obtenir un rapport de couverture de code pour les tests Test Lab en exécutant gcloud firebase test android run
avec quelques arguments supplémentaires. Si Android Test Orchestrator n'est pas activé, utilisez ce qui suit :
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/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Si vous générez des rapports de couverture de code tout en utilisant Android Test Orchestrator, modifiez vos variables d'environnement comme suit :
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Lorsque Test Lab a terminé d'exécuter vos tests, recherchez vos rapports de couverture de code dans Google Cloud Storage :
- Ouvrez le lien de la console Firebase que l'outil
gcloud
a imprimé au-dessus du tableau des résultats du test dans votre terminal. - Cliquez sur une exécution de test dans la liste de ce lien pour ouvrir la page de détails de cette exécution.
- Cliquez sur Résultats des tests pour accéder au bucket Cloud Storage avec les résultats des tests de cette exécution.
- 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écapitulatif basique de vos résultats de test est imprimé par l'outil gcloud :
La sortie de votre exécution de test de ligne de commande inclut également un lien pour afficher les résultats du test. Pour en savoir plus sur l'interprétation de ces résultats, consultez Analyser Firebase Test Lab pour les résultats Android .
Connexion personnalisée et saisie de texte avec test Robo
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 du compte de test que vous fournissez. Vous pouvez également utiliser ce paramètre pour fournir un texte d'entrée personnalisé pour d'autres champs de texte utilisés par votre application.
Pour compléter les champs de texte dans votre application, utilisez le paramètre --robo-directives
et fournissez une liste de paires key-value
séparées par des virgules, 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 spécifiques de l'interface utilisateur (par exemple, le bouton "Déconnexion"). Les 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 drapeaux disponibles
L'interface de ligne de commande gcloud de Test Lab propose plusieurs commandes et options qui vous permettent d'exécuter des tests avec différentes spécifications :
Drapeau Android Test Orchestrator : un drapeau pour activer Orchestrator, un outil qui vous permet d'exécuter chacun des tests de votre application dans sa propre invocation d'
Instrumentation
. Test Lab exécute toujours la dernière version d'Orchestrator.Drapeaux de test Game Loop : Un 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 de tests Game Loop avec Test Lab .
Indicateur de partitionnement uniforme (en version bêta) : un indicateur qui spécifie le nombre de partitions dans lesquelles vous souhaitez répartir uniformément les cas de test. Les fragments sont exécutés en parallèle sur des appareils distincts.
Indicateur de partitionnement 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 appareils distincts.
Indicateur de profils de trafic réseau (en version bêta) : indicateur qui spécifie le profil réseau utilisé par vos tests avec les appareils physiques. Les profils réseau émulent diverses conditions de réseau, ce qui vous permet de tester les performances de votre application sur des réseaux non fiables ou imprévisibles.
Scripter 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'attente de deux minutes et indique 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.
Codes de sortie de script 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 a été interrompu 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 ont échoué. |
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. |