¿Cuánto cuesta Appium para la gente?

En este artículo, veremos la herramienta Appium. Este artículo es una introducción a la introducción de pruebas automatizadas de aplicaciones móviles. Mostrará las dificultades que puede tener que enfrentar al usar esta herramienta.

Considere una tarea pequeña usando el ejemplo de una "calculadora", intente escribir pruebas automatizadas para probarla y ... Comencemos desde el principio :)

Contenido


  • ¿Qué es el Appium?
  • Mínimo necesario
  • Declaración y solución del problema.
  • Confluencia :)

¿Qué es el Appium?


Algunas palabras sobre pruebas móviles. No puede tener una computadora, una computadora portátil en casa, pero no percibimos nuestra vida sin dispositivos móviles. Probar aplicaciones móviles tiene un gran nicho en ... probar ... Mmmm ... la mantequilla es mantequilla, pero lo es. Este nicho es bastante complicado.

Hay tantos dispositivos con sus sistemas operativos, con sus propias interfaces gráficas, resoluciones de pantalla, etc. Creo que esta lista es interminable. Entonces, debido a la gran variedad de dispositivos móviles, sería bueno tener pruebas automatizadas para nuestras aplicaciones con el fin de reducir el sufrimiento de los probadores y no convertir las pruebas de una funcionalidad en cientos de dispositivos en un "verdadero infierno" (ver imagen a continuación).

imagen

Existen muchas herramientas para escribir autotests para dispositivos móviles. Para resolver las tareas que tenía ante mí, elegí Appium, ya que es adecuado para Android e iOS y puedes escribir autoevaluaciones utilizando Java "favorito de todos".

Appium es una herramienta gratuita, de código abierto y multiplataforma que ayuda a automatizar aplicaciones tanto para Android como para iOS. Appium adopta el mismo enfoque que Selenium WebDriver, que recibe las solicitudes HTTP JSON de los clientes y las convierte en función de la plataforma en la que funciona.

imagen

Mínimo requerido


Entonces, ¿qué necesitamos para trabajar con Appium?

Para crear pruebas para Android, se presentan los siguientes requisitos:

  • Java (versión> = 7)
  • Android SDK API (versión> = 17)
  • Dispositivo virtual Android (AVD) / dispositivo real
  • Administrador de ejecución acelerada de hardware Intel

Para que el emulador de dispositivo Android funcione a una velocidad cercana a la velocidad del dispositivo real, debe instalar Intel Hardware Accelerated Execution Manager. Esto ayudará a reducir el tiempo necesario para iniciar y depurar la aplicación.

Para iOS:

  • Mac OS X (versión> = 10.7)
  • Xcode (versión> = 5.1)
  • Java (versión> = 7)
  • Cerveza casera
  • NodeJS
  • npm

También recomiendo instalar appium-doctor para diagnosticar posibles problemas al instalar y configurar los componentes necesarios en ambas plataformas.

imagen

Declaración y solución del problema.


Entonces, imaginemos que necesitamos escribir pruebas automatizadas para una aplicación de calculadora para dispositivos Android. Para hacer esto, necesitamos descargar Appium desde el sitio oficial e instalarlo en nuestra "máquina".

imagen

Lanzamiento de Appium.

imagen

Por defecto, Appium está listo para escuchar localhost con el puerto 4723. Aquí dejaremos todo sin cambios e iniciaremos el servidor.

imagen

Ahora Appium está listo para procesar nuestras solicitudes.

Nuestro futuro autotest debe ejecutarse en el emulador o en un dispositivo real. Para la versatilidad de este artículo, considere el trabajo de la prueba en el emulador. Para esto necesitamos Android Studio. Descárguelo e instálelo usted mismo. Luego abra y vaya a Herramientas - Administrador AVD.

imagen

imagen

imagen

imagen

imagen

imagen

Ahora abra la terminal y ejecute el comando adb devices. Ella mostrará la lista de dispositivos conectados.

imagen

Vemos que la lista de dispositivos está vacía, porque no se está ejecutando ningún emulador, ningún dispositivo real está conectado a nuestra "máquina".

Ejecuta todos los emuladores que tenemos. En mi caso, estos son dos emuladores. Ejecute el comando de dispositivos adb nuevamente.

imagen

Ahora tenemos una lista no vacía que contiene la ID de nuestros dispositivos conectados: emuladores y dispositivos, si los hay.

Con el emulador resuelto, comencemos a escribir código. Como se describió anteriormente, en mis pruebas uso Java.

Primero, cree una instancia de AndroidDriver. El constructor de esta clase espera que entren dos parámetros:

imagen

Capacidades deseadas: objeto JSON (un conjunto de pares clave-valor) enviado por el cliente al servidor.

Las capacidades deseadas describen las características de la sesión creada (nombre del dispositivo / emulador, sistema operativo (SO), versión del SO, aplicación iniciada, etc.).

Ejemplo de

