AWS Device Farm
Servicio que proporciona pruebas automatizadas y acceso remoto a aplicaciones en dispositivos móviles reales y navegadores de escritorio alojados en la nube de AWS
Descripción general
AWS Device Farm es un servicio de pruebas en la nube que permite ejecutar pruebas automatizadas y manuales de aplicaciones en smartphones, tablets y navegadores de escritorio reales alojados por AWS. Al utilizar dispositivos físicos en lugar de emuladores, permite detectar crashes, degradación de rendimiento y problemas de UI en condiciones cercanas al entorno real del usuario. Es compatible con aplicaciones Android, iOS y Web, y soporta los principales frameworks de pruebas como Appium, Espresso, XCTest y Calabash. Los resultados de las pruebas incluyen capturas de pantalla, videos, logs y datos de rendimiento, agilizando la reproducción de problemas y la identificación de causas.
Pools de dispositivos y mecanismo de ejecución de pruebas
La ejecución de pruebas en Device Farm comienza con la configuración del pool de dispositivos. Un pool de dispositivos define el conjunto de dispositivos físicos objetivo de las pruebas, filtrando por condiciones como versión de SO, fabricante y tamaño de pantalla. Por ejemplo, se pueden configurar pools como "dispositivos Samsung con Android 12 o superior" o "iPhone con iOS 16 o superior" para reproducir el entorno real de los usuarios objetivo. Al crear una ejecución (Run), el binario de la aplicación (.apk / .ipa) y el paquete de pruebas subidos se distribuyen a cada dispositivo del pool y se ejecutan en paralelo. Las pruebas en cada dispositivo se ejecutan en un entorno independiente, sin que queden datos de pruebas anteriores. Durante la ejecución se puede verificar el estado en tiempo real, y al completarse se generan capturas de pantalla por dispositivo, grabaciones de video, logcat/syslog y datos de rendimiento de CPU y memoria. El modelo de precios ofrece dos opciones: pago por uso por minuto de dispositivo y un plan ilimitado de tarifa mensual fija, seleccionando según la frecuencia de pruebas.
Frameworks de pruebas automatizadas y suites de pruebas
Device Farm soporta nativamente múltiples frameworks de pruebas automatizadas. Para Android es compatible con Appium (Java/Python/Node.js), Espresso, Calabash y UI Automator, y para iOS con Appium, XCTest (XCUITest) y Calabash. Para pruebas de aplicaciones Web se utiliza Selenium WebDriver, ejecutándose en navegadores de escritorio Chrome y Firefox. En la configuración de suites de pruebas, el archivo de especificación de pruebas (testspec.yml) permite definir hooks de procesamiento antes y después de la ejecución. Es posible personalizar la instalación de dependencias, configuración de variables de entorno, preparación de datos previos a las pruebas y recopilación de artefactos posteriores. Usando el fuzz test integrado (Built-in Fuzz), se pueden detectar crashes mediante operaciones UI aleatorias sin escribir código de prueba. Los resultados se agregan por suite y por caso de prueba, permitiendo identificar rápidamente los puntos problemáticos a partir de las capturas de pantalla y logs de las pruebas fallidas.
Integración CI/CD y análisis de resultados de pruebas
Al incorporar Device Farm en el pipeline CI/CD, se pueden ejecutar automáticamente pruebas en dispositivos reales con cada cambio de código. La integración con AWS CodePipeline cuenta con un proveedor de acciones nativo, bastando con agregar Device Farm como etapa de pruebas después de la etapa de build. Desde herramientas CI de terceros como Jenkins, GitHub Actions o Bitrise, se invoca la API de Device Farm mediante AWS CLI o AWS SDK. Para el análisis de resultados, un flujo de trabajo práctico consiste en descargar en lote capturas de pantalla, videos y logs mediante la Artifacts API e incorporarlos al sistema de reportes de pruebas interno. Rastreando la evolución temporal de datos de rendimiento (CPU, memoria, red, FPS), se pueden detectar regresiones de rendimiento entre releases. Exportar los resultados a S3 y analizarlos con Athena también es efectivo para visualizar tendencias de fallos por dispositivo y versión de SO.