View a markdown version of this page

Integración de XCTest UI para iOS 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 XCTest UI para iOS con Device Farm

Device Farm es compatible con el marco de pruebas de XCTest UI. En concreto, Device Farm admite las pruebas de interfaz de usuario de XCTest escritas tanto Objective-C en Swift como en Swift.

El marco de XCTest UI permite realizar pruebas de la interfaz de usuario en el desarrollo de iOS, basado en XCTest. Para obtener más información, consulte User Interface Testing en la iOS Developer Library.

Para obtener información general sobre las pruebas en Device Farm, consulte Marcos de pruebas y pruebas integradas en AWS Device Farm.

Siga estas instrucciones para integrar Device Farm con el marco de pruebas de XCTest UI para iOS.

Preparación de las pruebas de XCTest UI para iOS

Puede cargar un archivo .ipa o .zip para su paquete de pruebas de XCTEST_UI.

Un archivo .ipa es un archivo de aplicaciones que contiene la aplicación iOS Runner en formato de paquete. No se pueden incluir archivos adicionales dentro del archivo .ipa.

Si sube un archivo .zip, puede contener directamente la aplicación iOS Runner o un archivo .ipa. También puede incluir otros archivos dentro del archivo .zip si desea utilizarlos durante las pruebas. Por ejemplo, puede incluir archivos como .xctestrun, .xcworkspace o .xcodeproj dentro de un archivo .zip, para ejecutar los planes de pruebas de XCUI en una granja de dispositivos. Las instrucciones detalladas sobre cómo ejecutar los planes de pruebas están disponibles en el archivo de especificaciones de pruebas predeterminado para el tipo de prueba XCUI.

Opción 1: creación de un paquete de XCTest UI .ipa

Xcode produce tu AppName UITest-Runner.app paquete cuando construyes tu proyecto para probarlo. Se encuentra en el directorio Products del proyecto.

Para crear un archivo .ipa:

  1. Cree un directorio denominado Payload.

  2. Añada el directorio de aplicaciones al directorio Payload.

  3. Archive el directorio Payload en un archivo .zip y, a continuación, cambie la extensión del archivo a .ipa.

La siguiente estructura de carpetas muestra cómo se my-project-nameUITest-Runner.app empaquetaría como un .ipa archivo una aplicación de ejemplo denominada:

. └── my-project-nameUITest.ipa └── Payload (directory) └── my-project-nameUITest-Runner.app

Opción 2: creación de un paquete de XCTest UI .zip

Device Farm genera automáticamente un archivo .xctestrun para ejecutar todo el conjunto de pruebas de XCTest UI. Si quiere usar su propio archivo .xctestrun en Device Farm, puede comprimir sus archivos .xctestrun y el directorio de aplicaciones en un archivo .zip. Si ya tienes un .ipa archivo para tu paquete de prueba, puedes incluirlo aquí en lugar de hacerlo*-Runner.app.

. └── swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa ├── SampleTestPlan_2.xctestrun ├── SampleTestPlan_1.xctestrun └── (any other files)

Si quieres ejecutar un plan de pruebas de Xcode para tus pruebas de XCUI en Device Farm, puedes crear un archivo zip que contenga el archivo my-project-name UITest-Runner.app o my-project-name y los archivos de código fuente de xcode necesarios para ejecutar XCTEST_UI con planes de prueba, incluido un UITest.ipa archivo o. .xcworkspace .xcodeproj

A continuación, se muestra un ejemplo de zip con un archivo .xcodeproj:

. └── swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa ├── (any directory) └── SampleXcodeProject.xcodeproj ├── Testplan_1.xctestplan ├── Testplan_2.xctestplan └── (any other source code files created by xcode with .xcodeproj)

A continuación, se muestra un ejemplo de zip con un archivo .xcworkspace:

. └──swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa └── (any directory) │ ├── SampleXcodeProject.xcodeproj │ ├── Testplan_1.xctestplan │ ├── Testplan_2.xctestplan | └── (any other source code files created by xcode with .xcodeproj) └── SampleWorkspace.xcworkspace └── contents.xcworkspacedata
nota

Asegúrese de no tener ningún directorio llamado Payload dentro del paquete .zip de XCTest UI.

