How to automate unit testing, interface web interface and mobile apps?

En esta entrada, Mariana Falabrino , Customer Success de Abstracta , explica los pasos para automatizar pruebas unitarias , de interfaz web y de interfaz mobile con GXtest , el producto desarrollado conjuntamente entre Abstracta y GeneXus para diseñar, implementar y ejecutar pruebas funcionales en aplicaciones web y móviles.

Para esto, se utilizó como ejemplo un sistema bancario multiplataforma que gestiona cuentas, usuarios, tarjetas de créditos y transferencias.

“La prueba unitaria la vamos a ejecutar posterior al paso de build de la aplicación. Las pruebas de interfaz las ejecutaremos cuando deployemos nuestra aplicación, para obtener un feedback temprano del estado de la app, reparar los bugs tempranamente, y así poder entregar valor al cliente de forma rápida. En primera instancia, estas pruebas las vamos a ejecutar a nivel de IDE luego de hacer el build de nuestra app, para esto tenemos una propiedad para configurar la ejecución automática de las pruebas luego del Build all de nuestra KB. Es fundamental considerar que el valor de las pruebas crece exponencialmente cuando las ejecutamos en un pipeline de forma desatendida, posterior al build y al deploy, obteniendo un feedback casi inmediato en cada deploy de la aplicación”, detalla Falabrino.

Para entender a profundidad los detalles, no dejen de ver su charla Software Testing con GeneXus , creada en el marco del GeneXus Live .

A continuación, compartimos los distintos tipos de test que se pueden automatizar en GeneXus. En este ejemplo se automatizará la funcionalidad de creación de una nueva transferencia verificando los saldos de las cuentas origen y destino en las distintas plataformas. ¿La misión? Garantizar que al momento de hacer cambios no se rompa esa funcionalidad.

Esta funcionalidad se verificará en distintas capas de pruebas:

1- Prueba unitaria

En primer lugar se creará una prueba unitaria que verificará el comportamiento de un procedimiento que aprueba o rechaza la transferencia dependiendo del saldo de la cuenta de origen.

2 – Prueba de interfaz web

Luego se ejecutará una prueba de interfaz del escenario, creando una nueva transferencia, y validando el saldo de la cuenta de origen antes y después de la confirmación de esa transferencia.

3 – Prueba de interfaz mobile

Finalmente se ejecutará una prueba de interfaz sobre la aplicación móvil, la cual verifica el saldo de la cuenta destino de la transferencia que se realizó anteriormente.

Veamos cómo crear cada tipo de prueba:

1 – Pruebas unitarias

El objetivo de estas pruebas es verificar la lógica core del negocio, para poder realizar esta validación se recomienda encapsular la lógica del negocio en objetos procedures.

Esto lo hacemos en dos pasos:

Paso 1: Generar la prueba unitaria

“Para verificar el comportamiento del procedimiento CheckBalanceForTransfer, con distintos datos de entrada, es necesario crear una prueba automatizada unitaria. Para esto se debe seleccionar la opción Create Unit Test, ingresar los datos de prueba con los que se prevé ejecutar el procedimiento y así se crea el objeto Unit Test con un template ya listo para ser ejecutado. Este template lo que hace es recorrer los distintos juegos de prueba, ejercitando el procedimiento que se quiere probar y validando el resultado esperado con el obtenido por cada uno de los datos de prueba”.

Paso 2: Cargar los datos de prueba

“Lo que resta es setear los valores esperados, ejecutando el Unit Test seleccionando Run Test(s). El objeto Unit Test tiene la misma potencia que un procedure. Pueden agregar validaciones a la base de datos, llamar funciones, agregar variables y llamar otros procedimientos. Acá se despliega en el panel de resultados los detalles de la ejecución. También pueden ejecutar nuevamente las pruebas, y ver la información detallada de la cobertura de prueba y de cada una de las assertions ejecutadas”.

2 – Pruebas de interfaz web

El objetivo de la prueba de interfaz web es verificar un escenario en una aplicación deployada. Para implementarla se debe grabar el flujo que se quiere automatizar y luego ejecutarlo en un navegador.

“La prueba de interfaz lo que hace es simular la interacción entre el usuario y la aplicación realizando las validaciones que se agreguen. Se puede ejecutar en distintos navegadores. Esta información (navegador, versión, fecha y ejecución de cada uno de los comandos junto con los assertions agregados en el flujo) se puede visualizar en el panel de resultados. Es importante que las pruebas de interfaz sean implementadas en los flujos de mayor riesgo de nuestro negocio para poder capturar los bugs de forma temprana y así poder agilizar nuestro ciclo de desarrollo”.

Paso 1: Abrir el GXtest Recorder

“Se debe seleccionar la opción Record Web UI test. Esto hará que se abra GXtest Recorder, que es una grabadora que captura las distintas acciones que se ejecuten sobre la aplicación para luego devolver el script del código GeneXus.

Paso 2: Grabar el flujo

“Cuando la grabadora está activa, se debe ingresar la URL de la aplicación e implementar las acciones que se quieren automatizar. En este caso (ver vídeo), creé una nueva transferencia, agregué la validación del saldo de la cuenta de origen antes de confirmar la transferencia, confirmé la transferencia y agregué otra validación del saldo de la cuenta de origen luego de haber confirmado la transferencia”. “Detendremos la grabación, copiaremos el script de código GeneXus y lo llevaremos al IDE para poder ejecutarlo en distintos navegadores”.

Paso 3: Llevar el código GeneXus al IDE

“Teniendo el script de prueba de interfaz web en código GeneXus listo para ejecutar en cada deploy de nuestra aplicación, ahora podemos correrlo desde el IDE haciendo botón derecho Run Test(s). Este objeto web UI test tiene la misma potencia que un objeto procedure ya que pueden agregar variables para el manejo de datos, validaciones a la base de datos, llamadas a procedimientos y funciones y todo lo que necesiten para enriquecer su prueba de interfaz”.

3 – Prueba de interfaz mobile

El objetivo de la prueba de interfaz mobile es la misma que la de interfaz web, simular el flujo del usuario sobre la app. La idea es poder ejecutar este mismo flujo en distintos dispositivos y validar que en todos funciona correctamente.

“Para generar un prueba se debe escribir el código en el IDE y ejecutarla. Lo que haré aquí es solamente ejecutarla dado que ya tengo escrito el código”.

Step 1

“En esta prueba de interfaz mobile se ejecuta el login en la aplicación y se verifica que exista el texto My Accounts y saldo de la cuenta destino de la transacción que se realizó anteriormente, que en este caso tiene que ser doscientos dólares. Para esto se debe seleccionar la opción Run Test(s). Este objeto, al igual que el objeto Web UI Test y el objeto Unit Test tiene la potencia de un objeto procedure, permitiendo agregar las validaciones en la base de datos que sean necesarias.

Step 2

“Una vez que se realiza el proceso anterior, la prueba se ejecuta en el simulador reproduciendo el flujo del usuario. Luego hace el logout y termina la ejecución de la prueba. Podemos ver en en el IDE información de cada uno de los comandos que se ejecutaron. Tenemos lista la prueba de interfaz mobile para ejecutar siempre que hagamos un deploy de nuestra aplicación.

Write to us to request information about GeneXus

    a

    Magazine made for you.

    Featured:

    No posts were found for provided query parameters.

    Elsewhere:
    en_USEN