Ce guide explique comment exécuter un test d'instrumentation, un test Robo ou une boucle de jeu à l'aide de la gcloud CLI.
Pour obtenir la liste complète des commandes gcloud
que vous pouvez utiliser,
avec votre application Android dans Test Lab, consultez le
documentation de référence sur gcloud firebase test android
.
Avant de commencer
Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet Android.
Étape 1 : Configurer gcloud CLI
- Télécharger le SDK Google Cloud
- Assurez-vous que votre installation est à jour:
gcloud components update
- Connectez-vous à la gcloud CLI à l'aide de votre compte Google:
gcloud auth login
- Définissez votre projet Firebase dans gcloud, où PROJECT_ID correspond à
ID de votre projet Firebase:
gcloud config set project PROJECT_ID
Cela inclut l'outil gcloud CLI.
É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 qui sont disponibles pour votre test.
Si vous le souhaitez, vous pouvez aussi télécharger l'exemple
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 trouve
dans le pays suivant : NotePad/app/build/outputs/apk/
.
models list
: obtenez la liste actuelle des appareils Android que vous pouvez tester par rapport à.gcloud firebase test android models list
Dans le résultat de la commande:
- La colonne
MODEL_ID
contient l'identifiant que vous pourrez utiliser ultérieurement pour exécuter des tests. en fonction du modèle de l'appareil. - La colonne "
OS_VERSION_ID
" contient les versions de systèmes d'exploitation compatibles par l'appareil.
Exemple de résultat :
- 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, le fabricant, les versions de l'OS du modèle de l'appareil, les niveaux d'API pris en charge, les interfaces binaires d'application (ABI) compatibles, les dates de sortie, et si l’appareil est physique ou virtuel.
versions list
: obtenez la liste des versions de l'OS actuellement disponibles pour les tests par rapport à.gcloud firebase test android versions list
Vous pouvez utiliser un identifiant issu de l'une des deux premières colonnes de commande de sortie (
OS_VERSION_ID
etVERSION
), pour exécuter ultérieurement des tests sur un Version de l'OS. Si vous ne spécifiez pas les versions d'OS Android à tester, la valeur par défaut indiquée dans la colonneTAGS
est utilisée.Exemple de résultat :
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 du résultat de la commande,
LOCALE
, contient l'identifiant que vous pourrez utiliser ultérieurement pour tester des paramètres régionaux. 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écuter le test
Maintenant que vous connaissez la gamme de modèles d'appareils, de paramètres régionaux et de versions d'OS 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 bugs dans votre application. Utilisez le test Robo pour effectuer un examen automatisé de l'interface utilisateur de votre application. Le test Robo exécute l'application en effectuant une analyse statique des différents chemins via l'interface utilisateur de l'application, puis explore l'application pour détecter les plantages et 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'option facultative
--client-details matrixLabel="Example matrix label"
pour étiqueter votre matrice de test. - Vous pouvez voir l'ensemble complet
des options de ligne de commande pour
en exécutant des tests en saisissant
gcloud help firebase test android run
.
Au lieu de spécifier ces arguments dans la ligne de commande, vous pouvez
et éventuellement spécifier vos arguments dans un fichier d'arguments au format YAML. Exécuter
gcloud topic arg-files
pour apprendre à utiliser cette fonctionnalité.
Pour savoir comment analyser les résultats du test Robo, consultez Analysez les résultats de vos tests.
Exécuter un test d'instrumentation
Utilisez maintenant l'outil de ligne de commande gcloud
pour exécuter les tests Espresso de l'application Notepad sur les configurations d'appareil 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, procédez comme suit :
vous pouvez utiliser l'option facultative
--client-details matrixLabel="Example matrix label"
pour étiqueter votre matrice de test. - Vous pouvez voir l'ensemble complet
des options de ligne de commande pour
en exécutant des tests en saisissant
gcloud help firebase test android run
.
Au lieu de spécifier ces arguments sur la ligne de commande, vous pouvez également les spécifier dans un fichier d'arguments au format YAML. Exécuter
gcloud topic arg-files
pour apprendre à utiliser cette fonctionnalité.
La CLI gcloud est compatible avec Android Test Orchestrator.
Orchestrator nécessite AndroidJUnitRunner version 1.1 ou ultérieure. Pour l'activer, utilisez
gcloud firebase test android run
avec la --use-orchestrator
. Pour la désactiver, utilisez l'option --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 non illustré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 déterminer si le test
qui a échoué était en fait irrégulier ou
et non à l'aide de l'option --num-flaky-test-attempts
, qui spécifie le nombre de
une nouvelle exécution de test si un ou plusieurs de ses scénarios de test
échouer pour quelque raison que ce soit. Pour en savoir plus, consultez gcloud firebase test android run.
Rapports sur la couverture du code pour les tests d'instrumentation
Test Lab est compatible avec les outils de création de rapports de couverture de code
EMMA et
JaCoCo Si vous disposez de l'un des outils
intégrés au build de votre application, vous pouvez obtenir un rapport de couverture de code pour
Test Lab tests en exécutant gcloud firebase test android run
avec des
d'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, accédez à vos rapports de couverture de code dans Google Cloud Storage:
- Ouvrez le lien vers la console Firebase que l'outil
gcloud
a imprimé au-dessus de dans votre terminal. - Cliquez sur une exécution de test dans la liste associée à ce lien pour ouvrir le page d'informations.
- Cliquez sur Résultats des tests pour accéder au bucket Cloud Storage contenant les résultats du test d'exécution.
- Ouvrez
artifacts/coverage.ec
pour consulter votre rapport de couverture de code.
Analyser les résultats de vos tests
Après quelques minutes, un résumé de base des résultats du test est imprimé par le Outil gcloud:
Le résultat de votre exécution de test en ligne de commande inclut également un lien permettant d'afficher le test résultats. 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 remplit automatiquement les écrans de connexion qui utilisent un compte Google
pour l'authentification, sauf si vous utilisez
--no-auto-google-login
. Il peut également effectuer des écrans de connexion personnalisés à l'aide des identifiants de compte de test que vous fournissez. Vous pouvez également utiliser ce paramètre pour fournir des
texte d'entrée pour les autres champs de texte utilisés par votre application.
Pour remplir les champs de texte dans votre application, utilisez le
--robo-directives
et fournissez une liste de paires key-value
séparées par une virgule, où
key
est le nom de ressource Android de l'élément d'interface utilisateur cible, et value
est
la chaîne de texte. Vous pouvez également utiliser cet indicateur pour indiquer à Robo d'ignorer des
Éléments d'interface utilisateur (par exemple, "déconnexion" ).
EditText
sont acceptés dans les éléments d'interface utilisateur WebView
, à l'exception des champs de texte.
Par exemple, vous pouvez utiliser le paramètre suivant pour les connexion:
--robo-directives username_resource=username,password_resource=password
Commandes et options disponibles
La gcloud CLI Test Lab propose plusieurs commandes et options qui vous permettent exécuter des tests avec des spécifications différentes:
Option Android Test Orchestrator : option permettant d'activer Orchestrator, un outil qui vous permet d'exécuter chacun des tests de votre application dans son propre appel de
Instrumentation
. Test Lab toujours exécute la dernière version d'Orchestrator.Indicateurs de test de boucle de jeu: Ensemble d'indicateurs de configuration qui activent et contrôlent une "démonstration " pour simuler les actions des joueurs dans les applications de jeu. En savoir plus sur la course à pied Tests de boucle de jeu avec Test Lab.
Indicateur de segmentation uniforme (en version bêta): Indicateur spécifiant le nombre de segments dans lesquels vous souhaitez répartir uniformément distribuer des scénarios de test. Les segments sont exécutés en parallèle sur des appareils distincts.
Indicateur de segmentation manuelle (en version bêta): Indicateur spécifiant un groupe de packages, de classes et/ou de scénarios de test à exécuter dans un segment (un groupe de scénarios de test). Les segments sont exécutés en parallèle appareils distincts.
Indicateur de profils de trafic réseau (en version bêta): Indicateur spécifiant le profil réseau que vos tests utilisent avec des données appareils. Les profils réseau émulent diverses conditions de réseau, ce qui permet de tester les performances de votre application sur des réseaux peu fiables ou imprévisibles.
Créer des scripts pour les commandes gcloud avec Test Lab
Vous pouvez utiliser des scripts shell ou des fichiers par lot pour automatiser les commandes de test d'applications mobiles. que vous exécuteriez sinon à l'aide de la ligne de commande gcloud. L'exemple de script bash suivant exécute un test d'instrumentation avec un délai avant expiration de deux minutes et indique si l'exécution du test s'est terminée correctement :
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 des scripts
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.
Rédiger des codes de sortie pour Test Lab
Exit code | Remarques |
---|---|
0 | Toutes les exécutions de test ont réussi. |
1 | Une erreur générale s'est produite. Causes possibles: un nom de fichier qui ne ou une erreur HTTP/réseau. |
2 | Le test a été interrompu, car des commandes ou des arguments inconnus ont été fournis. |
10 | Un ou plusieurs scénarios de test (classes ou méthodes de classe testées) dans un test l'exécution a échoué. |
15 | Firebase Test Lab n'a pas pu déterminer si la matrice de test a réussi ou en raison d'une erreur inattendue. |
18 | L'environnement de test n'est pas compatible avec cette exécution de test pour les raisons suivantes : des dimensions de test incompatibles. Cette erreur peut se produire si le niveau d'API Android sélectionné n'est pas compatible avec 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. |