Ejecuta las pruebas de interfaz de usuario de XCTest de iOS (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 ejecución.

  5. En Seleccionar aplicación y tipo de ejecución, en la sección Tipo de ejecución, elige aplicación iOS.

  6. En la sección Seleccionar aplicación, en Opciones de selección de aplicaciones, selecciona Cargar tu propia aplicación. A continuación, seleccione Elegir archivo en Cargar aplicación.

  7. Busque y elija el archivo de aplicación de iOS. El archivo debe ser un archivo .ipa.

    nota

    Asegúrese de que el archivo .ipa se ha compilado para un dispositivo iOS y no para un simulador.

  8. En la página Configurar prueba, en la sección Seleccionar marco de pruebas, elija Interfaz de usuario de XCTest. A continuación, seleccione Elegir archivo en Cargar aplicación.

  9. Busque y elija el archivo .ipa o .zip que contiene la aplicación de ejecución de pruebas de XCTest UI para iOS.

  10. (Opcional) Para configurar las propiedades a nivel de ejecución, actualice la sección de configuración de ejecución:

    1. Para que Device Farm genere un informe de información sobre las pruebas una vez finalizada la ejecución, habilita Generar informe de prueba. Esta opción solo está disponible en un entorno de prueba personalizado.

      Se aplican los siguientes requisitos previos:

      1. Las pruebas deben generar un .xcresult paquete de Xcode y escribirlo en él. $DEVICEFARM_DERIVED_DATA_PATH Por ejemplo, pase -derivedDataPath $DEVICEFARM_DERIVED_DATA_PATH a. xcodebuild La especificación de prueba de interfaz de usuario predeterminada de XCTest produce y almacena este paquete automáticamente si mantiene la configuración predeterminada.

      Para obtener más información sobre la visualización del informe, consulte. Ver un informe de prueba (consola)

  11. Complete los demás pasos del proceso de creación de la ejecución. Seleccione los dispositivos en los que desea realizar la prueba y, si lo desea, especifique una configuración adicional.

  12. Seleccione Crear ejecución. Device Farm ejecuta su prueba y muestra los resultados en la consola.

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 resumen de los resultados de las pruebas, incluido el número total de pruebas, el número de pruebas aprobadas y las fallidas, el tiempo total de ejecución de las pruebas y la mediana del tiempo de ejecución de las pruebas. Debajo del resumen, la tabla de pruebas muestra un desglose por prueba.

El primer conjunto de columnas de la pestaña Informe de prueba para un trabajo de interfaz de usuario de XCTest completado.
Las columnas restantes de la pestaña Informe de prueba corresponden a un trabajo de interfaz de usuario de XCTest completado.

Cada fila de la tabla de pruebas incluye las siguientes columnas:

  • Resultado: si la prueba se aprobó, falló o se omitió.

  • Clase de prueba: la clase a la que pertenece la prueba.

  • Nombre de la prueba: el nombre del método de prueba.

  • Seguimiento de la pila: en el caso de una prueba fallida, un enlace al seguimiento de la pila de la falla.

  • Duración: cuánto tiempo tardó en ejecutarse la prueba.

  • Hora de inicio y hora de finalización: cuándo comenzó y finalizó la prueba.

  • Resultado del marco: la cadena de resultados que el marco de XCTest informó para la prueba.

  • Paquete de prueba: el paquete de prueba al que pertenece la prueba.

  • Identificador de nodo: el identificador de nodo de xcresult para el caso de prueba.

Puede buscar una prueba por nombre, clase o estado. Para elegir qué columnas aparecen, elija el icono de configuración. 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. Amplía una clase para ver sus pruebas individuales, como se muestra en la siguiente captura de pantalla.

La pestaña del informe de pruebas, con las pruebas agrupadas por clase, muestra cada clase ampliada con sus pruebas individuales.

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.

Sin la información de prueba habilitada

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

Los resultados de un trabajo de interfaz de usuario de XCTest completado sin la información de la prueba habilitada, muestran las pestañas estándar y ninguna pestaña del informe de prueba.

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 habilitaste las estadísticas 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 Apple iPhone", "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 Apple iPhone", "platform": "IOS", "os": "18", "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 habilitado las estadísticas de las pruebas, la respuesta también incluye un insights objeto que contiene el estado del informe de la prueba, las métricas de alto nivel y una URL prefirmada que dirige 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: 3.214 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 interfaz de usuario de XCTest:

{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE/a1b2c3d4-e5f6-4a7b-8c9d-67890EXAMPLE/00000", "deviceName": "Apple iPhone 15", "deviceArn": "arn:aws:devicefarm:us-west-2::device:A1B2C3D4E5F60718293A4B5C6D7E8F90", "deviceOsVersion": "17.5", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 6.914, "medianTestExecutionDurationSeconds": 2.062 }, "testDetails": [ { "testName": "test_execute()", "testClass": "AlertsTest", "frameworkResult": "Passed", "result": "PASSED", "durationSeconds": 2.062, "startTimestamp": "2026-07-31T16:58:26.646000Z", "endTimestamp": "2026-07-31T16:58:28.708000Z", "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "AlertsTest/test_execute()" }, { "testName": "test_login()", "testClass": "LoginTest", "frameworkResult": "Failed", "result": "FAILED", "durationSeconds": 3.541, "startTimestamp": "2026-07-31T16:58:29.000000Z", "endTimestamp": "2026-07-31T16:58:32.541000Z", "stackTrace": "LoginTest.swift:88: XCTAssertEqual failed: (\"Welcome\") is not equal to (\"Error\")\nLoginTest.swift:91: XCTAssertTrue failed", "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "LoginTest/test_login()" }, { "testName": "test_themeRendering()", "testClass": "ThemeTest", "frameworkResult": "Passed", "result": "PASSED", "durationSeconds": 1.311, "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "ThemeTest/test_themeRendering()", "testArguments": "Dark Appearance, Portrait" } ] }

El informe contiene los siguientes campos de nivel superior:

version, jobArn

La versión del esquema del informe y el ARN del trabajo.

deviceName, deviceArn, deviceOsVersion

El nombre y el ARN del dispositivo que ejecutó el trabajo y la versión de su sistema operativo.

metrics

Resultados agregados del trabajo: el número total de pruebas (testsTotal) y el número de pruebas aprobadas (testsPassed), fallidas (testsFailed), omitidas (testsSkipped), erróneas () o con otro resultado (testsErrored), junto con la tasa de aprobación (testsOther), la duración total de la prueba (testsPassedPercentage) y la mediana de la duración de la prueba (totalTestExecutionDurationSeconds). medianTestExecutionDurationSeconds

Cada entrada testDetails contiene los siguientes campos:

testName, testClass

El nombre del método de prueba y su clase de prueba.

result, frameworkResult

El resultado de Device Farm de la prueba y la cadena de resultados que informó el marco XCTest. Device Farm se asigna frameworkResult al campo normalizado. result

durationSeconds, startTimestamp, endTimestamp

La duración de la prueba en segundos y las horas en las que comenzó y finalizó.

testBundle, nodeIdentifier

El paquete de prueba al que pertenece la prueba y el identificador del nodo xcresult para el caso de prueba.

testArguments

Para una invocación de prueba parametrizada, la etiqueta del argumento de la invocación.

stackTrace

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