View a markdown version of this page

Integración de la instrumentación de Android con Device Farm - AWS Device Farm

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Integración de la instrumentación de Android con Device Farm

nota

Siga estas instrucciones para integrar las pruebas de instrumentación de Android con AWS Device Farm. Para obtener más información sobre las pruebas de instrumentación en Device Farm, consulte Instrumentación para Android y AWS Device Farm.

Ejecuta las pruebas de instrumentación de Android (consola)

Utilice la consola de Device Farm para cargar las pruebas.

  1. Inicie sesión en la consola de Device Farm en https://console.aws.amazon.com/devicefarm.

  2. En el panel de navegación, seleccione Pruebas de dispositivos móviles y, a continuación, seleccione Proyectos.

  3. En la lista de proyectos, seleccione el proyecto en el que desea cargar las pruebas.

    sugerencia

    Puede utilizar la barra de búsqueda para filtrar la lista de proyectos por nombre.

    Para crear un proyecto, siga las instrucciones de Creación de un proyecto en AWS Device Farm.

  4. Seleccione Crear regla.

  5. En Seleccionar la aplicación y el tipo de ejecución, en la sección Tipo de ejecución, selecciona la aplicación Android.

  6. En Seleccionar aplicación, en la sección Opciones de selección de aplicaciones, elige Seleccionar una aplicación de muestra proporcionada por Device Farm si no tienes una aplicación. Si vas a traer tu propia aplicación, selecciona Cargar tu propia aplicación y, a continuación, elige tu APK (formato de archivo.apk).

  7. En Configurar la prueba, en la sección Seleccionar el marco de prueba, elige Instrumentación y, a continuación, elige Elegir archivo. Busque y seleccione el archivo APK (formato de archivo.apk) que contiene las pruebas.

  8. En Elija su entorno de ejecución, seleccione Ejecutar la prueba en un entorno personalizado o Ejecutar la prueba en nuestro entorno estándar. Para obtener más información, consulte Entornos de prueba de AWS Device Farm.

  9. Si eliges el entorno personalizado, puedes usar la especificación de prueba predeterminada que se rellena para las pruebas de instrumentación, o elegir Cargar tu propia especificación de prueba para proporcionar la tuya propia.

  10. En Seleccionar dispositivos, elige un método de selección de dispositivos. Selecciona Usar grupo de dispositivos para elegir entre una colección seleccionada de dispositivos o un grupo de dispositivos personalizado que hayas creado. Selecciona Seleccionar dispositivos manualmente para elegir dispositivos individuales con los que ejecutar las pruebas. La sección de compatibilidad de dispositivos muestra cuántos dispositivos del grupo seleccionado son compatibles con tu aplicación. Para obtener más información, consulte Compatibilidad de dispositivos en AWS Device Farm.

  11. Para configurar las propiedades a nivel de ejecución, actualiza la sección de ajustes de ejecución. Aquí puede hacer lo siguiente:

    1. (Opcional) Para que Device Farm genere un informe de prueba una vez finalizada la ejecución, selecciona Generar informe de prueba. Esta opción solo está disponible en un entorno de prueba personalizado. Device Farm genera el informe a partir de los resultados de la instrumentación incluidos en el resultado de las especificaciones de la prueba. Si subes tu propia especificación de prueba, asegúrate de incluir los resultados de la instrumentación en la salida de tu especificación de prueba.

  12. Complete los pasos restantes y, a continuación, inicie la ejecución.

Ver un informe de prueba (consola)

  1. Inicie sesión en la consola de Device Farm en https://console.aws.amazon.com/devicefarm.

  2. En el panel de navegación, seleccione Pruebas de dispositivos móviles y, a continuación, seleccione Proyectos.

  3. Elija el proyecto que contiene la ejecución que desea inspeccionar.

  4. Seleccione la ejecución finalizada para abrir sus detalles.

  5. Seleccione uno de los trabajos finalizados para abrir los resultados de ese dispositivo.

Con la información de prueba habilitada

Los resultados del trabajo incluyen una pestaña de informe de prueba. Elíjala para ver un desglose por prueba. Las siguientes capturas de pantalla muestran la pestaña del informe de prueba con todas las columnas visibles.

