- Ressource : TestMatrix
- InfoClient
- ClientInfoDétail
- Spécifications du test
- Configuration du test
- Fichier de périphérique
- Fichier Obb
- Référence de fichier
- Fichier régulier
- Apk
- Compte
- GoogleAuto
- Variable d'environnement
- Configuration Systrace
- IosTestSetup
- Fichier de périphérique Ios
- AndroidInstrumentationTest
- AppBundle
- Option Orchestrateur
- Option de partage
- PartageUniforme
- Partage manuel
- TestTargetsForShard
- Partage intelligent
- AndroidRoboTest
- RoboDirective
- Type d'action robot
- Mode Robo
- RoboStartingIntent
- LauncherActivityIntent
- StartActivityIntent
- AndroidTestBoucle
- IosXcTest
- IosTestBoucle
- EnvironnementMatrice
- AndroidMatrice
- Liste des appareils Android
- Appareil Android
- Liste des appareils Ios
- Appareil Ios
- TestExécution
- Tesson
- Environnement
- État de test
- OutilRésultatsÉtape
- Détails du test
- Stockage des résultats
- GoogleCloudStorage
- OutilRésultatsHistorique
- OutilRésultatsExécution
- InvalidMatrixDetails
- Résumé des résultats
- Méthodes
Ressource : TestMatrix
TestMatrix capture tous les détails d'un test. Il contient la configuration de l'environnement, la spécification des tests, les exécutions des tests, ainsi que l'état et les résultats globaux.
Représentation JSON |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
Des champs | |
---|---|
testMatrixId | Sortie uniquement. Identifiant unique défini par le service. |
projectId | Le projet cloud qui possède la matrice de test. |
clientInfo | Informations sur le client qui a invoqué le test. |
testSpecification | Requis. Comment exécuter le test. |
environmentMatrix | Requis. Les appareils sur lesquels les tests sont exécutés. |
testExecutions[] | Sortie uniquement. Liste des exécutions de tests que le service crée pour cette matrice. |
resultStorage | Requis. Où sont écrits les résultats de la matrice. |
state | Sortie uniquement. Indique la progression actuelle de la matrice de test. |
timestamp | Sortie uniquement. Heure à laquelle cette matrice de test a été initialement créée. Un horodatage au format RFC3339 UTC "Zulu", avec une résolution en nanosecondes et jusqu'à neuf chiffres fractionnaires. Exemples : |
invalidMatrixDetails | Sortie uniquement. Décrit pourquoi la matrice est considérée comme non valide. Utile uniquement pour les matrices à l’état INVALID. |
flakyTestAttempts | Nombre de fois qu'une TestExecution doit être réessayée si un ou plusieurs de ses scénarios de test échouent pour une raison quelconque. Le nombre maximum de rediffusions autorisées est de 10. La valeur par défaut est 0, ce qui implique aucune réexécution. |
outcomeSummary | Sortie uniquement. Le résultat global du test. Défini uniquement lorsque l'état de la matrice de test est TERMINÉ. |
failFast | Si c'est vrai, une seule tentative au maximum sera effectuée pour exécuter chaque exécution/fragment dans la matrice. Les tentatives de test instables ne sont pas affectées. Normalement, 2 tentatives ou plus sont effectuées si un problème potentiel d'infrastructure est détecté. Cette fonctionnalité est destinée aux charges de travail sensibles à la latence. L'incidence des échecs d'exécution peut être considérablement plus élevée pour les matrices à échec rapide et la prise en charge est plus limitée en raison de cette attente. |
InfoClient
Informations sur le client qui a invoqué le test.
Représentation JSON |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
Des champs | |
---|---|
name | Requis. Nom du client, tel que gcloud. |
clientInfoDetails[] | La liste des informations détaillées sur le client. |
ClientInfoDétail
Paire clé-valeur d'informations détaillées sur le client qui a appelé le test. Exemples : {'Version', '1.0'}, {'Release Track', 'BETA'}.
Représentation JSON |
---|
{ "key": string, "value": string } |
Des champs | |
---|---|
key | Requis. La clé des informations détaillées sur le client. |
value | Requis. La valeur des informations détaillées sur le client. |
Spécifications du test
Une description de la façon d'exécuter le test.
Représentation JSON |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
Des champs | |
---|---|
testTimeout | Durée maximale pendant laquelle une exécution de test est autorisée à s'exécuter avant d'être automatiquement annulée. La valeur par défaut est de 5 minutes. Une durée en secondes avec jusqu'à neuf chiffres fractionnaires, se terminant par « |
disableVideoRecording | Désactive l'enregistrement vidéo. Peut réduire la latence des tests. |
disablePerformanceMetrics | Désactive l’enregistrement des mesures de performances. Peut réduire la latence des tests. |
setup du champ Union. Exigences de configuration des tests. setup ne peut être que l'un des éléments suivants : | |
testSetup | Testez les exigences de configuration pour Android, par exemple les fichiers à installer, les scripts d'amorçage. |
iosTestSetup | Testez les exigences de configuration pour iOS. |
test sur le terrain de l'Union. Requis. Le type de test à exécuter. test ne peut être qu’un des éléments suivants : | |
androidInstrumentationTest | Un test d'instrumentation Android. |
androidRoboTest | Un test robot Android. |
androidTestLoop | Une application Android avec une boucle de test. |
iosXcTest | Un XCTest iOS, via un fichier .xctestrun. |
iosTestLoop | Une application iOS avec une boucle de test. |
Configuration du test
Une description de la façon de configurer l'appareil Android avant d'exécuter le test.
Représentation JSON |
---|
{ "filesToPush": [ { object ( |
Des champs | |
---|---|
filesToPush[] | Liste des fichiers à transmettre à l'appareil avant de démarrer le test. |
directoriesToPull[] | Liste des répertoires sur l'appareil à télécharger sur GCS à la fin du test ; il doit s'agir de chemins absolus sous /sdcard, /storage ou /data/local/tmp. Les noms de chemin sont limités aux caractères az AZ 0-9 _ - . + et / Remarque : Les chemins /sdcard et /data seront rendus disponibles et traités comme des substitutions de chemin implicites. Par exemple, si /sdcard sur un périphérique particulier ne correspond pas au stockage externe, le système le remplacera par le préfixe du chemin de stockage externe pour ce périphérique. |
additionalApks[] | Des APK à installer en plus de ceux directement testés. Actuellement plafonné à 100. |
account | L'appareil sera connecté sur ce compte pendant toute la durée du test. |
networkProfile | Profil de trafic réseau utilisé pour exécuter le test. Les profils réseau disponibles peuvent être interrogés à l'aide du type d'environnement NETWORK_CONFIGURATION lors de l'appel de TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
environmentVariables[] | Variables d'environnement à définir pour le test (applicable uniquement pour les tests d'instrumentation). |
systrace | Configuration Systrace pour l’exécution. Obsolète : Systrace utilisait Python 2 qui a été abandonné le 01/01/2020. Systrace n'est plus pris en charge dans l'API Cloud Testing et aucun fichier Systrace ne sera fourni dans les résultats. |
dontAutograntPermissions | S'il faut empêcher l'octroi de toutes les autorisations d'exécution lors de l'installation de l'application |
Fichier de périphérique
Une seule description de fichier de périphérique.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
Champ d'union device_file . Requis. device_file ne peut être qu'un des éléments suivants : | |
obbFile | Une référence à un fichier blob binaire opaque. |
regularFile | Une référence à un fichier normal. |
Fichier Obb
Un fichier blob binaire opaque à installer sur l’appareil avant le début du test.
Représentation JSON |
---|
{
"obbFileName": string,
"obb": {
object ( |
Des champs | |
---|---|
obbFileName | Requis. Nom du fichier OBB qui doit être conforme au format spécifié par Android, par exemple [main|patch].0300110.com.example.android.obb qui sera installé dans <shared-storage>/Android/obb/<package-name>/ sur l'appareil. |
obb | Requis. Fichier(s) Opaque Binary Blob (OBB) à installer sur l’appareil. |
Référence de fichier
Une référence à un fichier, utilisée pour les entrées utilisateur.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
file de terrain de l'Union. Requis. La référence du fichier. file ne peut être qu'un des éléments suivants : | |
gcsPath | Chemin d'accès à un fichier dans Google Cloud Storage. Exemple : gs://build-app-1414623860166/app%40debug-unalignementd.apk Ces chemins devraient être codés en URL (encodage en pourcentage) |
Fichier régulier
Un fichier ou un répertoire à installer sur l'appareil avant le démarrage du test.
Représentation JSON |
---|
{
"content": {
object ( |
Des champs | |
---|---|
content | Requis. Le fichier source. |
devicePath | Requis. Où placer le contenu sur l'appareil. Il doit s'agir d'un chemin absolu sur liste autorisée. Si le fichier existe, il sera remplacé. Les répertoires suivants côté appareil et tous leurs sous-répertoires sont sur liste verte : ${EXTERNAL_STORAGE}, /sdcard ou /storage ${ANDROID_DATA}/local/tmp ou /data/local/tmp La spécification d'un chemin en dehors de ces arborescences de répertoires n'est pas valide. Les chemins /sdcard et /data seront rendus disponibles et traités comme des substitutions de chemin implicites. Par exemple, si /sdcard sur un périphérique particulier ne correspond pas au stockage externe, le système le remplacera par le préfixe du chemin de stockage externe pour ce périphérique et y copiera le fichier. Il est fortement conseillé d'utiliser l' API d'environnement dans l'application et le code de test pour accéder aux fichiers sur l'appareil de manière portable. |
Apk
Un fichier de package Android à installer.
Représentation JSON |
---|
{
"location": {
object ( |
Des champs | |
---|---|
location | Le chemin d’accès à un APK à installer sur l’appareil avant le début du test. |
packageName | Le package Java pour l’APK à installer. La valeur est déterminée en examinant le manifeste de l'application. |
Compte
Identifie un compte et comment s'y connecter.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
Champ d'union account_type . Requis. Le type de compte, en fonction de son utilité (par exemple Google) et de son mécanisme de connexion (par exemple nom d'utilisateur et mot de passe). account_type ne peut être qu'un des éléments suivants : | |
googleAuto | Un compte de connexion Google automatique. |
GoogleAuto
Permet la connexion automatique au compte Google. S'il est défini, le service génère automatiquement un compte de test Google et l'ajoute à l'appareil avant d'exécuter le test. Notez que les comptes de test peuvent être réutilisés. De nombreuses applications affichent l'ensemble de leurs fonctionnalités lorsqu'un compte est présent sur l'appareil. La connexion à l'appareil avec ces comptes générés permet de tester plus de fonctionnalités.
Variable d'environnement
Une paire clé-valeur transmise en tant que variable d'environnement au test.
Représentation JSON |
---|
{ "key": string, "value": string } |
Des champs | |
---|---|
key | Clé de la variable d'environnement. |
value | Valeur de la variable d'environnement. |
Configuration Systrace
Représentation JSON |
---|
{ "durationSeconds": integer } |
Des champs | |
---|---|
durationSeconds | Durée de la Systrace en secondes. Cela devrait durer entre 1 et 30 secondes. 0 désactive la trace système. |
IosTestSetup
Une description de la façon de configurer un appareil iOS avant d'exécuter le test.
Représentation JSON |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
Des champs | |
---|---|
networkProfile | Profil de trafic réseau utilisé pour exécuter le test. Les profils réseau disponibles peuvent être interrogés à l'aide du type d'environnement NETWORK_CONFIGURATION lors de l'appel de TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
additionalIpas[] | Applications iOS à installer en plus de celles directement testées. |
pushFiles[] | Liste des fichiers à transmettre à l'appareil avant de démarrer le test. |
pullDirectories[] | Liste des répertoires de l'appareil à télécharger sur Cloud Storage à la fin du test. Les répertoires doivent se trouver soit dans un répertoire partagé (tel que /private/var/mobile/Media), soit dans un répertoire accessible à l'intérieur du système de fichiers de l'application (tel que /Documents) en spécifiant l'ID du bundle. |
Fichier de périphérique Ios
Un fichier ou un répertoire à installer sur l'appareil avant le démarrage du test.
Représentation JSON |
---|
{
"content": {
object ( |
Des champs | |
---|---|
content | Le fichier source |
bundleId | L'identifiant du bundle de l'application où se trouve ce fichier. Les applications iOS disposent de leur propre système de fichiers en sandbox, les fichiers d'application doivent donc spécifier quelle application est installée sur l'appareil. |
devicePath | Emplacement du fichier sur l'appareil, dans le système de fichiers sandbox de l'application |
AndroidInstrumentationTest
Un test d'une application Android capable de contrôler un composant Android indépendamment de son cycle de vie normal. Les tests d'instrumentation Android exécutent un APK d'application et testent l'APK dans le même processus sur un appareil Android virtuel ou physique. Ils spécifient également une classe d'exécution de tests, telle que com.google.GoogleTestRunner, qui peut varier en fonction du cadre d'instrumentation spécifique choisi.
Voir https://developer.android.com/training/testing/fundamentals pour plus d'informations sur les types de tests Android.
Représentation JSON |
---|
{ "testApk": { object ( |
Des champs | |
---|---|
testApk | Requis. L'APK contenant le code de test à exécuter. |
appPackageId | Le package Java pour l'application testée. La valeur par défaut est déterminée en examinant le manifeste de l'application. |
testPackageId | Le package Java pour le test à exécuter. La valeur par défaut est déterminée en examinant le manifeste de l'application. |
testRunnerClass | La classe InstrumentationTestRunner. La valeur par défaut est déterminée en examinant le manifeste de l'application. |
testTargets[] | Chaque cible doit être entièrement qualifiée avec le nom du package ou le nom de la classe, dans l'un de ces formats :
S'il est vide, toutes les cibles du module seront exécutées. |
orchestratorOption | La possibilité d'exécuter ou non chaque test dans sa propre invocation d'instrumentation avec Android Test Orchestrator. ** Orchestrator est uniquement compatible avec AndroidJUnitRunner version 1.1 ou supérieure ! ** Orchestrator offre les avantages suivants :
Voir https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator pour plus d'informations sur Android Test Orchestrator. S’il n’est pas défini, le test sera exécuté sans l’orchestrateur. |
shardingOption | La possibilité d'exécuter des tests sur plusieurs fragments en parallèle. |
Champ syndical app_under_test . Requis. app_under_test ne peut être qu'un des éléments suivants : | |
appApk | L'APK de l'application testée. |
appBundle | Un ensemble d'applications multi-apk pour l'application testée. |
AppBundle
Un format de fichier Android App Bundle, contenant un fichier BundleConfig.pb, un répertoire de module de base, zéro ou plusieurs répertoires de modules de fonctionnalités dynamiques.
Voir https://developer.android.com/guide/app-bundle/build pour obtenir des conseils sur la création d'App Bundles.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
bundle de champs Union. Requis. Regroupez les informations de localisation. bundle ne peut être qu'un des éléments suivants : | |
bundleLocation | Fichier .aab représentant le bundle d’applications testé. |
Option Orchestrateur
Spécifie comment exécuter le test.
Énumérations | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | Valeur par défaut : le serveur choisira le mode. Cela implique actuellement que le test s'exécutera sans l'orchestrateur. À l’avenir, tous les tests d’instrumentation seront exécutés avec l’orchestrateur. L’utilisation de l’orchestrateur est fortement encouragée en raison de tous les avantages qu’il offre. |
USE_ORCHESTRATOR | Exécutez le test à l’aide de l’orchestrateur. ** Uniquement compatible avec AndroidJUnitRunner version 1.1 ou supérieure ! ** Recommandé. |
DO_NOT_USE_ORCHESTRATOR | Exécutez le test sans utiliser Orchestrator. |
Option de partage
Options pour activer le partitionnement.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
| |
uniformSharding | Partage uniformément les cas de test en fonction d'un nombre total de fragments. |
manualSharding | Divise les cas de test dans les groupes spécifiés de packages, de classes et/ou de méthodes. |
smartSharding | Test des fragments basé sur les enregistrements de synchronisation des cas de test précédents. |
PartageUniforme
Partage uniformément les cas de test en fonction d'un nombre total de fragments.
Pour les tests d'instrumentation, il sera traduit en arguments AndroidJUnitRunner "-e numShard" et "-e shardIndex". Lorsque le partitionnement uniforme est activé, la spécification de l'un ou l'autre de ces arguments de partitionnement via environmentVariables
n'est pas valide.
Sur la base du mécanisme de partitionnement utilisé par AndroidJUnitRunner, rien ne garantit que les cas de test seront répartis uniformément sur toutes les partitions.
Représentation JSON |
---|
{ "numShards": integer } |
Des champs | |
---|---|
numShards | Requis. Le nombre total de fragments à créer. Il doit toujours s'agir d'un nombre positif qui ne dépasse pas le nombre total de cas de test. Lorsque vous sélectionnez un ou plusieurs appareils physiques, le nombre de partitions doit être <= 50. Lorsque vous sélectionnez un ou plusieurs appareils virtuels ARM, il doit être <= 200. Lorsque vous sélectionnez uniquement des appareils virtuels x86, il doit être <= 500. . |
Partage manuel
Divise les cas de test dans les groupes spécifiés de packages, de classes et/ou de méthodes.
Lorsque le partitionnement manuel est activé, la spécification de cibles de test via EnvironmentVariables ou dans InstrumentationTest n'est pas valide.
Représentation JSON |
---|
{
"testTargetsForShard": [
{
object ( |
Des champs | |
---|---|
testTargetsForShard[] | Requis. Groupe de packages, de classes et/ou de méthodes de test à exécuter pour chaque partition créée manuellement. Vous devez spécifier au moins une partition si ce champ est présent. Lorsque vous sélectionnez un ou plusieurs appareils physiques, le nombre de testsTargetsForShard répétés doit être <= 50. Lorsque vous sélectionnez un ou plusieurs appareils virtuels ARM, il doit être <= 200. Lorsque vous sélectionnez uniquement des appareils virtuels x86, il doit être <= 500. |
TestTargetsForShard
Testez les cibles pour un fragment.
Représentation JSON |
---|
{ "testTargets": [ string ] } |
Des champs | |
---|---|
testTargets[] | Groupe de packages, de classes et/ou de méthodes de test à exécuter pour chaque partition. Les cibles doivent être spécifiées au format d'argument AndroidJUnitRunner. Par exemple, « package com.my.packages » « classe com.my.package.MyClass ». Le nombre de testTargets doit être supérieur à 0. |
Partage intelligent
Test des fragments basé sur les enregistrements de synchronisation des cas de test précédents.
Représentation JSON |
---|
{ "targetedShardDuration": string } |
Des champs | |
---|---|
targetedShardDuration | La durée que devraient prendre les tests au sein d’une partition. Par défaut : 300 secondes (5 minutes). Le minimum autorisé : 120 secondes (2 minutes). Le nombre de fragments est défini dynamiquement en fonction du temps, jusqu'à la limite maximale de fragments (décrite ci-dessous). Pour garantir au moins un scénario de test pour chaque fragment, le nombre de fragments ne dépassera pas le nombre de scénarios de test. La durée du fragment sera dépassée si :
La durée du fragment n'est pas garantie, car le partage intelligent utilise l'historique des cas de test et des durées par défaut qui peuvent ne pas être exactes. Les règles permettant de trouver les enregistrements de synchronisation des scénarios de test sont :
Étant donné que la durée réelle de la partition peut dépasser la durée de partition ciblée, nous vous recommandons de définir la valeur ciblée au moins 5 minutes de moins que le délai d'expiration de test maximum autorisé (45 minutes pour les appareils physiques et 60 minutes pour les appareils virtuels), ou d'utiliser l'option personnalisée. valeur du délai d'expiration du test que vous avez définie. Cette approche évite d'annuler la partition avant la fin de tous les tests. Notez qu'il existe une limite pour le nombre maximum de fragments. Lorsque vous sélectionnez un ou plusieurs appareils physiques, le nombre de partitions doit être <= 50. Lorsque vous sélectionnez un ou plusieurs appareils virtuels ARM, il doit être <= 200. Lorsque vous sélectionnez uniquement des appareils virtuels x86, il doit être <= 500. Pour garantir au moins un scénario de test par fragment, le nombre de fragments ne dépassera pas le nombre de scénarios de test. Chaque fragment créé compte dans le quota de test quotidien. Une durée en secondes avec jusqu'à neuf chiffres fractionnaires, se terminant par « |
AndroidRoboTest
Un test d'une application Android qui explore l'application sur un appareil Android virtuel ou physique, trouvant les coupables et les plantages au fur et à mesure.
Représentation JSON |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
Des champs | |
---|---|
appPackageId | Le package Java pour l'application testée. La valeur par défaut est déterminée en examinant le manifeste de l'application. |
appInitialActivity | L'activité initiale qui doit être utilisée pour démarrer l'application. |
maxDepth | La profondeur maximale de la pile de traversée que Robo peut explorer. Il doit y avoir au moins 2 pour que Robo explore l'application au-delà de la première activité. La valeur par défaut est 50. |
maxSteps | Le nombre maximum d'étapes que Robo peut exécuter. La valeur par défaut n'est pas une limite. |
roboDirectives[] | Un ensemble de directives que Robo doit appliquer pendant l'analyse. Cela permet aux utilisateurs de personnaliser l'exploration. Par exemple, le nom d'utilisateur et le mot de passe d'un compte de test peuvent être fournis. |
roboMode | Le mode dans lequel Robo doit fonctionner. La plupart des clients devraient autoriser le serveur à remplir automatiquement ce champ. |
roboScript | Un fichier JSON avec une séquence d'actions que Robo doit effectuer comme prologue pour l'analyse. |
startingIntents[] | Intents utilisés pour lancer l'application pour l'analyse. Si aucune n’est fournie, alors l’activité principale du lanceur est lancée. Si certains sont fournis, alors seuls ceux fournis sont lancés (l'activité principale du lanceur doit être fournie explicitement). |
Champ syndical app_under_test . Requis. app_under_test ne peut être qu'un des éléments suivants : | |
appApk | L'APK de l'application testée. |
appBundle | Un ensemble d'applications multi-apk pour l'application testée. |
RoboDirective
Demande à Robo d'interagir avec un élément spécifique de l'interface utilisateur s'il est rencontré lors de l'analyse. Actuellement, Robo peut effectuer une saisie de texte ou un clic sur un élément.
Représentation JSON |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
Des champs | |
---|---|
resourceName | Requis. Le nom de la ressource Android de l’élément d’interface utilisateur cible. Par exemple, en Java : R.string.foo en xml : @string/foo Seule la partie "foo" est nécessaire. Document de référence : https://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText | Le texte que Robo est invité à définir. Si elle est laissée vide, la directive sera traitée comme un CLIC sur l'élément correspondant au nom de la ressource. |
actionType | Requis. Le type d'action que Robo doit effectuer sur l'élément spécifié. |
Type d'action robot
Actions que Robo peut effectuer sur les éléments de l'interface utilisateur.
Énumérations | |
---|---|
ACTION_TYPE_UNSPECIFIED | NE PAS UTILISER. Pour le versionnage de proto uniquement. |
SINGLE_CLICK | Demandez à Robo de cliquer sur l’élément spécifié. Pas d'opération si l'élément spécifié n'est pas cliquable. |
ENTER_TEXT | Demandez à Robo de saisir du texte sur l'élément spécifié. Pas d'opération si l'élément spécifié n'est pas activé ou n'autorise pas la saisie de texte. |
IGNORE | Demandez à Robo d'ignorer les interactions avec un élément spécifique. |
Mode Robo
Le mode dans lequel Robo doit fonctionner.
Énumérations | |
---|---|
ROBO_MODE_UNSPECIFIED | Cela signifie que le serveur doit choisir le mode. Recommandé. |
ROBO_VERSION_1 | Exécute Robo en mode UIAutomator uniquement sans que l'application ne démissionne |
ROBO_VERSION_2 | Exécute Robo dans Espresso standard avec la solution de secours UIAutomator |
RoboStartingIntent
Message permettant de spécifier les activités de démarrage à analyser.
Représentation JSON |
---|
{ "timeout": string, // Union field |
Des champs | |
---|---|
timeout | Délai d'expiration en secondes pour chaque intention. Une durée en secondes avec jusqu'à neuf chiffres fractionnaires, se terminant par « |
Champ d'union starting_intent . Requis. Détails de l’intention de démarrer une activité. starting_intent ne peut être qu'un des éléments suivants : | |
launcherActivity | Une intention qui démarre l'activité principale du lanceur. |
startActivity | Une intention qui démarre une activité avec des détails spécifiques. |
LauncherActivityIntent
Spécifie une intention qui démarre l'activité principale du lanceur.
StartActivityIntent
Une intention de départ spécifiée par une action, un uri et des catégories.
Représentation JSON |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
Des champs | |
---|---|
action | Nom de l'action. Obligatoire pour START_ACTIVITY. |
uri | URI de l'action. |
categories[] | Catégories d'intention à définir sur l'intention. |
AndroidTestBoucle
Un test d'une application Android avec une boucle de test. L'intention <intent-name> sera implicitement ajoutée, puisque Games est pour le moment le seul utilisateur de cette API.
Représentation JSON |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
Des champs | |
---|---|
appPackageId | Le package Java pour l'application testée. La valeur par défaut est déterminée en examinant le manifeste de l'application. |
scenarios[] | La liste des scénarios qui doivent être exécutés pendant le test. La valeur par défaut correspond à toutes les boucles de test, dérivées du manifeste de l'application. |
scenarioLabels[] | Liste des étiquettes de scénario qui doivent être exécutées pendant le test. Les étiquettes du scénario doivent correspondre aux étiquettes définies dans le manifeste de l'application. Par exemple, player_experience et com.google.test.loops.player_experience ajoutent toutes les boucles étiquetées dans le manifeste avec le nom com.google.test.loops.player_experience à l'exécution. Des scénarios peuvent également être spécifiés dans le champ Scénarios. |
Champ syndical app_under_test . Requis. Le package Android à tester. app_under_test ne peut être qu'un des éléments suivants : | |
appApk | L'APK de l'application testée. |
appBundle | Un ensemble d'applications multi-apk pour l'application testée. |
IosXcTest
Un test d'une application iOS qui utilise le framework XCTest. Xcode prend en charge l'option « construire pour les tests », qui génère un fichier .xctestrun contenant une spécification de test (arguments, méthodes de test, etc.). Ce type de test accepte un fichier zip contenant le fichier .xctestrun et le contenu correspondant du répertoire Build/Products qui contient tous les binaires nécessaires à l'exécution des tests.
Représentation JSON |
---|
{ "testsZip": { object ( |
Des champs | |
---|---|
testsZip | Requis. Le .zip contenant le fichier .xctestrun et le contenu du répertoire DerivedData/Build/Products. Le fichier .xctestrun dans ce zip est ignoré si le champ xctestrun est spécifié. |
xctestrun | Un fichier .xctestrun qui remplacera le fichier .xctestrun dans le zip des tests. Étant donné que le fichier .xctestrun contient des variables d'environnement ainsi que des méthodes de test à exécuter et/ou à ignorer, cela peut être utile pour les tests de partitionnement. La valeur par défaut est extraite du zip des tests. |
xcodeVersion | La version Xcode qui doit être utilisée pour le test. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. La valeur par défaut est la dernière version de Xcode prise en charge par Firebase Test Lab. |
appBundleId | Sortie uniquement. L’ID du bundle pour l’application testée. |
testSpecialEntitlements | La possibilité de tester les droits spéciaux des applications. Définir cela re-signerait l'application ayant des droits spéciaux avec un identifiant d'application explicite. Prend actuellement en charge les tests des droits d'environnement aps. |
IosTestBoucle
Un test d'une application iOS qui implémente un ou plusieurs scénarios de boucle de jeu. Ce type de test accepte une application archivée (fichier .ipa) et une liste de scénarios entiers qui seront exécutés séquentiellement sur l'application.
Représentation JSON |
---|
{
"appIpa": {
object ( |
Des champs | |
---|---|
appIpa | Requis. Le .ipa de l’application à tester. |
scenarios[] | La liste des scénarios qui doivent être exécutés pendant le test. La valeur par défaut est le scénario unique 0 si non spécifié. |
appBundleId | Sortie uniquement. L’ID du bundle pour l’application testée. |
EnvironnementMatrice
La matrice des environnements dans lesquels le test doit être exécuté.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
Champ Union environment_matrix . Requis. La matrice de l'environnement. environment_matrix ne peut être que l'un des éléments suivants : | |
androidMatrix | Une matrice d'appareils Android. |
androidDeviceList | Une liste d'appareils Android ; le test sera exécuté uniquement sur les appareils spécifiés. |
iosDeviceList | Une liste d'appareils iOS. |
AndroidMatrice
Un ensemble de permutations de configuration d'appareil Android est défini par le produit vectoriel des axes donnés. En interne, l'AndroidMatrix donné sera étendu à un ensemble d'AndroidDevices.
Seules les permutations prises en charge seront instanciées. Les permutations invalides (par exemple, modèles/versions incompatibles) sont ignorées.
Représentation JSON |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
Des champs | |
---|---|
androidModelIds[] | Requis. Les identifiants de l’ensemble d’appareils Android à utiliser. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
androidVersionIds[] | Requis. Les identifiants de l’ensemble de versions du système d’exploitation Android à utiliser. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
locales[] | Requis. L'ensemble des paramètres régionaux que le périphérique de test activera pour les tests. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
orientations[] | Requis. L’ensemble des orientations avec lesquelles tester. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
Liste des appareils Android
Une liste des configurations d'appareils Android dans lesquelles le test doit être exécuté.
Représentation JSON |
---|
{
"androidDevices": [
{
object ( |
Des champs | |
---|---|
androidDevices[] | Requis. Une liste d'appareils Android. |
Appareil Android
Un seul appareil Android.
Représentation JSON |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
Des champs | |
---|---|
androidModelId | Requis. L'identifiant de l'appareil Android à utiliser. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
androidVersionId | Requis. L'identifiant de la version du système d'exploitation Android à utiliser. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
locale | Requis. Paramètres régionaux utilisés par le périphérique de test pour les tests. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
orientation | Requis. Comment l'appareil est orienté pendant le test. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
Liste des appareils Ios
Une liste des configurations d'appareils iOS dans lesquelles le test doit être exécuté.
Représentation JSON |
---|
{
"iosDevices": [
{
object ( |
Des champs | |
---|---|
iosDevices[] | Requis. Une liste d'appareils iOS. |
Appareil Ios
Un seul appareil iOS.
Représentation JSON |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
Des champs | |
---|---|
iosModelId | Requis. L'identifiant de l'appareil iOS à utiliser. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
iosVersionId | Requis. L’identifiant de la version majeure du logiciel iOS à utiliser. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
locale | Requis. Paramètres régionaux utilisés par le périphérique de test pour les tests. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
orientation | Requis. Comment l'appareil est orienté pendant le test. Utilisez TestEnvironmentDiscoveryService pour obtenir les options prises en charge. |
TestExécution
Un seul test exécuté dans un seul environnement.
Représentation JSON |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
Des champs | |
---|---|
id | Sortie uniquement. Identifiant unique défini par le service. |
matrixId | Sortie uniquement. ID du TestMatrix contenant. |
projectId | Sortie uniquement. Le projet cloud propriétaire de l'exécution du test. |
testSpecification | Sortie uniquement. Comment exécuter le test. |
shard | Sortie uniquement. Détails sur le fragment. |
environment | Sortie uniquement. Comment la ou les machines hôtes sont configurées. |
state | Sortie uniquement. Indique la progression actuelle de l'exécution du test (par exemple, FINISHED). |
toolResultsStep | Sortie uniquement. Où sont écrits les résultats de cette exécution. |
timestamp | Sortie uniquement. Heure à laquelle cette exécution de test a été initialement créée. Un horodatage au format RFC3339 UTC "Zulu", avec une résolution en nanosecondes et jusqu'à neuf chiffres fractionnaires. Exemples : |
testDetails | Sortie uniquement. Détails supplémentaires sur le test en cours. |
Tesson
Sortie uniquement. Détails sur le fragment.
Représentation JSON |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
Des champs | |
---|---|
shardIndex | Sortie uniquement. L'index du fragment parmi tous les fragments. |
numShards | Sortie uniquement. Le nombre total de fragments. |
testTargetsForShard | Sortie uniquement. Testez les cibles pour chaque fragment. Uniquement défini pour le partitionnement manuel. |
estimatedShardDuration | Sortie uniquement. Durée estimée de la partition basée sur les enregistrements de synchronisation des scénarios de test précédents, si disponibles. Une durée en secondes avec jusqu'à neuf chiffres fractionnaires, se terminant par « |
Environnement
L'environnement dans lequel le test est exécuté.
Représentation JSON |
---|
{ // Union field |
Des champs | |
---|---|
environment de terrain syndical. Requis. L'environnement. environment ne peut être que l'un des éléments suivants : | |
androidDevice | Un appareil Android qui doit être utilisé avec un test Android. |
iosDevice | Un appareil iOS qui doit être utilisé avec un test iOS. |
État de test
L'état (c'est-à-dire la progression) d'une exécution ou d'une matrice de test.
Énumérations | |
---|---|
TEST_STATE_UNSPECIFIED | Ne pas utiliser. Pour le versionnage de proto uniquement. |
VALIDATING | L'exécution ou la matrice est en cours de validation. |
PENDING | L'exécution ou la matrice attend que les ressources soient disponibles. |
RUNNING | L'exécution est actuellement en cours. Ne peut être défini que sur une exécution. |
FINISHED | L'exécution ou la matrice s'est terminée normalement. Sur une matrice, cela signifie que le traitement au niveau de la matrice s'est terminé normalement, mais que les exécutions individuelles peuvent être dans un état ERREUR. |
ERROR | L'exécution ou la matrice s'est arrêtée car elle a rencontré une panne d'infrastructure. |
UNSUPPORTED_ENVIRONMENT | L'exécution n'a pas été exécutée car elle correspond à un environnement non supporté. Ne peut être défini que sur une exécution. |
INCOMPATIBLE_ENVIRONMENT | L'exécution n'a pas été exécutée car les entrées fournies sont incompatibles avec l'environnement demandé. Exemple : la version Android demandée est inférieure à la version minSdk de l'APK Ne peut être défini que sur une exécution. |
INCOMPATIBLE_ARCHITECTURE | L'exécution n'a pas été exécutée car les entrées fournies sont incompatibles avec l'architecture demandée. Exemple : l'appareil demandé ne prend pas en charge l'exécution du code natif dans l'APK fourni Ne peut être défini que sur une exécution. |
CANCELLED | L'utilisateur a annulé l'exécution. Ne peut être défini que sur une exécution. |
INVALID | L'exécution ou la matrice n'a pas été exécutée car les entrées fournies ne sont pas valides. Exemples : le fichier d'entrée n'est pas du type attendu, est mal formé/corrompu ou a été signalé comme malware |
OutilRésultatsÉtape
Représente une ressource d’étape de résultats d’outil.
Cela a les résultats d’un TestExecution.
Représentation JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
Des champs | |
---|---|
projectId | Sortie uniquement. Le projet cloud qui possède l'étape de résultats de l'outil. |
historyId | Sortie uniquement. Un identifiant d’historique des résultats d’outil. |
executionId | Sortie uniquement. Un ID d’exécution des résultats de l’outil. |
stepId | Sortie uniquement. Un ID d’étape de résultat d’outil. |
Détails du test
Détails supplémentaires sur la progression du test en cours.
Représentation JSON |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
Des champs | |
---|---|
progressMessages[] | Sortie uniquement. Descriptions détaillées et lisibles par l'homme de la progression du test. Par exemple : "Provisionnement d'un appareil", "Démarrage du test". Au cours de l'exécution, de nouvelles données peuvent être ajoutées à la fin des progressMessages. |
errorMessage | Sortie uniquement. Si TestState est ERROR, cette chaîne contiendra des détails lisibles par l'homme sur l'erreur. |
Stockage des résultats
Emplacements où les résultats de l’exécution du test sont stockés.
Représentation JSON |
---|
{ "googleCloudStorage": { object ( |
Des champs | |
---|---|
googleCloudStorage | Requis. |
toolResultsHistory | L'historique des résultats de l'outil qui contient l'exécution des résultats de l'outil dans laquelle les résultats sont écrits. S’il n’est pas fourni, le service choisira une valeur appropriée. |
toolResultsExecution | Sortie uniquement. Exécution des résultats de l’outil dans lequel les résultats sont écrits. |
resultsUrl | Sortie uniquement. URL vers les résultats dans la console Web Firebase. |
GoogleCloudStorage
Un emplacement de stockage dans le stockage cloud Google (GCS).
Représentation JSON |
---|
{ "gcsPath": string } |
Des champs | |
---|---|
gcsPath | Requis. Le chemin d'accès à un répertoire dans GCS qui contiendra éventuellement les résultats de ce test. L'utilisateur demandeur doit disposer d'un accès en écriture sur le compartiment dans le chemin fourni. |
OutilRésultatsHistorique
Représente une ressource d’historique des résultats d’outil.
Représentation JSON |
---|
{ "projectId": string, "historyId": string } |
Des champs | |
---|---|
projectId | Requis. Le projet cloud qui possède l'historique des résultats de l'outil. |
historyId | Requis. Un identifiant d’historique des résultats d’outil. |
OutilRésultatsExécution
Représente une ressource d’exécution des résultats d’outil.
Cela a les résultats d’un TestMatrix.
Représentation JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
Des champs | |
---|---|
projectId | Sortie uniquement. Le projet cloud qui possède l'exécution des résultats de l'outil. |
historyId | Sortie uniquement. Un identifiant d’historique des résultats d’outil. |
executionId | Sortie uniquement. Un ID d’exécution des résultats de l’outil. |
InvalidMatrixDetails
La raison détaillée pour laquelle une matrice a été jugée INVALIDE.
Énumérations | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED | Ne pas utiliser. Pour le versionnage de proto uniquement. |
DETAILS_UNAVAILABLE | La matrice est INVALIDE, mais aucun autre détail n’est disponible. |
MALFORMED_APK | L’APK de l’application d’entrée n’a pas pu être analysé. |
MALFORMED_TEST_APK | L’APK de test d’entrée n’a pas pu être analysé. |
NO_MANIFEST | Le fichier AndroidManifest.xml est introuvable. |
NO_PACKAGE_NAME | Le manifeste APK ne déclare pas de nom de package. |
INVALID_PACKAGE_NAME | L'ID de l'application APK (c'est-à-dire le nom du package) n'est pas valide. Voir également https://developer.android.com/build/configure-app-module#set-application-id |
TEST_SAME_AS_APP | Le package de test et le package d’application sont les mêmes. |
NO_INSTRUMENTATION | L’apk de test ne déclare pas d’instrumentation. |
NO_SIGNATURE | L’apk de l’application d’entrée n’a pas de signature. |
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE | La classe d'exécuteur de test spécifiée par l'utilisateur ou dans le fichier manifeste de l'APK de test n'est pas compatible avec Android Test Orchestrator. Orchestrator est uniquement compatible avec AndroidJUnitRunner version 1.1 ou supérieure. Orchestrator peut être désactivé à l’aide de DO_NOT_USE_ORCHESTRATOR OrchestratorOption. |
NO_TEST_RUNNER_CLASS | L'APK de test ne contient pas la classe d'exécuteur de test spécifiée par l'utilisateur ou dans le fichier manifeste. Cela peut être dû à l'une des raisons suivantes :
|
NO_LAUNCHER_ACTIVITY | Une activité principale du lanceur n'a pas pu être trouvée. |
FORBIDDEN_PERMISSIONS | L'application déclare une ou plusieurs autorisations qui ne sont pas autorisées. |
INVALID_ROBO_DIRECTIVES | Il y a un conflit dans les roboDirectives fournies. |
INVALID_RESOURCE_NAME | Il y a au moins un nom de ressource non valide dans les directives robot fournies |
INVALID_DIRECTIVE_ACTION | Définition d'action invalide dans les directives robot (par exemple, une action cliquer ou ignorer inclut un champ de texte de saisie) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND | Il n'y a pas de filtre d'intention de boucle de test, ou celui fourni n'est pas formaté correctement. |
SCENARIO_LABEL_NOT_DECLARED | La demande contient une étiquette de scénario qui n'a pas été déclarée dans le manifeste. |
SCENARIO_LABEL_MALFORMED | Une erreur s'est produite lors de l'analyse de la valeur d'une étiquette. |
SCENARIO_NOT_DECLARED | La requête contient un numéro de scénario qui n'a pas été déclaré dans le manifeste. |
DEVICE_ADMIN_RECEIVER | Les applications d'administrateur de périphérique ne sont pas autorisées. |
MALFORMED_XC_TEST_ZIP | Le XCTest compressé était mal formé. Le zip ne contenait pas un seul fichier .xctestrun ni le contenu du répertoire DerivedData/Build/Products. |
BUILT_FOR_IOS_SIMULATOR | Le XCTest zippé a été conçu pour le simulateur iOS plutôt que pour un appareil physique. |
NO_TESTS_IN_XC_TEST_ZIP | Le fichier .xctestrun n'a spécifié aucune cible de test. |
USE_DESTINATION_ARTIFACTS | Une ou plusieurs des cibles de test définies dans le fichier .xctestrun spécifient « UseDestinationArtifacts », ce qui n'est pas autorisé. |
TEST_NOT_APP_HOSTED | Les tests XC exécutés sur des appareils physiques doivent avoir "IsAppHostedTestBundle" == "true" dans le fichier xctestrun. |
PLIST_CANNOT_BE_PARSED | Un fichier Info.plist dans le zip XCTest n'a pas pu être analysé. |
TEST_ONLY_APK | L'APK est marqué comme "testOnly". Obsolète et non utilisé actuellement. |
MALFORMED_IPA | L'IPA d'entrée n'a pas pu être analysée. |
MISSING_URL_SCHEME | L'application n'enregistre pas le schéma d'URL de la boucle de jeu. |
MALFORMED_APP_BUNDLE | Le bundle d'applications iOS (.app) n'a pas pu être traité. |
NO_CODE_APK | L'APK ne contient aucun code. Voir également https://developer.android.com/guide/topics/manifest/application-element.html#code |
INVALID_INPUT_APK | Soit le chemin APK d’entrée fourni était mal formé, soit le fichier APK n’existe pas, soit l’utilisateur n’est pas autorisé à accéder au fichier APK. |
INVALID_APK_PREVIEW_SDK | L'APK est conçu pour un SDK de prévisualisation qui n'est pas pris en charge |
MATRIX_TOO_LARGE | La matrice s'est élargie pour contenir trop d'exécutions. |
TEST_QUOTA_EXCEEDED | Pas assez de quota de tests pour exécuter les exécutions dans cette matrice. |
SERVICE_NOT_ACTIVATED | Une API de service cloud requise n’est pas activée. Voir : https://firebase.google.com/docs/test-lab/android/continuous#requirements |
UNKNOWN_PERMISSION_ERROR | Un problème d'autorisation inconnu est survenu lors de l'exécution de ce test. |
Résumé des résultats
Résumé des résultats pour une matrice de test terminée.
Énumérations | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED | Ne pas utiliser. Pour le versionnage de proto uniquement. |
SUCCESS | L'exécution de la matrice de test a réussi, par exemple :
|
FAILURE | Une exécution a échoué, par exemple :
|
INCONCLUSIVE | Quelque chose d’inattendu s’est produit. L'exécution doit toujours être considérée comme un échec, mais il s'agit probablement d'un problème passager et une nouvelle exécution du test pourrait réussir. |
SKIPPED | Tous les tests ont été ignorés, par exemple :
|
Méthodes | |
---|---|
| Annule les exécutions de test inachevées dans une matrice de test. |
| Crée et exécute une matrice de tests en fonction des spécifications données. |
| Vérifie l'état d'une matrice de test et les exécutions une fois qu'ils sont créés. |