TestProject: Pruebas mobile en CI/CD

TestProject es una plataforma de automatización de pruebas end-to-end gratuita para web, mobile y API. Como mencionamos en este post, en Abstracta nos quedamos con ganas de darle más oportunidades a esta herramienta. Por eso, hoy te comparto este post escrito por Mikaella Mateos, de Abstracta, donde cuenta su experiencia probando la herramienta en otro contexto. Acá podras ver cómo realizar pruebas automáticas en una app mobile sobre Android integradas con Jenkins.



Si bien TestProject nos permite automatizar pruebas de aplicaciones tanto Android como iOS desde Windows, nos centraremos en las aplicaciones Android. Vale aclarar que típicamente para automatizar pruebas en iOS se necesita una Mac, con lo cual esto es una feature muy interesante. Utilizando esta herramienta sólo debemos contar con un agente de TestProject y una cuenta de desarrollador de Apple activa. En este link te dejamos un paso a paso para configurarlo.

¿Qué necesito?

Para realizar una prueba mobile con esta herramienta necesitarás crear un usuario (gratuito) en el sitio de TestProject y posteriormente instalar un agente de TestProject en tu computadora. Luego, deberás conectar tu dispositivo a la misma mediante un cable USB y estarás listo para grabar los pasos de tu prueba con el recording de la herramienta. Al finalizar la grabación, contarás con un script que podrás editar y ejecutar. 

Podemos trabajar tanto con emulador como con dispositivos reales. Si se desea trabajar con un emulador, no es necesario realizar los siguientes pasos, bastará con tener el emulador abierto y TestProject lo reconocerá como agente. Si queremos trabajar con un dispositivo Android real, primero debemos prepararlo de la siguiente forma:

  1. Asegurate de tener tu dispositivo móvil en modo desarrollador. Para esto, deberás ir a Configuración/Ajustes (para Android 8.0 o superior) y luego seleccionar Sobre el teléfono. Pulsa 7 veces sobre el número de compilación (build number) para habilitar el modo desarrollador.
  2. Podrás encontrar una opción en la configuración llamada opciones de desarrollador.  Aquí deberás habilitar la opción depuración USB.  
    1. Si tu dispositivo es Xiaomi, es necesario que habilites las opciones Depuración USB (opción de seguridad) e Instalar via USB.
  3. Tu dispositivo debería estar listo; con un cable USB adecuado, conectalo a donde instalaste el agente TestProject. Al conectarlo, aparecerá una ventana emergente que pedirá autorización para el uso del dispositivo con TestProject. Al aceptarlo podrás comenzar a crear la prueba. 

¿Cómo crear un test mobile en TestProject?

Para crear una prueba deberás hacer click en New Test y elegir la opción Mobile test.

Luego deberás asignarle un nombre y descripción a la prueba. Al seleccionar Next, elegí qué plataforma utilizarás (Android o iOS) y qué aplicación vas a testear. Si es la primera vez que creas una prueba, no vas a ver ninguna aplicación en la lista por lo que deberás hacer click en Add a new application for testing.

Y luego:

Agregar una aplicación

Hay varias formas de agregar una aplicación. La más simple es asegurándote que tu dispositivo esté conectado y el agente esté corriendo, de esta manera TestProject te mostrará todas las aplicaciones disponibles en el dispositivo y bastará con seleccionar una. Si se desea se puede cargar un APK o realizarlo de forma manual.

Una vez que elegiste la aplicación y que le asignaste un nombre, deberás hacer click en Finish.

Grabando un test

Ahora que creamos un test y especificamos qué aplicación utilizar, estamos listos para crear los pasos de nuestros test. Podrás crear pasos manualmente si lo deseas como también utilizar el recording de la herramienta.

Si elegimos la opción de grabar, se visualizará un emulador que mostrará la pantalla de nuestro de dispositivo y los pasos que se irán grabando. 

Para crear pasos deberás interactuar con el emulador de la aplicación y cada acción será grabada como un paso.

Así se ve un script en TestProject:

Cada uno de los pasos se puede eliminar, duplicar y deshabilitar. Se pueden crear pasos manualmente haciendo click en este botón “+” o utilizando el recording de la herramienta.

Al crear pasos manuales, tenemos la opción de agregar un test previamente creado, una acción o una acción de un elemento.

Si optamos por la opción Element Action, para cada elemento tendremos varios selectores a los que podremos ordenar eligiendo nosotros la prioridad. Los selectores disponibles para web son:

  • XPATH
  • CSSSELECTOR
  • TAGNAME
  • LINKTEXT
  • PARTIALLINKTEXT 