El primer conjunto de columnas de la pestaña Informe de prueba corresponde a un trabajo de instrumentación completado.
Las columnas restantes de la pestaña Informe de prueba corresponden a un trabajo de instrumentación completado.

La pestaña muestra los siguientes campos para cada prueba:

testName

El nombre del método de prueba.

testClass

El nombre de la clase de prueba.

result

El resultado de la prueba en Device Farm.

frameworkResult

El resultado que informó el marco de instrumentación. Device Farm asigna este valor al campo normalizado. result

durationSeconds

La duración de la prueba, en segundos.

startTimestamp

La hora en que comenzó la prueba.

endTimestamp

La hora en que finalizó la prueba.

current

La posición de la prueba durante la ejecución.

numTests

El número total de pruebas de la ejecución.

statusCode

El código de estado de la instrumentación sobre el que se informó en la prueba.

stream

Una versión legible por humanos del resultado de la instrumentación de la prueba.

stackTrace

En el caso de una prueba fallida, el rastro de la falla en la pila.

Para descargar el informe de prueba completo como un archivo JSON, selecciona Descargar el resumen completo en la parte superior de los detalles del trabajo.

Para elegir qué columnas aparecen, selecciona el icono con forma de engranaje. En la configuración, puedes seleccionar las columnas que quieres mostrar y activar o desactivar la opción Agrupar por clase. La opción Agrupar por clase está activada de forma predeterminada, lo que agrupa las pruebas según su clase de prueba. Desactívala para ver una lista plana de todas las pruebas, como se muestra en la siguiente captura de pantalla.

La pestaña del informe de las pruebas, con la opción Agrupar por clase desactivada, muestra una lista plana de las pruebas.

Sin la información sobre las pruebas habilitada

Los resultados del trabajo muestran el resultado de la prueba estándar y los artefactos, pero no muestran la pestaña Informe de prueba. Para generar un informe de prueba, programe una nueva ejecución con la información de prueba habilitada.

Los resultados del trabajo corresponden a un trabajo de instrumentación completado sin tener habilitada la información sobre las pruebas.

Ver un informe de prueba (AWS CLI)

Ejecute get-job y especifique el ARN del trabajo:

aws devicefarm get-job --arn arn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000

Sin la información de prueba habilitada

Si no has activado los datos de las pruebas, la respuesta contiene los campos de trabajo estándar, como el estado del trabajo, el resultado, los contadores y el dispositivo:

{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "name": "Example Android Phone", "created": "2026-08-05T14:26:56.959000-07:00", "status": "COMPLETED", "result": "PASSED", "counters": { "total": 3, "passed": 3, "failed": 0, "warned": 0, "errored": 0, "stopped": 0, "skipped": 0 }, "message": "Successful test lifecycle of Setup Test", "device": { "arn": "arn:aws:devicefarm:us-west-2::device:EXAMPLEDEVICEID", "name": "Example Android Phone", "platform": "ANDROID", "os": "16", "formFactor": "PHONE", "fleetType": "PUBLIC" }, "deviceMinutes": { "total": 1.38, "metered": 0.0, "unmetered": 1.13 }, "videoCapture": true } }

Con la información de prueba habilitada

Si has activado las estadísticas de las pruebas, la respuesta también incluye un insights objeto. Este objeto contiene el estado del informe de prueba, las métricas de alto nivel y una URL prefirmada para acceder al informe detallado:

{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "status": "COMPLETED", "result": "PASSED", "counters": { ... }, "device": { ... }, "deviceMinutes": { ... }, "videoCapture": true, "insights": { "status": "COMPLETED", "testReport": { "message": "Results: 2 Executed | 2 passed, Median test duration: 28.926 seconds.", "metrics": { "testsTotal": 2, "testsPassed": 2, "testsFailed": 0, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 100.0 }, "testDetailsUrl": "https://EXAMPLE-PRESIGNED-URL" } } } }

El testDetailsUrl campo es una URL prefirmada para el JSON completo del informe de prueba. Descárguelo para obtener el desglose por prueba:

curl -o test-report.json "PRESIGNED_URL"

El siguiente es un ejemplo de informe de prueba para un trabajo de instrumentación:

