Last Updated: 2021-10-08
Al momento de validar el funcionamiento de una aplicación, el primer acercamiento consiste en realizar pruebas manuales, donde se simulan las interacciones que un usuario podría tener con la aplicación. Sin embargo, estas interacciones pueden variar según diferentes condiciones del sistema, o algunos elementos de aleatoriedad que pueden hacer que los resultados obtenidos cambien. Al definir un flujo de interacción, se espera una secuencia de pasos, la cual puede excluir muchos casos sin que el probador sea consciente de ello. Para descubrir estos posibles casos, se utilizan las pruebas de reconocimiento. Estas tienen un enfoque exploratorio, y se encargan de interactuar con la interfaz gráfica de las aplicaciones por medio de eventos, los cuales pueden ser generados aleatoriamente, o según alguna heurística que permite definir los posibles caminos de interacción en la aplicación.
Al desarrollar este tutorial aprenderá:
Para este tutorial se utilizará el proyecto que se ha desarrollado en tutoriales anteriores. Se eligió la versión con mayor cantidad de funcionalidades, de forma que la exploración de la interfaz sea más interesante. En caso de que no tenga ya el código del proyecto en su máquina localmente, puede descargarlo como se explica a continuación:
Acceda al repositorio, alojado en el siguiente enlace: https://github.com/TheSoftwareDesignLab/MISW4104-Ejemplos, descargue el código fuente en su máquina y abra el proyecto en Android Studio.
Como con todos los proyectos de GitHub, usted puede descargar los archivos del repositorio a su máquina local por varios medios.
Si lo desea, puede optar por descargar el código fuente directamente en forma de archivo .zip desde la página web del repositorio en GitHub, haciendo clic en el botón "Download Zip" del desplegable Code, el cual se ve en la siguiente imagen:
Imagen 1. Vista desplegable del botón Code
No obstante, si cuenta con GitHub Desktop, puede hacer clic en el botón Open with GitHub Desktop. Si cuenta con Git instalado localmente en su máquina, puede clonar el repositorio a un directorio local vacío por medio del comando git clone
https://github.com/TheSoftwareDesignLab/MISW4104-Ejemplos.git
,
o por medio de la interfaz gráfica de git. Finalmente, también puede optar por descargar el proyecto directamente con Android Studio haciendo uso de la opción Get from Version Control del menú inicial de Android Studio, la cual se muestra en la siguiente imagen:
Imagen 2. Menú de inicio de Android Studio
Una vez haya importado el proyecto en Android Studio, inspeccione el contenido del mismo en el panel lateral izquierdo, llamado "Project Structure
". Podrá notar que, en un principio, la estructura de la aplicación es exactamente la misma que en los tutoriales anteriores. Lea ahora los siguientes pasos para generar el archivo .APK correspondiente a dicho proyecto.
La interfaz de Android Studio permite generar los archivos APK que empaquetan la aplicación correspondiente al proyecto abierto en el espacio de trabajo. En el caso de este tutorial, bastará con generar una versión de debug de la aplicación, pues no existe la necesidad de configurar llaves para la firma de la misma. Es necesario que el dispositivo en el cual va a probar la aplicación, permita la instalación de APKs por medio de USB, en caso de que sea un dispositivo físico.
Para generar el APK, abra el proyecto del tutorial CL17 en Android Studio, y en el menú de la parte superior seleccione la opción Build > Build Bundle(s)/APK(s) > Build APK(s)
. Esto comenzará el proceso de empaquetado de la aplicación, el cual puede seguir en la pestaña Build
de la parte inferior del IDE. Podrá ver también una alerta al finalizar el proceso, la cual indica que se generó el APK deseado y permite localizar el archivo en el sistema de archivos. La alerta se ve de la siguiente forma:
Imagen 3. Diálogo indicando el resultado de la creación del APK
Seleccione la opción locate para abrir la ubicación del archivo. De todas formas, este archivo lo puede ubicar dirigiéndose al directorio donde se encuentra el proyecto y buscando la carpeta app/build/outputs/apk/debug
. Allí podrá ver el archivo, que por defecto se llama app-debug.apk
.
La herramienta Monkey es un programa incluido en el SDK de Android, el cual se ejecuta directamente en un dispositivo por medio del puente creado con la herramienta ADB. Monkey puede utilizarse para realizar pruebas de estrés que simulen acciones del usuario por medio de eventos generados aleatoriamente.
Monkey permite ejecutar eventos de distintos tipos, los cuales incluyen:
Para controlar los tipos de eventos y la cantidad de los mismos que se van a ejecutar en la prueba, es necesario utilizar las flags --pct-<evt-type-id> <percentage>
.
Estos eventos son generados aleatoriamente, pero pueden ser reproducidos si se utiliza la flag -s <seed>
para definir un valor de origen para generar números pseudoaleatorios. Además, se puede introducir un retraso entre eventos con la flag --throttle <ms>
; de lo contrario, se generan los eventos tan rápido como sea posible.
La prueba más básica de monkey utiliza eventos aleatorios de todos los tipos mencionados anteriormente. Para ejecutar dicha prueba conecte un dispositivo Android a su computadora y asegure que esté conectado en modo de transferencia de archivos y tenga activadas las opciones de desarrollador, en particular con los permisos de instalación y depuración por ADB. Verifique que el dispositivo ha sido reconocido y se estableció un puente ADB ejecutando el siguiente comando en una terminal:
adb devices
Una vez todo se encuentre adecuadamente configurado, podrá ver en la consola el listado de dispositivos con el nombre de usuario asociado, como se ve en la siguiente imagen:
Imagen 4. Resultado en consola indicando los dispositivos disponibles
Para ejecutar pruebas de Monkey, primero es necesario que el APK esté instalado en el dispositivo Android y sea reconocido por el Packet Manager. Para esto, desde la misma terminal ubique el archivo APK que generó en el primer paso, y ejecute el siguiente comando para instalarlo en el dispositivo:
adb install app-debug.apk
Luego de haberlo instalado, ejecute el siguiente comando para iniciar la prueba con 100 eventos igualmente distribuidos:
adb shell monkey -p com.example.jetpack_codelab -v 100
Preste atención a la pantalla de su dispositivo, ya que los eventos generan interacciones reales en el mismo que usted podrá observar.
Adicionalmente, en la terminal usted podrá ver que se muestran los resultados de la prueba en un formato como el siguiente:
Imagen 5. Resultados de la ejecución de la prueba en la consola
En este resumen se especifican los argumentos utilizados, los porcentajes de eventos configurados, y la descripción de los eventos que se generaron y ejecutaron.
El reporte puede ser más rico si se tienen en cuenta los demás argumentos de ejecución de Monkey y los diferentes niveles de verbosidad ofrecidos según el número de veces que se utilice la flag -v. Además, es importante tener en cuenta que existen tres condiciones a tener en cuenta cuando se ejecutan dichas pruebas:
La plataforma de Firebase es una parte de todo el catálogo de servicios en la nube que ofrece Google. Entre muchas otras cosas, provee herramientas que ayudan al desarrollo de aplicaciones móviles, de las cuales destaca para este tutorial, la herramienta TestLab.
TestLab permite realizar pruebas sobre juegos móviles, aplicaciones para iOS y aplicaciones para Android. El funcionamiento de esta plataforma consiste en el uso de una infraestructura de dispositivos móviles reales en la nube de Google para ejecutar pruebas de distintos tipos como lo son:
Para el caso de este tutorial se hará énfasis en las pruebas Robo, ya que su modo de ejecución se asimila a las pruebas de Monkey.
Para ejecutar una prueba con TestLab, lo primero que debe hacer es iniciar sesión en la consola de Firebase con una cuenta de Google y crear una aplicación cualquiera con la opción de Google Analytics activada.
Ingrese a la aplicación recién creada y busque en el panel lateral izquierdo la opción Test Lab. Podrá ver una página de bienvenida con el siguiente contenedor:
Imagen 6. Sección de acceso rápido a las pruebas de TestLab
Cargue el archivo APK, generado en el primer paso, a la opción Android Robo para iniciar la primera prueba Robo con la aplicación. Podrá ver que por defecto se crea una matriz de prueba con un dispositivo Google Pixel 3 de API 28.
Una vez se complete la prueba, podrá ver la siguiente pantalla:
Imagen 7. Vista de los resultados de ejecución de la prueba en TestLab
Seleccione la tarjeta que corresponde al dispositivo para ver los detalles de la ejecución. Podrá ver una página como la siguiente, que muestra mucha información que es de utilidad para mejorar su aplicación:
Imagen 8. Detalles de la prueba
El detalle de la prueba tiene 7 pestañas:
Explore todas las pestañas y descubra el tipo de hallazgos que puede obtener al ejecutar estas pruebas con la herramienta de firebase TestLab.
¡Felicidades!
Al finalizar este tutorial, pudo familiarizarse con las pruebas de reconocimiento para el contexto de las aplicaciones de Android. Así mismo, pudo utilizar varias herramientas que le permiten ejecutar pruebas para explorar sus aplicaciones Android de forma pseudoaleatoria y obtener insights de las mismas.
Ahora podrá ejecutar estas pruebas con cualquier aplicación de Android, de forma que su proceso de desarrollo de software incluya una validación extra por medio de pruebas de reconocimiento.
Juan Sebastián Espitia Acero | Autor |
Norma Rocio Héndez Puerto | Revisora |
Mario Linares Vásquez | Revisor |