Ce guide explique comment exécuter un test XCTest ou un test de boucle de jeu à l'aide de gcloud CLI.
Étape 1 : Configurez votre environnement Google Cloud SDK local
- Téléchargez le SDK Google Cloud.
- Assurez-vous que votre installation est à jour et qu'elle inclut la commande
gcloud firebase: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 est l'ID de votre projet Firebase :
gcloud config set project PROJECT_ID
Cela inclut l'outil gcloud CLI.
Étape 2 : Exécutez votre test
Exécuter un test XCTest
Importez le fichier .zip de votre test en exécutant la commande suivante (si vous n'avez pas encore empaqueté votre application, consultez Empaqueter votre XCTest) :
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
Choisissez les dimensions de votre test.
Test Lab vous permet d'exécuter des tests sur différentes versions d'iOS, appareils, orientations d'écran et paramètres régionaux. Ces configurations sont appelées dimensions de test. Pour afficher les options de chaque dimension (par exemple, les versions Xcode compatibles avec la version iOS de l'appareil), remplacez
dimensionparmodels,versionsoulocalesdans la commande suivante :gcloud firebase test ios dimension list
L'orientation de l'écran est un peu plus simple, car ses seules options sont
portraitetlandscape.Parcourez la liste des dimensions de test et sélectionnez quelques combinaisons sur lesquelles vous souhaitez exécuter votre test. Consultez la page Plans tarifaires pour connaître le nombre maximal de combinaisons que vous pouvez exécuter par jour.
Une fois que vous avez choisi un ensemble de dimensions de test, vous pouvez demander à Test Lab d'exécuter vos tests à l'aide de la commande
firebase test ios run. Pour chaque combinaison de dimensions de test que vous souhaitez tester, incluez un flag--devicedistinct :gcloud firebase test ios run --test PATH/TO/MyTests.zip \ --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \ --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \ etc...
Il est possible que votre test échoue en raison d'une incompatibilité entre la version Xcode avec laquelle le test a été créé et la version Xcode par défaut utilisée par Test Lab. Pour spécifier une version d'Xcode compatible pour votre test, utilisez l'option
--xcode-version:gcloud firebase test ios run --test PATH/TO/MyTests.zip \ --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \ --xcode-version=15
Pour vous aider à identifier et à localiser vos matrices de test dans la console Firebase, vous pouvez éventuellement ajouter un libellé à votre matrice de test à l'aide de l'option
--client-details matrixLabel="<label>"dans l'exemple suivant :gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \ --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \ --client-details matrixLabel="my label"
Tester les droits d'accès spéciaux
Pour tester les droits d'accès nécessitant un ID d'application explicite, vous pouvez définir l'option --test-special-entitlements. Test Lab signe à nouveau l'application avec un nouvel identifiant du bundle pour prendre en charge les droits d'accès spéciaux. Assurez-vous donc qu'aucune ressource de votre fichier ZIP ne contient de références directes à l'identifiant du bundle de l'application.
- Notifications push
apns-environment - VPN personnel
com.apple.developer.networking.vpn.api
Pour autoriser les requêtes de notification push, les utilisateurs peuvent créer des jetons Web JSON à l'aide de la clé de signature privée, de l'ID de clé C7FD9DJAA8 et de l'ID d'équipe 9CKCGNNUQN. Les jetons générés sont valides pendant une heure et doivent être actualisés toutes les 60 minutes. En savoir plus sur l' établissement d'une connexion basée sur un jeton aux APN.
Groupes d'applicationsLes ID de groupe d'applications sont universellement uniques. Cela signifie que lorsque nous resignons les applications utilisateur, nous ne pouvons utiliser que l'ID de groupe d'applications associé au compte de développeur Test Lab. Si votre test repose sur des groupes d'applications, il échouera.
Exécuter un test de boucle de jeu
Exécutez la commande gcloud beta firebase test ios run et utilisez les options suivantes pour configurer l'exécution :
| Options pour les tests de boucle de jeu | |
|---|---|
--type
|
Obligatoire : spécifie le type de test iOS que vous souhaitez exécuter. Vous pouvez saisir les types de test |
--app
|
Obligatoire : chemin absolu (GCS ou système de fichiers) au fichier IPA de votre application. Cette option n'est valide que lors de l'exécution de tests de boucle de jeu. |
--scenario-numbers
|
Boucles (ou scénarios) que vous souhaitez exécuter dans votre application. Vous pouvez saisir une boucle, une liste de boucles ou une plage de boucles. La valeur par défaut est 1.
Par exemple, |
--device-model
|
L'appareil physique sur lequel vous souhaitez exécuter votre test (découvrez les appareils disponibles que vous pouvez utiliser). |
--timeout
|
Durée maximale d'exécution du test. Vous pouvez saisir un entier pour représenter la durée en secondes, ou un entier et une énumération pour représenter la durée sous la forme d'une unité de temps plus longue. Exemple :
|
Par exemple, la commande suivante exécute un test de boucle de jeu qui exécute les boucles 1, 4, 6, 7 et 8 sur un iPhone 8 Plus :
gcloud beta firebase test ios run --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8 --device-model=iphone8plus
Pour en savoir plus sur la gcloud CLI, consultez la documentation de référence.
Étape 3 (facultative) : Automatisez les futurs tests que vous créez
Créer des scripts pour les 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. Cet exemple de script bash exécute un test XCTest avec un délai avant expiration de deux minutes et indique si l'exécution du test a réussi :
if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
echo "Test matrix successfully finished"
else
echo "Test matrix exited abnormally with non-zero exit code: " $?
fi
Codes de sortie du 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.
| 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 n'existe pas ou une erreur HTTP/réseau. |
| 2 | Le test s'est arrêté, 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) d'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. |
| 19 | La matrice de test a été annulée par l'utilisateur. |
| 20 | Une erreur d'infrastructure de test s'est produite. |
Étape 4 : Examinez les résultats du test
Lorsque le test commence, vous recevez un lien vers la page Résultats du test. L'exécution des tests peut prendre plusieurs minutes, en fonction du nombre de configurations différentes que vous avez sélectionnées et de la durée avant expiration définie pour vos tests. Une fois les tests exécutés, vous pouvez en examiner les résultats. Consultez Analyser les résultats de Firebase Test Lab pour en savoir plus sur l'interprétation des résultats de vos tests.
Étape suivante
Consultez la documentation du Google Cloud SDK pour découvrir les options de test en disponibilité générale ou en bêta.