{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 26.004, "medianTestExecutionDurationSeconds": 1.598 }, "testDetails": [ { "testName": "testConnect", "testClass": "com.example.myapp.GpsConnectInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 24.399, "startTimestamp": "2026-08-05T20:38:30.131514Z", "endTimestamp": "2026-08-05T20:38:54.530369Z", "statusCode": 0, "current": 1, "numTests": 3 }, { "testName": "testHistoryOff", "testClass": "com.example.myapp.NotificationHistoryInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 1.598, "startTimestamp": "2026-08-05T20:38:54.531765Z", "endTimestamp": "2026-08-05T20:38:56.130032Z", "statusCode": 0, "current": 2, "numTests": 3 }, { "testName": "testConnect", "testClass": "com.example.myapp.WifiConnectInstrumentedTest", "frameworkResult": "FAILED", "result": "FAILED", "durationSeconds": 0.002, "startTimestamp": "2026-08-05T20:38:56.131857Z", "endTimestamp": "2026-08-05T20:38:56.133770Z", "stackTrace": "java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\tat com.example.myapp.WifiConnectInstrumentedTest.testConnect(WifiConnectInstrumentedTest.java:93)\n\t...", "stream": "\nError in testConnect(com.example.myapp.WifiConnectInstrumentedTest):\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...", "statusCode": -2, "current": 3, "numTests": 3 } ], "errorMessage": "There was 1 failure:\n1) testConnect(com.example.myapp.WifiConnectInstrumentedTest)\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...\nFAILURES!!!\nTests run: 3, Failures: 1", "instrumentationCode": -1 }

El informe contiene los siguientes campos de nivel superior:

version

La versión del esquema del informe.

jobArn

El ARN del trabajo.

metrics

Agregue los resultados del trabajo. El objeto metrics contiene los siguientes campos:

testsTotal

El número total de pruebas del trabajo.

testsPassed

El número de pruebas que se aprobaron.

testsFailed

El número de pruebas que fallaron.

testsSkipped

El número de pruebas que se omitieron.

testsErrored

El número de pruebas en las que se produjo un error.

testsOther

El número de pruebas con otro resultado.

testsPassedPercentage

El porcentaje de pruebas que se aprobaron.

totalTestExecutionDurationSeconds

La duración total de todas las pruebas, en segundos.

medianTestExecutionDurationSeconds

La duración media de una prueba, en segundos.

errorMessage

Si la ejecución tuvo errores, aparece un mensaje de error que los resume.

instrumentationCode

El código de salida general de la instrumentación del trabajo.

testDetails

Una lista de los resultados de cada prueba. Cada entrada testDetails contiene los siguientes campos:

testName

El nombre del método de ensayo.

testClass

El nombre de la clase de prueba.

result

El resultado de la prueba en Device Farm.

frameworkResult

El resultado que informó el marco de instrumentación. Device Farm asigna este valor al campo normalizado. result

durationSeconds

La duración de la prueba, en segundos.

startTimestamp

La hora en que comenzó la prueba.

endTimestamp

La hora en que finalizó la prueba.

current

La posición de la prueba durante la ejecución.

numTests

El número total de pruebas de la ejecución.

statusCode

El código de estado de la instrumentación sobre el que se informó en la prueba.

stream

Una versión legible por humanos del resultado de la instrumentación de la prueba.

stackTrace

En el caso de una prueba fallida, el rastro de la falla en la pila.

(Opcional) Capturas de pantalla en pruebas de instrumentación de Android

Puede realizar capturas de pantalla como parte de las pruebas de instrumentación para Android.

Para realizar capturas de pantalla, llame a uno de los siguientes métodos:

  • Para Robotium, llame al método takeScreenShot (por ejemplo, solo.takeScreenShot();).

  • Para Spoon, llame al método screenshot, por ejemplo:

    Spoon.screenshot(activity, "initial_state"); /* Normal test code... */ Spoon.screenshot(activity, "after_login");

Durante una ejecución de prueba, Device Farm obtiene automáticamente capturas de pantalla de las siguientes ubicaciones de los dispositivos, si las hay. A continuación, las añade a los informes de las pruebas:

  • /sdcard/robotium-screenshots

  • /sdcard/test-screenshots

  • /sdcard/Download/spoon-screenshots/test-class-name/test-method-name

  • /data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name