Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Mobile Development
Code

Una introducción a Appium

by
Difficulty:IntermediateLength:MediumLanguages:

Spanish (Español) translation by Javier Salesi (you can also view the original English article)

What You'll Be Creating

La automatización de pruebas es conocida por ser muy valiosa para cualquier programador. Es una herramienta que permite la simulación de las acciones de una persona en un dispositivo específico y tiene a su favor que carece de los errores o las limitaciones de velocidad de una persona real.

Appium es una herramienta de automatización de pruebas, basada en el popular framework de testeo Selenium, que permite la automatización de pruebas en aplicaciones nativas iOS y Android. Su principal limitación es que sólo es construída para OS X y Linux.

En mi oficina, utilizo Appium para pruebas de regresión. Pruebas de regresión simplemente significa probar características existentes para asegurar que continuan funcionando como se espera mientras el producto crece. Es muy importante saber cuando las características se rompen para que el progreso pueda continuar en una manera lineal.

En éste tutorial, te mostraré cómo configurar Appium, generar scripts automatizados, y crear unas cuantas pruebas de acceso para una aplicación Android.

1. Configuración de Appium

Obtener Appium no toma mucho tiempo, pero es fácil extraviarse en la configuración. La primera vez que instalé Appium, descargué ingenuamente la aplicación (.dmg) antes de configurarla en la línea de comandos. Resulta que si descargas primero la aplicación, puede que se dificulte la obtención de Appium en la línea de comandos. Así que comienza por obtener Appium desde la línea de comandos.

En los siguientes pasos, voy a asumir que tienes instalado homebrew y estás usando OS X. Si no has instalado node, ejecuta el siguiente comando desde la línea de comandos:

Luego, instala Appium usando el administrador de paquetes de node. Es importante que no uses sudo para éstos comandos pues Appium no funcionará.

Si no tienes los permisos para usar éstos comandos, tendrás que utilizar chmod en lugar de sudo. La ubicación del directorio puede ser diferente para tí, dependiendo de tu configuración.

Para ejecutar el servidor Appium y ver si lo has configurado correctamente, ejecuta el siguiente comando desde la línea de comandos.

Appium en la línea de comandos te permite ejecutar pruebas de Selenium no sólo en simuladores Android e iOS, sino también en dispositivos físicos. La aplicación tiene una agradable interfaz de usuario que te permite ejecutar una versión simulada de tu AUT (Aplicación Bajo Prueba) y fácilmente generar código Selenium para acciones simples en la aplicación. Principalmente usarás la aplicación en la fase inicial de crear pruebas y luego usar la línea de comandos para ejecutar pruebas.

¿Por qué no usamos la aplicación para todo el flujo? Si planeas ejecutar un conjunto de pruebas en varios dispositivos de una manera automatizada, quizá en un horario, poder ejecutar Appium desde la línea de comandos será esencial.

La aplicación Appium puede descargarse desde Bitbucket. Después de descargar la imagen de disco, haz doble click en ella y arrastra la aplicación Appium a tu directorio Applications.

2. Configuración de AUT

Posteriormente, necesitamos una aplicación para probar. Para ésta introducción a Appium, probaremos una aplicación nativa Android que llamaré AUT. Es una aplicación muy sencilla de login (ingresar) y logout (salir). En un login o ingreso exitoso, nos llevará a una página que nos indica que hemos ingresado exitosamente, mostrando un botón para salir.

Muchas aplicaciones tienen una característica de login así que crearemos una suite básica de pruebas de ingreso para probar los resultados posibles de un usuario interactúando con el flujo de login. No es tanto que queramos asegurarnos que login funcione, queremos probar la respuesta de la aplicación a las varias formas que un usuario no logre ingresar, por ejemplo, al ingresar credenciales no válidas.

Ya que es imposible poseer cada dispositivo Android disponible, generalmente pruebo en dispositivos simulados. Ésto me permite fácilmente cambiar cuál dispositivo está siendo simulado para probar la compatibilidad. Para obtener un simulador de Android, obtén AVD Manager y configura el dispositivo Android que quieras, compatible con API level 21.

  1. Descarga el APK desde Github.
  2. Obtener JDK, si no lo tienes todavía.
  3. Obtén el Android SDK con el AVD Manager.
  4. Establece las variables de entorno ANDROID_HOME, JAVA_HOME y PATH en tu .profile o .bash_profile (o .zshrc si usas zsh).

