¿Qué es Appium? Automatización de pruebas móviles
Appium es un framework de código abierto que automatiza apps iOS, Android y de escritorio con el protocolo WebDriver. Cómo funciona, drivers y FAQ.
¿Qué es Appium?
Appium es un framework de código abierto para automatizar la interfaz de apps móviles en iOS y Android, además de apps de escritorio y navegadores. Funciona como un servidor HTTP que implementa el protocolo WebDriver, así que el código de prueba, escrito en cualquier lenguaje con un cliente de Appium, controla la app que realmente publicas sin añadirle un SDK de pruebas.
Cómo funciona Appium
Appium tiene cuatro piezas: un núcleo que define la API, drivers que conectan con una plataforma concreta, clientes que ofrecen la API en un lenguaje de programación y plugins opcionales que amplían el núcleo. Tu prueba usa un cliente para enviar comandos WebDriver al servidor, que los pasa al driver adecuado.
- UiAutomator2 y Espresso para apps Android.
- XCUITest para iOS, iPadOS, tvOS y watchOS.
- Mac2 y Windows para apps de escritorio, Safari, Gecko y Chromium para navegadores.
Hay clientes oficiales para JavaScript, Java, Python, Ruby y .NET. Para apps Flutter existen drivers de la comunidad, véase Flutter. Appium 3 exige Node.js 20.19 o superior y elimina muchos endpoints obsoletos, por ejemplo el antiguo parámetro desiredCapabilities: solo se acepta capabilities.
Ejemplo: una prueba de inicio de sesión
Inicias una sesión enviando capabilities que indican la plataforma, el driver (por ejemplo UiAutomator2) y el archivo de la app. La prueba localiza el campo de correo por su accessibility id, escribe un valor, pulsa el botón de acceso y comprueba que aparece un elemento de la pantalla de inicio. En iOS cambian sobre todo las capabilities y algunos localizadores. Es una prueba de regresión típica de un flujo crítico.
Errores habituales con Appium
- Usar XPath largos: son lentos y se rompen con cambios mínimos de diseño. Es mejor usar accessibility ids que el equipo de desarrollo define a propósito.
- Usar esperas fijas en lugar de esperas explícitas a que un elemento sea visible o pulsable.
- Automatizar todo desde la interfaz. Mantén pocos flujos de extremo a extremo y prueba el resto en unidades y API.
- Actualizar Appium sin actualizar los drivers. Appium 3 pide versiones recientes de los drivers.
- No cerrar la sesión, lo que deja dispositivos y emuladores ocupados.
Appium, frameworks móviles y pruebas de rendimiento
Appium funciona con apps nativas y con apps creadas en frameworks multiplataforma como React Native. Para contenido web en el navegador móvil, consulta cómo probar sitios en emuladores móviles y el modo de dispositivo del navegador. Para pruebas de navegador en JavaScript, WebdriverIO es una opción relacionada.
Appium comprueba que la interfaz se comporta bien en un dispositivo. No indica cómo aguanta el backend a muchos usuarios a la vez. Para eso, haz una prueba de carga sobre las APIs que usa la app. LoadFocus puede ejecutar scripts de JMeter existentes en la nube, véase pruebas de carga con JMeter y pruebas de carga. LoadFocus no se integra con Appium.
Preguntas frecuentes
¿Appium es gratis?
Sí. Appium es de código abierto. Solo pagas los dispositivos, emuladores o servicios de dispositivos en la nube donde lo ejecutes.
¿Appium necesita cambios en mi app?
No. Appium automatiza la app sin modificar mediante las herramientas de automatización de cada plataforma, así que pruebas la misma versión que publicas.
¿En qué lenguajes puedo escribir pruebas de Appium?
En cualquier lenguaje con un cliente de Appium o WebDriver. Hay clientes oficiales para JavaScript, Java, Python, Ruby y .NET.
¿Qué diferencia hay entre Appium 2 y Appium 3?
Appium 2 movió la compatibilidad con plataformas a drivers que se instalan aparte. Appium 3 sube la versión mínima de Node.js a 20.19 y elimina muchos endpoints y parámetros obsoletos.
¿Puedo usar Appium para pruebas de carga?
No. Appium controla un dispositivo a la vez a través de la interfaz. Para ver cómo responde un backend con muchos usuarios, usa una herramienta de pruebas de carga sobre sus APIs.
Términos relacionados
Herramientas LoadFocus relacionadas
Lleva este concepto a la práctica con LoadFocus, la misma plataforma que potencia todo lo que acabas de leer.