- Recurso: TestMatrix
- Información del cliente
- ClientInfoDetail
- Especificación de prueba
- Configuración de prueba
- Archivodeldispositivo
- ArchivoOBB
- Referencia de archivo
- Archivo regular
- APK
- Cuenta
- GoogleAuto
- Variable de entorno
- SystraceSetup
- IosTestSetup:
- IosDeviceFile
- AndroidInstrumentationTest
- Paquete de aplicación
- OrchestratorOption
- ShardingOption
- Fragmentación uniforme
- Fragmentación manual
- TestTargetsForShard
- Fragmentación inteligente
- AndroidRoboTest
- Directiva Robo
- RoboActionType
- RoboMode
- RoboStartingIntent
- LauncherActivityIntent
- StartActivityIntent
- NoActivityIntent
- AndroidTestLoop.
- IosXcTest
- IosTestLoop
- Prueba IosRobo
- EnvironmentMatrix
- AndroidMatrix
- Lista de dispositivos Android
- iOSDeviceList
- iOSDevice
- Ejecución de pruebas
- Fragmentación
- Entorno
- Estado de prueba
- ToolResultsStep
- Detalles de prueba
- ResultStorage.
- GoogleCloudStorage
- Historial de resultados de herramientas
- ToolResultsExecution
- InvalidMatrixDetails
- MatrixErrorDetail
- Resultado del resumen
- Métodos
Recurso: TestMatrix
TestMatrix captura todos los detalles de una prueba. Contiene la configuración del entorno, la especificación de la prueba, las ejecuciones de prueba y el estado general y el resultado.
Representación JSON |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
Campos | |
---|---|
testMatrixId |
Solo salida. ID único que el servicio determina. |
projectId |
Proyecto de Cloud al que pertenece la matriz de prueba. |
clientInfo |
Información sobre el cliente que invocó la prueba. |
testSpecification |
Obligatorio. Se refiere a cómo ejecutar la prueba. |
environmentMatrix |
Obligatorio. Los dispositivos en los que se ejecutan las pruebas. |
testExecutions[] |
Solo salida. Es la lista de ejecuciones de prueba que crea el sistema para esta matriz. |
resultStorage |
Obligatorio. Es el lugar en el que se escriben los resultados de la matriz. |
state |
Solo salida. Indica el progreso actual de la matriz de prueba. |
timestamp |
Solo salida. Es la fecha y hora en que inicialmente se creó la matriz de prueba. Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: |
invalidMatrixDetails |
Solo salida. Describe por qué se consideró la matriz como no válida. Solamente es útil para las matrices en estado NO VÁLIDO. |
extendedInvalidMatrixDetails[] |
Solo salida. Detalles sobre por qué se consideró una matriz no válida. Si se pueden realizar varias verificaciones de forma segura, se informarán, pero no se deben hacer suposiciones sobre la longitud de esta lista. |
flakyTestAttempts |
La cantidad de veces que se debe reintentar una Ejecución de prueba si uno o más de sus casos de prueba fallan por cualquier motivo. La cantidad máxima de repeticiones permitida es 10. El valor predeterminado es 0, lo que implica que no hay repeticiones. |
outcomeSummary |
Solo salida. El resultado general de la prueba. Solo se establece cuando el estado de la matriz de prueba es FINISHED. |
failFast |
Si es verdadero, solo se realizará un solo intento para ejecutar cada ejecución o fragmento en la matriz. Los intentos de prueba inestables no se ven afectados. Por lo general, se realizan 2 o más intentos si se detecta un posible problema de infraestructura. Esta función es para cargas de trabajo sensibles a la latencia. La incidencia de fallas de ejecución puede ser mucho mayor para las matrices con falla rápida, y la compatibilidad es más limitada debido a esa expectativa. |
ClientInfo
Información sobre el cliente que invocó la prueba.
Representación JSON |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
Campos | |
---|---|
name |
Obligatorio. El nombre del cliente, como gcloud. |
clientInfoDetails[] |
Lista de información detallada sobre el cliente. |
ClientInfoDetail
Es el par clave-valor de la información detallada sobre el cliente que invocó la prueba. Ejemplos: {“Version”, “1.0”}, {“Release Track”, “BETA”}.
Representación JSON |
---|
{ "key": string, "value": string } |
Campos | |
---|---|
key |
Obligatorio. Es la clave de la información detallada del cliente. |
value |
Obligatorio. Es el valor de la información detallada del cliente. |
TestSpecification
Es una descripción sobre cómo ejecutar la prueba.
Representación JSON |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
Campos | |
---|---|
testTimeout |
Es el tiempo máximo para ejecutar una prueba antes de que se cancele automáticamente. El valor predeterminado es de 5 min. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
disableVideoRecording |
Inhabilita la grabación de video. Puede reducir la latencia de la prueba. |
disablePerformanceMetrics |
Inhabilita la grabación de métricas de rendimiento. Puede reducir la latencia de la prueba. |
Campo de unión setup . Requisitos de configuración de pruebas setup puede ser solo uno de los siguientes: |
|
testSetup |
Requisitos de configuración de pruebas para Android, p. ej., los archivos que se deben instalar o la secuencia de comandos de un bootstrap. |
iosTestSetup |
Requisitos de configuración de pruebas para iOS. |
Campo de unión test . Obligatorio. Es el tipo de prueba que se ejecutará. test puede ser solo uno de los siguientes: |
|
androidInstrumentationTest |
Una prueba de instrumentación de Android. |
androidRoboTest |
Una prueba de Robo de Android. |
androidTestLoop |
Una aplicación de Android con un bucle de prueba. |
iosXcTest |
Un XCTest de iOS mediante un archivo .xctestrun. |
iosTestLoop |
Una aplicación para iOS con un bucle de prueba |
iosRoboTest |
Una prueba Robo de iOS. |
TestSetup
Es una descripción sobre cómo configurar un dispositivo Android antes de ejecutar la prueba.
Representación JSON |
---|
{ "filesToPush": [ { object ( |
Campos | |
---|---|
filesToPush[] |
Es una lista de archivos que se debe enviar al dispositivo antes de comenzar la prueba. |
directoriesToPull[] |
Lista de directorios en el dispositivo que se subirán a GCS al final de la prueba. Deben ser rutas de acceso absolutas en /sdcard, /storage o /data/local/tmp. Los nombres de las rutas de acceso se restringen a caracteres a-z A-Z 0-9 _ - . + y / Nota: Se pondrán a disposición las rutas /sdcard y /data, y se tratarán como sustituciones implícitas. P. ej., si /sdcard en un dispositivo en particular no se asigna un almacenamiento externo, el sistema lo remplazará con el prefijo de la ruta del almacenamiento externo de ese dispositivo. |
initialSetupApks[] |
Opcional. Son los APK de configuración iniciales que se deben instalar antes de que se instale la app en modo de prueba. El valor actual se limita a un máximo de 100. |
additionalApks[] |
Son los APK que se deben instalar además de los que se prueban directamente. Estos se instalarán después de la app que estés probando. El valor actual se limita a un máximo de 100. |
account |
Se usará esta cuenta para acceder con el dispositivo por el tiempo que dure la prueba. |
networkProfile |
Es el perfil de tráfico de red que se usa para ejecutar la prueba. Cuando llames a TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog, puedes usar el tipo de entorno NETWORK_CONFIGURATION para realizar consultas en los perfiles de red disponibles. |
environmentVariables[] |
Son las variables del entorno que se deben configurar en la prueba (solo es aplicable a las pruebas de instrumentación). |
systrace |
Configuración de Systrace para la ejecución. Obsoleto: Systrace usó Python 2, que se retiró el 1 de enero de 2020. Systrace ya no es compatible con la API de Cloud Testing, y no se proporcionará ningún archivo de Systrace en los resultados. |
dontAutograntPermissions |
Especifica si se deben impedir que se otorguen todos los permisos de tiempo de ejecución en la instalación de la app. |
DeviceFile
Es la descripción del archivo de un solo dispositivo.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión device_file . Obligatorio. device_file puede ser solo uno de los siguientes: |
|
obbFile |
Es una referencia a un archivo BLOB binario opaco. |
regularFile |
Es una referencia a un archivo normal. |
ObbFile
Es un archivo BLOB binario opaco que se debe instalar en el dispositivo antes de comenzar la prueba.
Representación JSON |
---|
{
"obbFileName": string,
"obb": {
object ( |
Campos | |
---|---|
obbFileName |
Obligatorio. Es el nombre del archivo OBB que debe satisfacer el formato específico de Android, p. ej., [main|patch].0300110.com.example.android.obb, que se instalará en <shared-storage>/Android/obb/<package-name>/ en el dispositivo. |
obb |
Obligatorio. Son los archivos BLOB binarios opacos (OBB) que se deben instalar en el dispositivo. |
FileReference
Es la referencia a un archivo que se usa en las entradas del usuario.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión file . Obligatorio. Es la referencia del archivo. file puede ser solo uno de los siguientes: |
|
gcsPath |
Es una ruta a un archivo en Google Cloud Storage. Ejemplo: gs://build-app-1414623860166/app%40debug-unaligned.apk Se espera que estas rutas de acceso se codifiquen en formato de URL (codificación porcentual). |
RegularFile
Es un archivo o directorio que se debe instalar en el dispositivo antes de comenzar la prueba.
Representación JSON |
---|
{
"content": {
object ( |
Campos | |
---|---|
content |
Obligatorio. Es el archivo de origen. |
devicePath |
Obligatorio. Es la ubicación en la que se colocará el contenido en el dispositivo. Debe ser una ruta absoluta que esté incluida en la lista de entidades permitidas. Si ya existe el archivo, se remplazará. Los siguientes directorios del dispositivo y cualquiera de sus subdirectorios están incluidos en la lista de entidades permitidas: ${EXTERNAL_STORAGE}, /sdcard o /storage ${ANDROID_DATA}/local/tmp o /data/local/tmp No es válido especificar una ruta que no pertenezca a este árbol de directorios. Se pondrán a disposición las rutas /sdcard y /data, y se tratarán como sustituciones implícitas. P. ej., si /sdcard en un dispositivo en particular no se asigna un almacenamiento externo, el sistema lo remplazará con el prefijo de la ruta del almacenamiento externo de ese dispositivo y copiará el archivo. Se recomienda que uses la API de Environment en la app y el código de prueba para acceder a los archivos del dispositivo de forma portátil. |
APK
Es un archivo de paquetes de Android que se debe instalar.
Representación JSON |
---|
{
"location": {
object ( |
Campos | |
---|---|
location |
Es la ruta a un APK que se debe instalar en el dispositivo antes de comenzar la prueba. |
packageName |
Es el paquete Java del APK que se debe instalar. Para determinar su valor, se debe examinar el manifiesto de la aplicación. |
Account
Permite identificar una cuenta y cómo acceder a ella.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión account_type . Obligatorio. Es el tipo de cuenta, según su uso (p.ej., Google) y cuál es su mecanismo de acceso (p.ej., nombre de usuario y contraseña). account_type puede ser solo uno de los siguientes: |
|
googleAuto |
Cuenta de acceso a Google automática. |
GoogleAuto
Este tipo no tiene campos.
Habilita el acceso automático a la Cuenta de Google. Si se establece, el servicio genera automáticamente una cuenta de prueba de Google y la agrega al dispositivo antes de ejecutar la prueba. Ten en cuenta que las cuentas de prueba pueden reutilizarse. Cuando hay una cuenta en el dispositivo, muchas aplicaciones muestran todo el conjunto de funcionalidades. Si accedes a un dispositivo con estas cuentas generadas, podrás probar más funcionalidades.
EnvironmentVariable
Se pasa un par clave-valor a la prueba como una variable de entorno.
Representación JSON |
---|
{ "key": string, "value": string } |
Campos | |
---|---|
key |
Clave de la variable de entorno. |
value |
Valor de la variable de entorno. |
Configuración de Systrace
Representación JSON |
---|
{ "durationSeconds": integer } |
Campos | |
---|---|
durationSeconds |
Duración de Systrace en segundos Debe durar entre 1 y 30 segundos. 0 inhabilita Systrace. |
IosTestSetup
Es una descripción de cómo configurar un dispositivo iOS antes de ejecutar la prueba.
Representación JSON |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
Campos | |
---|---|
networkProfile |
Es el perfil de tráfico de red que se usa para ejecutar la prueba. Cuando llames a TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog, puedes usar el tipo de entorno NETWORK_CONFIGURATION para realizar consultas en los perfiles de red disponibles. |
additionalIpas[] |
Son apps para iOS que se instalan, además de las que se prueban directamente. |
pushFiles[] |
Es una lista de archivos que se debe enviar al dispositivo antes de comenzar la prueba. |
pullDirectories[] |
Lista de directorios en el dispositivo que se subirán a Cloud Storage al final de la prueba. Los directorios deben estar en un directorio compartido (como /private/var/mobile/Media) o dentro de un directorio accesible dentro del sistema de archivos de la app (como /Documents) especificando el ID del paquete. |
Archivo de dispositivo iOS
Es un archivo o directorio que se debe instalar en el dispositivo antes de comenzar la prueba.
Representación JSON |
---|
{
"content": {
object ( |
Campos | |
---|---|
content |
El archivo fuente |
bundleId |
El ID del paquete de la app en la que se encuentra este archivo. Las apps para iOS hacen una zona de pruebas de su propio sistema de archivos, por lo que los archivos de apps deben especificar qué app está instalada en el dispositivo. |
devicePath |
Ubicación del archivo en el dispositivo, dentro del sistema de archivos de zona de pruebas de la app |
AndroidInstrumentationTest
Es una prueba de una aplicación para Android que puede controlar un componente independientemente de su ciclo de vida normal. Las pruebas de instrumentación de Android ejecutan el APK de la aplicación y lo prueban en el mismo proceso en un dispositivo Android virtual o físico. También especifican la clase de un ejecutor de pruebas, como com.google.GoogleTestRunner, que puede variar según el marco de trabajo específico de instrumentación que elijas.
Para obtener más información sobre los tipos de pruebas de Android, consulta https://developer.android.com/training/testing/fundamentals.
Representación JSON |
---|
{ "testApk": { object ( |
Campos | |
---|---|
testApk |
Obligatorio. Es el APK que contiene el código de prueba que se ejecutará. |
appPackageId |
Es el paquete Java de la aplicación de prueba. Para determinar su valor predeterminado, se debe examinar el manifiesto de la aplicación. |
testPackageId |
Es el paquete Java que se ejecutará en la prueba. Para determinar su valor predeterminado, se debe examinar el manifiesto de la aplicación. |
testRunnerClass |
Es la clase InstrumentationTestRunner. Para determinar su valor predeterminado, se debe examinar el manifiesto de la aplicación. |
testTargets[] |
Cada destino debe estar completamente calificado con el nombre de paquete o de clase en uno de estos formatos:
Si estos valores están vacíos, se ejecutarán todos los objetivos del módulo. |
orchestratorOption |
Esta opción indica si debes ejecutar cada prueba en su propia invocación de instrumentación con Android Test Orchestrator. ** Orchestrator solo es compatible con la versión 1.1 de AndroidJUnitRunner o versiones posteriores. ** Orchestrator ofrece los siguientes beneficios:
Consulta https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator para obtener más información sobre Android Test Orchestrator. Si no se configuran, se ejecutará la prueba sin Orchestrator. |
shardingOption |
La opción de ejecutar pruebas en varios fragmentos en paralelo. |
Campo de unión app_under_test . Obligatorio. app_under_test puede ser solo uno de los siguientes: |
|
appApk |
Es el APK de la aplicación de prueba. |
appBundle |
Es el paquete de aplicación con múltiples APK de la app de prueba. |
AppBundle
Es un archivo de formato Android App Bundle que contiene un archivo BundleConfig.pb, un directorio de módulo base y cero o más directorios de módulo de características dinámicas.
Consulta https://developer.android.com/guide/app-bundle/build para obtener más orientación sobre cómo crear paquetes de aplicación.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión bundle . Obligatorio. Información de ubicación del paquete. bundle puede ser solo uno de los siguientes: |
|
bundleLocation |
Es un archivo .aab que representa el paquete de aplicación de prueba. |
OrchestratorOption
Permite especificar cómo ejecutar la prueba.
Enums | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED |
Valor predeterminado: el servidor elegirá el modo. Actualmente implica que la prueba se ejecutará sin Orchestrator. En el futuro, todas las pruebas de instrumentación se ejecutarán con Orchestrator. Te recomendamos que uses esta herramienta por todos los beneficios que ofrece. |
USE_ORCHESTRATOR |
Ejecuta la prueba con Orchestrator. ** Solo es compatible con AndroidJUnitRunner versión 1.1 o posterior. ** Sugerencia recomendada. |
DO_NOT_USE_ORCHESTRATOR |
Ejecuta la prueba sin usar Orchestrator. |
Opción de fragmentación
Opciones para habilitar la fragmentación.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión
|
|
uniformSharding |
Fragmenta de manera uniforme los casos de prueba a partir de una cantidad total de fragmentos. |
manualSharding |
Fragmenta los casos de prueba en los grupos especificados de paquetes, clases o métodos. |
smartSharding |
Prueba de fragmentos según los registros de tiempo de casos de prueba anteriores. |
Fragmentación uniforme
Fragmenta de manera uniforme los casos de prueba a partir de una cantidad total de fragmentos.
Para las pruebas de instrumentación, se traducirá a "-e numShard" y "-e shardIndex" Argumentos de AndroidJUnitRunner. Con la fragmentación uniforme habilitada, no es válido especificar cualquiera de estos argumentos de fragmentación a través de environmentVariables
.
Según el mecanismo de fragmentación que usa AndroidJUnitRunner, no hay garantía de que los casos de prueba se distribuyan de manera uniforme entre todos los fragmentos.
Representación JSON |
---|
{ "numShards": integer } |
Campos | |
---|---|
numShards |
Obligatorio. La cantidad total de fragmentos que se crearán. Siempre debe ser un número positivo que no sea mayor que la cantidad total de casos de prueba. Cuando seleccionas uno o más dispositivos físicos, la cantidad de fragmentos debe ser menor o igual que 50. Cuando seleccionas uno o más dispositivos virtuales ARM, el valor debe ser <= 200. Cuando seleccionas solo dispositivos virtuales x86, el valor debe ser <= 500. |
Fragmentación manual
Fragmenta los casos de prueba en los grupos especificados de paquetes, clases o métodos.
Con la fragmentación manual habilitada, no es válido especificar objetivos de prueba a través de variables de entorno o en InstrumentationTest.
Representación JSON |
---|
{
"testTargetsForShard": [
{
object ( |
Campos | |
---|---|
testTargetsForShard[] |
Obligatorio. Grupo de paquetes, clases o métodos de prueba que se ejecutarán para cada fragmento creado manualmente. Si este campo está presente, debes especificar al menos un fragmento. Cuando seleccionas uno o más dispositivos físicos, la cantidad de testTargetsForShard repetidas debe ser menor o igual que 50. Cuando seleccionas uno o más dispositivos virtuales ARM, el valor debe ser <= 200. Cuando seleccionas solo dispositivos virtuales x86, el valor debe ser <= 500. |
TestTargetsForShard
Destinos de prueba de un fragmento.
Representación JSON |
---|
{ "testTargets": [ string ] } |
Campos | |
---|---|
testTargets[] |
Grupo de paquetes, clases o métodos de prueba que se ejecutarán para cada fragmento. Los destinos deben especificarse en formato de argumento AndroidJUnitRunner. Por ejemplo, “paquete com.my.packages” “class com.my.package.MyClass”. La cantidad de testTargets debe ser superior a 0. |
Fragmentación inteligente
Prueba de fragmentos según los registros de tiempo de casos de prueba anteriores.
Representación JSON |
---|
{ "targetedShardDuration": string } |
Campos | |
---|---|
targetedShardDuration |
La cantidad de tiempo que deberían tardar las pruebas dentro de un fragmento. Valor predeterminado: 300 segundos (5 minutos). El mínimo permitido: 120 segundos (2 minutos). El recuento de fragmentos se establece dinámicamente en función del tiempo, hasta el límite máximo de fragmentos (descrito a continuación). A fin de garantizar al menos un caso de prueba para cada fragmento, la cantidad de fragmentos no superará la cantidad de casos de prueba. Se superará la duración de fragmentación en los siguientes casos:
No se garantiza la duración de la fragmentación porque la fragmentación inteligente utiliza el historial de casos de prueba y las duraciones predeterminadas que podrían no ser precisas. Las reglas para encontrar los registros de tiempo de casos de prueba son las siguientes:
Debido a que la duración real del fragmento puede superar la duración objetivo, te recomendamos que establezcas el valor objetivo al menos 5 minutos menos que el tiempo de espera máximo de la prueba permitido (45 minutos para los dispositivos físicos y 60 minutos para los virtuales) o que uses el valor de tiempo de espera de la prueba personalizado que estableciste. Este enfoque evita que se cancele el fragmento antes de que puedan finalizar todas las pruebas. Ten en cuenta que hay un límite para la cantidad máxima de fragmentos. Cuando seleccionas uno o más dispositivos físicos, la cantidad de fragmentos debe ser menor o igual que 50. Cuando seleccionas uno o más dispositivos virtuales ARM, el valor debe ser <= 200. Cuando seleccionas solo dispositivos virtuales x86, el valor debe ser <= 500. Para garantizar al menos un caso de prueba por fragmento, la cantidad de fragmentos no superará la cantidad de casos de prueba. Cada fragmento creado se considera en la cuota de prueba diaria. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
AndroidRoboTest
Es una prueba de una aplicación para Android que permite explorarla en un dispositivo Android virtual o físico. Encuentra las fallas y sus causantes durante el proceso.
Representación JSON |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
Campos | |
---|---|
appPackageId |
Es el paquete Java de la aplicación de prueba. Para determinar su valor predeterminado, se debe examinar el manifiesto de la aplicación. |
appInitialActivity |
La primera actividad que debería usarse para iniciar la app. |
maxDepth |
Es la máxima profundidad que el Robo de pila trasversal puede explorar. Debe tener un valor de al menos 2 para que Robo explore la app después de la primera actividad. El valor predeterminado es 50. |
maxSteps |
Es la cantidad máxima de pasos que Robo puede ejecutar. El valor predeterminado es sin límite. |
roboDirectives[] |
Es un conjunto de directivas que Robo debe aplicar durante el rastreo. Esto permite que los usuarios personalicen el rastreo. Por ejemplo, se pueden proporcionar el nombre de usuario y la contraseña de una cuenta de prueba. |
roboMode |
El modo en el que se debe ejecutar Robo. La mayoría de los clientes deben permitir que el servidor complete este campo automáticamente. |
roboScript |
Es un archivo JSON con una secuencia de acciones que Robo debería realizar antes del rastreo. |
startingIntents[] |
Son los intent usados para iniciar la app a fin de rastrearla. Si no se proporciona ninguno, se comenzará la actividad iniciadora principal. Solo se iniciarán los intent proporcionados (se debe señalar explícitamente la actividad iniciadora principal). |
Campo de unión app_under_test . Obligatorio. app_under_test puede ser solo uno de los siguientes: |
|
appApk |
Es el APK de la aplicación de prueba. |
appBundle |
Es el paquete de aplicación con múltiples APK de la app de prueba. |
RoboDirective
Indica a Robo que debe interactuar con un elemento específico de la IU si lo encuentra durante el rastreo. Por el momento, Robo puede realizar entradas de texto o clics en elementos.
Representación JSON |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
Campos | |
---|---|
resourceName |
Obligatorio. Es el nombre del recurso de Android del elemento objetivo de la IU. Por ejemplo: en Java, R.string.foo y en xml: @string/foo. Solo la parte “foo” es necesaria. Consulta el siguiente documento de referencia https://developer.android.com/guide/topics/resources/accessing-resources.html. |
inputText |
El texto que Robo debe configurar. Si se deja en blanco, se entenderá la instrucción como un CLIC en el elemento que coincida con resourceName. |
actionType |
Obligatorio. Es el tipo de acción que Robo debería realizar en el elemento especificado. |
RoboActionType
Acciones que Robo puede realizar en los elementos de la IU.
Enums | |
---|---|
ACTION_TYPE_UNSPECIFIED |
NO SE DEBE USAR. Solo puedes hacerlo en el control de versiones proto. |
SINGLE_CLICK |
Instruye a Robo para que haga clic en el elemento especificado. No funcionará si no se puede hacer clic en el elemento especificado. |
ENTER_TEXT |
Instruye a Robo para que ingrese texto en el elemento especificado. No funcionará si este elemento no está habilitado o no permite la entrada de texto. |
IGNORE |
Indica a Robo que ignore las interacciones con un elemento específico. |
Modo Robo
El modo en el que se debe ejecutar Robo.
Enums | |
---|---|
ROBO_MODE_UNSPECIFIED |
Esto significa que el servidor debe elegir el modo. Recomendado. |
ROBO_VERSION_1 |
Ejecuta Robo en el modo de solo UIAutomator sin tener que volver a firmar la app. |
ROBO_VERSION_2 |
Ejecuta Robo en Espresso estándar con resguardo de UIAutomator |
RoboStartingIntent
Es un mensaje que permite especificar las actividades de inicio para el rastreo.
Representación JSON |
---|
{ "timeout": string, // Union field |
Campos | |
---|---|
timeout |
Tiempo de espera en segundos para cada intent. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
Campo de unión starting_intent . Obligatorio. Detalles del intent para iniciar una actividad. starting_intent puede ser solo uno de los siguientes: |
|
launcherActivity |
Es un intent que inicia la actividad iniciadora principal. |
startActivity |
Es un intent que inicia una actividad con detalles específicos. |
noActivity |
Omite la actividad inicial |
LauncherActivityIntent
Este tipo no tiene campos.
Permite especificar un intent que comienza la actividad iniciadora principal.
StartActivityIntent
Es un intent de inicio especificado por acción, URI o categorías.
Representación JSON |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
Campos | |
---|---|
action |
Es el nombre de la acción. Es obligatorio para START_ACTIVITY. |
uri |
Es el URI de la acción. |
categories[] |
Son las categorías que se deben establecer en el intent. |
NoActivityIntent
Este tipo no tiene campos.
Omite la actividad inicial
AndroidTestLoop
Es una prueba de una aplicación para Android con un bucle de prueba. Se agregará el intent <intent-name> de forma implícita, ya que, por el momento, Games es el único usuario de esta API.
Representación JSON |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
Campos | |
---|---|
appPackageId |
Es el paquete Java de la aplicación de prueba. Para determinar su valor predeterminado, se debe examinar el manifiesto de la aplicación. |
scenarios[] |
Es la lista de situaciones que se deberían ejecutar durante la prueba. El valor predeterminado corresponde a todos los bucles de prueba que aparecen en el manifiesto de la aplicación. |
scenarioLabels[] |
La lista de etiquetas de situación que se deben ejecutar durante la prueba. Las etiquetas de situación deben asignarse a etiquetas definidas en el manifiesto de la aplicación. Por ejemplo, player_experience y com.google.test.loops.player_experience permiten agregar a la ejecución todos los bucles etiquetados en el manifiesto con el nombre com.google.test.loops.player_experience. Las situaciones también se deben especificar en el campo Situaciones. |
Campo de unión app_under_test . Obligatorio. Es el paquete de Android que se probará. app_under_test puede ser solo uno de los siguientes: |
|
appApk |
Es el APK de la aplicación de prueba. |
appBundle |
Es el paquete de aplicación con múltiples APK de la app de prueba. |
IosXcTest
Es una prueba de una aplicación para iOS que usa un marco de trabajo XCTest. Xcode es compatible con la opción de “compilar para pruebas”, que genera un archivo .xctestrun con una especificación de pruebas (argumentos, métodos de prueba, etc.). Este tipo de prueba admite un archivo ZIP que contenga el archivo .xctestrun y los contenidos pertinentes del directorio Build/Products con todos los objetos binarios necesarios para ejecutar las pruebas.
Representación JSON |
---|
{ "testsZip": { object ( |
Campos | |
---|---|
testsZip |
Obligatorio. Es el archivo ZIP que contiene el archivo .xctestrun y los contenidos del directorio DerivedData/Build/Products. Se ignora el archivo .xctestrun en el ZIP si se especifica el campo xctestrun. |
xctestrun |
Es un archivo .xctestrun que anulará al mismo archivo en los ZIP de pruebas. Ya que contiene variables de entorno junto con métodos de prueba que se pueden ejecutar o ignorar, puede ser útil en pruebas de fragmentación. El archivo predeterminado se obtiene del archivo ZIP de pruebas. |
xcodeVersion |
La versión de Xcode que se debe usar para la prueba. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. De forma predeterminada, usa la versión de Xcode más reciente que es compatible con Firebase Test Lab. |
appBundleId |
Solo salida. Es el ID del paquete de la aplicación de prueba. |
testSpecialEntitlements |
La opción de probar derechos especiales de la app La configuración volvería a firmar la app con derechos especiales con un identificador de aplicación explícito. Actualmente, admite pruebas de la autorización de Aps-environment. |
IosTestLoop
Es una prueba de una aplicación para iOS que implementa una o más situaciones de bucle de juego. Este tipo de prueba acepta una aplicación archivada (archivo .ipa) y una lista de situaciones de números enteros que se ejecutarán en la app de manera secuencial.
Representación JSON |
---|
{
"appIpa": {
object ( |
Campos | |
---|---|
appIpa |
Obligatorio. El archivo .ipa de la aplicación que se probará. |
scenarios[] |
Es la lista de situaciones que se deben ejecutar durante la prueba. Si no se especifica, el valor predeterminado es la única situación 0. |
appBundleId |
Solo salida. Es el ID del paquete de la aplicación de prueba. |
Prueba de IosRobo
Es una prueba que explora una aplicación para iOS en un dispositivo iOS.
Representación JSON |
---|
{ "appIpa": { object ( |
Campos | |
---|---|
appIpa |
Obligatorio. Para ejecutar la prueba, se debe utilizar el IAP almacenado en este archivo. |
appBundleId |
Es el ID del paquete de la app que está a prueba. Esto se determina examinando el archivo "Info.plist" de la aplicación . |
roboScript |
Una secuencia de comandos de Robo opcional para personalizar el rastreo Para obtener más información sobre Roboscript, consulta https://firebase.google.com/docs/test-lab/android/robo-scripts-reference. |
EnvironmentMatrix
Es la matriz de entornos en la que se ejecutará la prueba.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión environment_matrix . Obligatorio. La matriz de entorno. environment_matrix puede ser solo uno de los siguientes: |
|
androidMatrix |
Es una matriz para los dispositivos Android. |
androidDeviceList |
Es una lista de los dispositivos Android. La prueba solamente se ejecutará en los dispositivos especificados. |
iosDeviceList |
Es una lista de los dispositivos iOS. |
AndroidMatrix
Se define un conjunto de permutaciones de la configuración de dispositivos Android con el producto cruzado de un eje determinado. De manera interna, el AndroidMatrix pertinente se ampliará a un conjunto de dispositivos Android.
Solo se creará una instancia para las permutaciones compatibles y se ignorarán las no válidas (p. ej., modelos o versiones incompatibles).
Representación JSON |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
Campos | |
---|---|
androidModelIds[] |
Obligatorio. Son los ID del conjunto de dispositivos Android que se usará. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
androidVersionIds[] |
Obligatorio. Son los ID del conjunto de las versiones del SO Android que se usará. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
locales[] |
Obligatorio. Es el conjunto de configuraciones regionales que un dispositivo habilitará para realizar la prueba. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
orientations[] |
Obligatorio. Es el conjunto de orientaciones que se probarán. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
AndroidDeviceList
Es una lista de configuraciones de dispositivos Android en la que se ejecutará la prueba.
Representación JSON |
---|
{
"androidDevices": [
{
object ( |
Campos | |
---|---|
androidDevices[] |
Obligatorio. Es una lista de los dispositivos Android. |
IosDeviceList
Es una lista de configuraciones de dispositivos iOS en la que se ejecutará la prueba.
Representación JSON |
---|
{
"iosDevices": [
{
object ( |
Campos | |
---|---|
iosDevices[] |
Obligatorio. Es una lista de los dispositivos iOS. |
IosDevice
Es un solo dispositivo iOS.
Representación JSON |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
Campos | |
---|---|
iosModelId |
Obligatorio. Es el ID del dispositivo iOS que se usará. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
iosVersionId |
Obligatorio. Es el ID de la versión principal del software de iOS que se usará. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
locale |
Obligatorio. Es la configuración regional que usó el dispositivo durante la prueba. Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
orientation |
Obligatorio. Cómo se orientó el dispositivo durante la prueba Usa TestEnvironmentDiscoveryService para obtener opciones compatibles. |
TestExecution
Una única prueba ejecutada en un único entorno.
Representación JSON |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
Campos | |
---|---|
id |
Solo salida. ID único que el servicio determina. |
matrixId |
Solo salida. Es el ID del TestMatrix pertinente. |
projectId |
Solo salida. Es el proyecto de Cloud al que pertenece la ejecución de prueba. |
testSpecification |
Solo salida. Se refiere a cómo ejecutar la prueba. |
shard |
Solo salida. Detalles sobre el fragmento. |
environment |
Solo salida. Se refiere a cómo las máquinas host están configuradas. |
state |
Solo salida. Indica el progreso actual de la ejecución de prueba (p.ej., TERMINADO). |
toolResultsStep |
Solo salida. Es el lugar en el que se escriben los resultados de la ejecución. |
timestamp |
Solo salida. Es la fecha y hora en que inicialmente se creó la ejecución de prueba. Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: |
testDetails |
Solo salida. Son los detalles adicionales sobre la prueba en ejecución. |
Fragmento
Solo salida. Detalles sobre el fragmento.
Representación JSON |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
Campos | |
---|---|
shardIndex |
Solo salida. El índice del fragmento entre todos los fragmentos. |
numShards |
Solo salida. La cantidad total de fragmentos. |
testTargetsForShard |
Solo salida. Destinos de prueba para cada fragmento. Solo se configuró para la fragmentación manual. |
estimatedShardDuration |
Solo salida. La duración estimada de la fragmentación según los registros de tiempo de casos de prueba anteriores, si están disponibles. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
Entorno
Es el entorno en el que se ejecutará la prueba.
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión environment . Obligatorio. El entorno environment puede ser solo uno de los siguientes: |
|
androidDevice |
Es el dispositivo Android que se debe usar en una prueba de Android. |
iosDevice |
Es el dispositivo iOS que se debe usar en una prueba de iOS. |
TestState
El estado (o progreso) de una ejecución o matriz de prueba.
Enums | |
---|---|
TEST_STATE_UNSPECIFIED |
No se debe usar. Solo puedes hacerlo en el control de versiones proto. |
VALIDATING |
Se está validando la ejecución o matriz. |
PENDING |
La ejecución o matriz está esperando que los recursos estén disponibles. |
RUNNING |
Se está procesando la ejecución. Solo se puede configurar en una ejecución. |
FINISHED |
Se finalizó la ejecución o matriz correctamente. En una matriz, significa que se completó el procesamiento a nivel de la matriz correctamente. Sin embargo, pueden haber ejecuciones individuales con un estado de ERROR. |
ERROR |
Se detuvo la ejecución o matriz porque se encontró una falla en la infraestructura. |
UNSUPPORTED_ENVIRONMENT |
No se realizó la ejecución porque corresponde a un entorno no compatible. Solo se puede configurar en una ejecución. |
INCOMPATIBLE_ENVIRONMENT |
No se realizó la ejecución porque las entradas son incompatibles con el entorno solicitado. Ejemplo: El AndroidVersion solicitado es menor que el minSdkVersion del APK Solo se puede configurar en una ejecución. |
INCOMPATIBLE_ARCHITECTURE |
No se realizó la ejecución porque las entradas son incompatibles con la arquitectura solicitada. Ejemplo: El dispositivo solicitado no admite la ejecución del código nativo en el APK proporcionado. Solo se puede configurar en una ejecución. |
CANCELLED |
El usuario canceló la ejecución. Solo se puede configurar en una ejecución. |
INVALID |
No se realizó la ejecución o matriz porque las entradas proporcionadas no son válidas. Ejemplos: El archivo de entrada no es del tipo esperado, tiene un formato incorrecto, está dañado o se marcó como software malicioso. |
ToolResultsStep
Representa el paso de los resultados de una herramienta, que es un recurso.
Contiene los resultados de un TestExecution.
Representación JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
Campos | |
---|---|
projectId |
Solo salida. Es el proyecto de Cloud al que pertenece el paso de los resultados de la herramienta. |
historyId |
Solo salida. Es el ID del historial de los resultados de la herramienta. |
executionId |
Solo salida. Es el ID de la ejecución de los resultados de la herramienta. |
stepId |
Solo salida. Es el ID del paso de los resultados de la herramienta. |
TestDetails
Son los detalles adicionales sobre el progreso de la prueba en ejecución.
Representación JSON |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
Campos | |
---|---|
progressMessages[] |
Solo salida. Son descripciones detalladas y legibles del progreso de la prueba. Por ejemplo: “Aprovisionando un dispositivo” o “comenzando la prueba”. Durante la ejecución, se pueden agregar datos nuevos al final de progressMessages. |
errorMessage |
Solo salida. Si TestState muestra un ERROR, esta string contendrá detalles legibles sobre el error. |
ResultStorage
Son las ubicaciones en las que se almacenan los resultados de la ejecución de la prueba.
Representación JSON |
---|
{ "googleCloudStorage": { object ( |
Campos | |
---|---|
googleCloudStorage |
Obligatorio. |
toolResultsHistory |
Es el historial de resultados de la herramienta que contiene la ejecución de los resultados de la herramienta en el que se escriben tales resultados. Si no se proporciona, el servicio elegirá un valor apropiado. |
toolResultsExecution |
Solo salida. Es la ejecución de resultados de la herramienta en la que se escriben los resultados. |
resultsUrl |
Solo salida. URL de los resultados en Firebase Web Console. |
GoogleCloudStorage
Es una ubicación de almacenamiento en Google Cloud Storage (GCS).
Representación JSON |
---|
{ "gcsPath": string } |
Campos | |
---|---|
gcsPath |
Obligatorio. La ruta de acceso a un directorio en GCS que contendrá los resultados de esta prueba. El usuario solicitante debe tener acceso de escritura en el bucket de la ruta de acceso proporcionada. |
ToolResultsHistory
Representa el historial de los resultados de una herramienta, que es un recurso.
Representación JSON |
---|
{ "projectId": string, "historyId": string } |
Campos | |
---|---|
projectId |
Obligatorio. Es el proyecto de Cloud al que pertenece el historial de los resultados de la herramienta. |
historyId |
Obligatorio. Es el ID del historial de los resultados de la herramienta. |
ToolResultsExecution
Representa la ejecución de los resultados de una herramienta, que es un recurso.
Contiene los resultados de un TestMatrix.
Representación JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
Campos | |
---|---|
projectId |
Solo salida. Es el proyecto de Cloud al que pertenece la ejecución de los resultados de la herramienta. |
historyId |
Solo salida. Es el ID del historial de los resultados de la herramienta. |
executionId |
Solo salida. Es el ID de la ejecución de los resultados de la herramienta. |
InvalidMatrixDetails
Es el motivo detallado por el que se consideró una matriz como NO VÁLIDA.
Enums | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED |
No se debe usar. Solo puedes hacerlo en el control de versiones proto. |
DETAILS_UNAVAILABLE |
La matriz es NO VÁLIDA, pero no hay detalles adicionales disponibles. |
MALFORMED_APK |
No se pudo analizar el APK de la app de entrada. |
MALFORMED_TEST_APK |
No se pudo analizar el APK de la prueba de entrada. |
NO_MANIFEST |
No se pudo encontrar el archivo AndroidManifest.xml. |
NO_PACKAGE_NAME |
El manifiesto del APK no declara el nombre del paquete. |
INVALID_PACKAGE_NAME |
El ID de aplicación del APK (también conocido como nombre del paquete) no es válido. Consulta también https://developer.android.com/studio/build/application-id |
TEST_SAME_AS_APP |
El paquete de la prueba y la app son los mismos. |
NO_INSTRUMENTATION |
El APK de prueba no declara una instrumentación. |
NO_SIGNATURE |
El APK de la app de entrada no tiene una firma. |
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE |
La clase del ejecutor de pruebas que el usuario especificó o que aparece en el archivo de manifiesto de prueba del APK no es compatible con Android Test Orchestrator. Orchestrator solo es compatible con la versión 1.1 de AndroidJUnitRunner o versiones posteriores. Puedes usar la OrchestratorOption DO_NOT_USE_ORCHESTRATOR para inhabilitar esta herramienta. |
NO_TEST_RUNNER_CLASS |
El APK de prueba no contiene la clase de ejecutor de pruebas que especificó el usuario o en el archivo de manifiesto. Esto puede deberse a alguno de los siguientes motivos:
|
NO_LAUNCHER_ACTIVITY |
No se pudo encontrar una actividad iniciadora principal. |
FORBIDDEN_PERMISSIONS |
La app declara uno o más permisos no permitidos. |
INVALID_ROBO_DIRECTIVES |
Existe un conflicto entre las roboDirectives proporcionadas. |
INVALID_RESOURCE_NAME |
Hay al menos un nombre de recurso no válido en las directivas de Robo proporcionadas |
INVALID_DIRECTIVE_ACTION |
Definición no válida de la acción en las directivas de Robo (p.ej., una acción de hacer clic o ignorar incluye un campo de texto de entrada) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND |
No hay un filtro de intents de bucle de prueba o el que se proporciona no tiene el formato correcto. |
SCENARIO_LABEL_NOT_DECLARED |
La solicitud contiene una etiqueta de situación no declarada en el manifiesto. |
SCENARIO_LABEL_MALFORMED |
Hubo un problema durante el análisis del valor de una etiqueta. |
SCENARIO_NOT_DECLARED |
La solicitud contiene un número de situación no declarado en el manifiesto. |
DEVICE_ADMIN_RECEIVER |
No pueden utilizarse las aplicaciones del administrador del dispositivo. |
MALFORMED_XC_TEST_ZIP |
El XCTest comprimido tiene un formato incorrecto. El archivo ZIP no incluyó un archivo .xctestrun ni el contenido del directorio DerivedData/Build/Products. |
BUILT_FOR_IOS_SIMULATOR |
El XCTest del archivo zip se compiló para el simulador de iOS y no para un dispositivo físico. |
NO_TESTS_IN_XC_TEST_ZIP |
El archivo .xctestrun no especificó ningún objetivo de prueba. |
USE_DESTINATION_ARTIFACTS |
Uno o más de los objetivos de prueba definidos en el archivo .xctestrun especifica “UseDestinationArtifacts”, que no está permitido. |
TEST_NOT_APP_HOSTED |
Las XCTest que se ejecutan en dispositivos físicos deben tener el valor “IsAppHostedTestBundle” == “true” en el archivo xctestrun. |
PLIST_CANNOT_BE_PARSED |
No se pudo analizar el archivo Info.plist en el archivo XCTest.zip. |
TEST_ONLY_APK |
El APK está marcado como “testOnly”. Está obsoleto y no se usa en este momento. |
MALFORMED_IPA |
No se pudo analizar el IPA de la app de entrada. |
MISSING_URL_SCHEME |
La aplicación no registra el esquema de URL del bucle de juego. |
MALFORMED_APP_BUNDLE |
No se pudo procesar el paquete de aplicación para iOS (.app). |
NO_CODE_APK |
El APK no tiene códigos. Consulta también https://developer.android.com/guide/topics/manifest/application-element.html#code |
INVALID_INPUT_APK |
Ocurrió una de las siguientes opciones: El APK de entrada proporcionado tiene un formato incorrecto, no existe un archivo APK o el usuario no tiene permiso para acceder al archivo APK. |
INVALID_APK_PREVIEW_SDK |
Se compiló el APK para un SDK de vista previa que no es compatible. |
MATRIX_TOO_LARGE |
Se expandió la matriz para contener demasiadas ejecuciones. |
TEST_QUOTA_EXCEEDED |
No hay cuota de prueba suficiente para ejecutar las ejecuciones en esta matriz. |
SERVICE_NOT_ACTIVATED |
Una API de servicio en la nube obligatoria no está activada. Consulta: https://firebase.google.com/docs/test-lab/android/continuous#requirements |
UNKNOWN_PERMISSION_ERROR |
Se produjo un error de permisos desconocido cuando se ejecutaba esta prueba. |
MatrixErrorDetail
Describe un error o problema individual con una matriz.
Representación JSON |
---|
{ "reason": string, "message": string } |
Campos | |
---|---|
reason |
Solo salida. Es el motivo del error. Este es un valor constante en UPPER_SNAKE_CASE que identifica la causa del error. |
message |
Solo salida. Un mensaje legible sobre el error en la matriz de pruebas. Expande el campo |
Resumen de resultados
Resumen de los resultados de una matriz de prueba terminada.
Enums | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED |
No se debe usar. Solo puedes hacerlo en el control de versiones proto. |
SUCCESS |
La ejecución de la matriz de pruebas se realizó correctamente, por ejemplo:
|
FAILURE |
Una ejecución falló, por ejemplo:
|
INCONCLUSIVE |
Se produjo un error inesperado. La ejecución se debe considerar no exitosa, pero es probable que sea un problema transitorio y que se pueda volver a ejecutar la prueba con éxito. |
SKIPPED |
Se omitieron todas las pruebas, por ejemplo:
|
Métodos |
|
---|---|
|
Permite cancelar las ejecuciones de prueba sin terminar en una matriz de prueba. |
|
Permite crear y ejecutar una matriz de pruebas según las especificaciones correspondientes. |
|
Verifica el estado de una matriz de pruebas y las ejecuciones una vez que se crean. |