y para mobile: 

  • ID
  • CLASSNAME
  •  TAGNAME
  •  XPATH
  • ACCESSIBILITYID
  • ANDROIDUIAUTOMATOR

Por otro lado, si queremos agregar una Action contamos con una amplia lista de acciones como podemos ver en la siguiente imagen:

¿Cómo integrar TestProject con Jenkins CI?

Necesitarás una cuenta de TestProject y el servidor de Jenkins CI corriendo. Luego deberás seguir los siguientes pasos:

  1. Instalar el plugin de TestProject en Jenkins
    1. Abrir el servidor de Jenkins
    2. Dirigirse a Administrar JenkinsAdministrar PluginsTodos los plugins
    3. Buscar TestProject Automation Platform Plugin e instalarlo
  2. Crear una API Key en TestProject
    1. Abrir la aplicación de TestProject y dirigirse a Integrations API
  3. Crear una nueva API Key y otorgarle el acceso que se desee. Las claves de API pueden tener acceso sin restricciones, lo que significa que pueden usarse en cualquier proyecto o tener acceso a proyectos específicos.
  4. Una vez que la API key fue creada, deberás copiarla y volver al servidor de Jenkins.
  5. Configurar el plugin de TestProject en Jenkins y establecer la clave recién creada. Este es un paso que se realiza una sola vez.
    1. En Jenkins, ir a Administrar JenkinsConfigurar el sistema. 
    2. Busca la sección de TestProject, pega su clave en el campo API Key y presiona Guardar.
  6. Crear un TestProject Job
    1. Crea un proyecto de estilo libre (freestyle)
    2. Añadí un nuevo paso en la sección Ejecutar. Selecciona Run TestProject Job del menú desplegable.
    3. Selecciona un Project Id y Job Id de los menús correspondientes. 
    4. Guarda
    5. Selecciona el proyecto recién creado y hacé click en Construir ahora
  7. Ver resultados
    1. Una vez completada la ejecución, podrás acceder a console output donde tendrás un link al reporte en TestProject.

A continuación detallaremos algunas ventajas de la herramienta.

Ventajas de la herramienta

  • La herramienta es gratis. 
  • Tiene buena documentación (blog, foro, canal de youtube y documentación).
  • Ofrece un chat en línea para evacuar dudas.
  • Se pueden realizar tanto pruebas para Android como iOS desde Windows.
  • Si deseas trabajar con código, al crear un nuevo test, TestProject permite subir un archivo .zip, .jar o .dll.
  • Si optamos por utilizar el recording de la herramienta, los selectores son autogenerados pero customizables (se pueden modificar o crear nuevos).
  • Al trabajar con web elements sus selectores pueden variar desde el momento en que creamos los tests hasta que los ejecutamos. Gracias a funcionalidades basadas en Inteligencia Artificial de TestProject, cuando un test es re-ejecutado y no puede encontrar el selector que le indicamos, automáticamente intenta encontrar al elemento con otro selector.
  • A cada paso del test le podremos agregar aserciones, pausas, condicionales y loops.
  • Se puede realizar data-driven testing parametrizando la prueba y agregando un archivo csv de donde tomar los datos.
  • Podemos utilizar expresiones regulares para extraer el valor de un campo y posteriormente trabajar con ese valor. Por ejemplo, si estamos trabajando con una aplicación que tiene determinado stock de un producto, podríamos extraer el número de productos que hay en stock, realizar una compra y verificar que ese número disminuyó. 
  • Nuestros tests pueden ser modularizados, llamando desde un test a otro para mejorar su mantenibilidad.
  • Los tests pueden ser agrupados en jobs, donde se pueden agregar distintos tests, incluso repetidas veces como podemos ver en la imagen (el test Opencart está dos veces).
  • Al finalizar podremos exportar el código de nuestro test en lenguaje Java, C# o Python como podemos ver en la siguiente imagen:
  • A su vez podremos generar un test manual en una planilla de Excel:

y finalmente el documento de nuestro test:

Reflexiones finales

La rapidez del setup y la facilidad con la que alguien puede tener un test automatizado y ejecutando en Jenkins, hace que la herramienta se convierta en una posibilidad a considerar a la hora de automatizar. Como hemos mencionado anteriormente, en esta prueba de concepto encontramos varios puntos positivos. Esperamos poder hacer un uso más extensivo de la herramienta en un futuro y así poder compartirles más experiencias.

One thought on “TestProject: Pruebas mobile en CI/CD

Leave a Reply

Your email address will not be published. Required fields are marked *