ANDROID_HOME debería apuntar a la ubicación del Android sdk mientras que JAVA_HOME debería apuntar a la ubicación del JDK.

Así es como puedes agregar éstas rutas a tu .bash_profile. Nota que las rutas pueden ser diferentes para tí.

Luego, crea un dispositivo simulado con el AVD Manager. Asegúrate de habilitar Use host GPU y establecer el VM Heap en 64.

Para hacer que el simulador se ejecute más rápido, instala HAX desde el sitio de Intel.

3. Inspector de Appium

Es tiempo de usar el Appium Inspector y comenzar a escribir algunas pruebas. Lanza la aplicación Appium. En General Settings, desmarca Check for Updates, Prelaunch Application, Override Existing Sessions, y Kill Processes Using Server Port Before Launch.

Appium General Settings

Posteriormente, marca el Android Radio Button y da click en Android Icon. Marca App Path y establece su valor en la ubicación donde pusiste el APK de la aplicación bajo prueba. Marca Launch AVD y selecciona el dispositivo simulado. Elige 5.1 Lollipop (API Level 21) del menú desplegable de Platform Version.

Selecting Android
Android Settings

Pulsa Launch y espera el lanzamiento de la aplicación en el dispositivo simulado.

Puedes encontrarte un problema donde la aplicación se cae en el desbloqueo ya que estamos usando la flamante API 21. Para resolver ésto, lanza la aplicación otra vez después de que manualmente desbloqueaste la pantalla simulada.

Una vez que el dispositivo simulado ha lanzado la aplicación, pulsa el ícono Magnifying Glass para lanzar el inspector.

Appium Inspector

Éste es el inspector de Appium. Es una herramienta muy conveniente para ayudarte a empezar a escribir pruebas para Appium. Esencialmente, el inspector te permite realizar acciones en la aplicación nativa Android y registrar tus acciones como código generado.

Los bloques o cajas en el lado izquierdo del inspector conforman el UI Navigator y te permiten navegar por los elementos de la actividad actual. En la parte de abajo están las opciones para interactúar con el elemento seleccionado de los bloques de elementos. Detalles del elemento seleccionado se muestran en Details. Si haces algo manualmente para la simulación, debes pulsar Refresh para que el inspector reconozca éstos cambios. Si quieres comenzar a registrar tus acciones en código, debes pulsar el botón Record.

Vamos a crear el código necesario para un login o ingreso exitoso. La aplicación tiene dos logins establecidos, success@envato.com:password y success2@envato.com:password2.

  1. Da click en Record y observa que ahora hay código debajo del inspector. Puedes elegir diferentes lenguajes para que se muestre ésto. Para éste tutorial, utilizaremos Python.
  2. En el UI Navigator navega a android.widget.LinearLayout/android.widget.FrameLayout/
    android.widget.LinearLayout/android.widget.ScrollView/
    android.widget.LinearLayout/android.widget.EditText[1].
  3. Da click en Text en la parte inferior e ingresa succes@envato.com.
  4. Da click en Send Keys, y observa que el código de abajo ahora tiene una nueva línea.
Inspector Send Keys to Email

5. En el UI Navigator, navega a android.widget.LinearLayout/
android.widget.FrameLayout/android.widget.LinearLayout/
android.widget.ScrollView/android.widget.LinearLayout/
android.widget.EditText[2]

6. Ingresa el password.

Inspector Send Keys to Password

7. Da click en Send Keys.

8. En el UI Navigator, navega a android.widget.LinearLayout/android.widget.FrameLayout/
android.widget.LinearLayout/android.widget.ScrollView/
android.widget.LinearLayout/android.widget.Button[1]

9. Da click en Touch en la parte inferior, seguido por Tap. Estamos ahora en una nueva activity así que el UI Navigator ha cambiado.

Inspector Tap Sign In

10. Pulsa Refresh ya que el inspector probablemente no se ha dado cuenta que el simulador ha pasado la pantalla de carga ahora.