imagen

capacidades : describimos nuestras capacidades y creamos AndroidDriver.

imagen

deviceName es un parámetro obligatorio, pero para Android no está marcado. Si hablamos de iOS, cuando especifique el nombre, debe usar uno de los nombres reservados (en los comentarios del código se proporciona un ejemplo de dichos nombres). La descripción de otros parámetros se proporciona en el código (ver imagen de arriba), pero nos centraremos en algunos de ellos.

udid es un identificador único para el dispositivo. Podemos obtener este identificador de dispositivo con el comando adb devices.

imagen

appPackage es el nombre del paquete Java de la aplicación de Android que queremos ejecutar.

appActivities es el nombre de las actividades que abrimos.

Se pueden obtener appPackage y appActivities de varias maneras, pero la más simple es instalar la aplicación "APK Info" de Google Play.

Después de abrir este programa, verá una lista de todas las aplicaciones instaladas. Estamos interesados ​​en la calculadora. Selecciónelo de la lista.

imagen

Y aquí está toda la información que necesitamos.

imagen

imagen

Los llenó A continuación, cree una instancia de AndroidDriver: registre la URL de Appium y pase el objeto de capacidades como segundo parámetro.

imagen

Este código solo ejecutará la calculadora en el emulador. Necesitamos aprender a manejar de alguna manera los elementos de la calculadora para poder escribir una prueba simple. El principio es similar aquí como en Selenium Web Driver. Necesitamos acceder a los elementos a través de cualquier localizador. Appium Inspector nos ayudará a conseguirlos. Appium abierto.

imagen

imagen

Ahora todas nuestras capacidades descritas en el código deben transferirse al Inspector, en la pestaña Capacidades deseadas.

imagen

Iniciando sesión.

imagen

El inspector traduce lo que se muestra en el dispositivo. Un poco a la derecha hay un árbol de todos los elementos de la Actividad actual. Para obtener los atributos de un elemento, solo necesita seleccionar el elemento que necesitamos.

imagen

Después de seleccionar, se muestran todos los atributos disponibles para este elemento. En este caso, no es tan importante para nosotros cómo acceder al elemento: por ID o xPath. Pero en aplicaciones grandes y complejas, es mejor usar ID, ya que xPath ralentiza mucho las pruebas. Además, al probar aplicaciones híbridas, la ID será una para Android e iOS, y xPath será diferente. Aprendimos a obtener los atributos necesarios. Ahora, por analogía con Selenium Web Driver, obtenemos los elementos necesarios en el código.

imagen

Para obtener el elemento, uso el método findElementById. Puede crear una instancia de la clase MobileElement y trabajar con ella, o puede hacerlo sin crear una. Aquí definimos los elementos de los números 2, + y 3. Al final, espero que el resultado sea 5. Al final, el resultado es el siguiente:

imagen

Puse la prueba y trabajo en crear la sesión en métodos separados. Ahora intentaré demostrar lo que hicimos.


Confluencia :)


imagen

En este artículo mostré cómo comenzar rápidamente con Appium y qué se necesita para esto. Como habrás notado, comenzar a escribir pruebas simples no es tan difícil. Luego puede fijar el informe al proyecto, por ejemplo, Allure. Pero esta es una historia completamente diferente :)

Quizás tenga problemas individuales al instalar varias herramientas que son necesarias para trabajar con Appium. Pero todos estos problemas se resuelven fácilmente mediante la búsqueda de Google :)

El tema de las pruebas para iOS no se ha revelado, pero quiero "decir", o más bien escribir algunas palabras al respecto.

Para ejecutar la aplicación a través de Appium en iOS, pasé mucho tiempo configurando el entorno (xCode, Appium, certificados de desarrollador, etc.). Era necesario abrir el proyecto Appium a través de xCode, especificar los certificados de desarrollador y otras configuraciones, ensamblar el proyecto y solo entonces resultó ejecutar los comandos a través de Appium en dispositivos iOS. Después de cada actualización de Appium, debe realizar este procedimiento. Quizás todo te resulte mucho más fácil, deberías creer en ello. Hasta ahora no he encontrado otra solución, tal vez sí, pero hasta ahora me conviene.

Quiero señalar una vez más que es mejor usar ID al acceder a elementos que xPath. Incluso si el elemento no contiene una ID, solicite / obligue al desarrollador a especificar la ID. Esto facilitará su vida y aumentará la velocidad de ejecución de la prueba.

Y, sin embargo, cuantos más dispositivos reales tenga, más probable es que encuentre un error antes de que los usuarios finales lo encuentren. En principio, puede crear su propia fábrica de dispositivos. Pero me parece más aconsejable buscar soluciones en la nube, por ejemplo, BrowserStack, SauceLabs y otros.

¡Eso es todo lo que quería decir! Proyecto

PS en GitHub

PPS Un poco de mi grupo ¡

Eso es todo!

All Articles