Inspector Not Refreshed

11. En el UI Navigator navega hasta android.widget.LinearLayout/android.widdget.FrameLayout/
android.widget.RelativeLayout/android.widget.Button[1].

12. Da click en Tap.

Inspector Tap Logout

En el código de abajo, tenemos todo el código para simular un ingreso exitoso. Tienes toda la libertad para experimentar más con el inspector. Más tarde en éste tutorial, también escribiremos pruebas para ingresos no exitosos.

4. Pruebas de Ingresos

Ahora escribiremos algunas pruebas usando Appium para asegurar que nuestra página de login funcione como debería. Si no tienes Python, entonces puedes descargarlo desde el sitio web oficial.

Para usar la herramienta Appium web driver con Python, debes obtener también las librerías Appium para Python.

  1. Descarga y descomprime el archivo .gz.
  2. Abre el archivo .gz, navega hata la ubicación en la línea de comandos, y ejecuta el siguiente comando:

Antes de comenzar a escribir las pruebas, necesitamos decidir que casos de prueba haremos. Una buena suite de pruebas debería considerar cada interacción posible. Comencemos con una simple.

  1. Un login exitoso.
  2. Un login no exitoso.

Primero, debemos importar todo lo que necesitamos para la prueba. Utilizaremos la unidad de prueba integrada de Python para ejecutar nuestras pruebas. El elemento Appium es el web driver, que usaremos para interactúar con el servidor Appium.

Creamos una clase LoginTests para definir nuestra suite de pruebas. La función setUp de nuestra unidad de prueba se ejecuta al inicio de la prueba. En éste método, establecemos las capacidades deseadas, tales como Android y la ruta de la aplicación. Después inicializamos el web driver self.wd al conectar al servidor Appium.

La función tearDown se ejecuta después de una prueba y se desconecta del servidor Appium.

El bloque de código de arriba es copiado desde el inspector de código de Appium. Ejecutamos las acciones requeridas en la interfaz de usuario para un login exitoso. En la cláusula try, tratamos de encontrar el elemento textView que muestra el texto Login Success! Si una excepción es arrojada, la prueba falla.

Para fallar la prueba de login, deliberadamente usamos un password incorrecto, wrongpassword, esperando que el login falle. Revisamos si podemos encontrar el elemento botón de login y falla la prueba si no podemos.

Ésta es la principal función necesaria para ejecutar nuestras pruebas. No hay nada  malo en nuestro primer caso de prueba. Sin embargo, un login no exitoso pudiera significar muchas cosas. Cuando un usuario no puede ingresar, queremos asegurarnos que la interfaz de usuario esté ayudándolos a darse cuenta como arreglar su error para una mejor experiencia de usuario.

  1. Un login exitoso.
  2. Login con password incorrecto.
  3. Login con correo electrónico incorrecto.
  4. Login con ningún password.
  5. Login con ningún correo electrónico.
  6. Login con un correo electrónico no válido.

Hemos expandido nuestros casos de pruebas de dos a seis para la página de login. Podría parecer mucho para una simple característica, pero es absolutamente necesario.

La parte más difícil de escribir pruebas es revisar las expectativas. Por ejemplo, la prueba de login que falla revisa si un elemento existe en la interfaz de usuario. Ésto significa que las pruebas de login dependen totalmente de la interfaz de usuario para indicarnos si los requisitos se cumplen.

Ésto puede ser malo ya que la interfaz de usuario no nos indica todo sobre el código subrayado. Sin embargo, la meta es probar la interfaz de usuario para tener una revisión de expectativa adecuada de que un elemento de interfaz de usuario exista. Podíamos hacer nuestra expectativa más profunda al revisar que cada elemento esperado esté presente en la página o incluso al revisar que cada elemento está correctamente colocado.

Conclusión

Hemos aprendido como:

  • configurar Appium
  • usar el inspector de Appium para ayudar acrear scripts de automatización de pruebas
  • usar la automatización para crear simples pruebas de login para una aplicación Android

Hay mucho más para aprender sobre Appium y realización de pruebas. El próximo paso podría ser crear un sistema de pruebas continuamente integrado que utiliza las capacidades de Appium para tus propias aplicaciones.

¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.