Hemos estado analizando la herramienta Functionize, la cual nos permite realizar pruebas end-to-end utilizando inteligencia artificial. Todo ello sin necesidad de escribir ni una sola línea de código y realizado de una forma muy visual. Asimismo, también veremos como se integra con Jenkins, Jira y XRay de una forma sencilla.
Obtención de trial y credenciales de acceso
Para poder bajarnos un trial, necesitaremos ir a su página oficial https://www.functionize.com
Hacemos clic en Free Trial e introducimos nuestros datos. Una vez se hayan hecho la comprobaciones por parte de Functionize recibiremos nuestro acceso:
Acceso y pantalla principal
Dentro de la pantalla principal hacemos clic en Log In e introducimos las credenciales:
Una vez accedemos dentro de la plataforma veremos todos los proyectos con los que estamos trabajando:
Hacemos clic en Add new project. Se nos presentará una pantalla como la siguiente:
En esta pantalla añadimos el nombre con el que queramos identificar a nuestro proyecto, la url (sin indicar el protocolo) y el tipo de entorno (Live, Staging o Development). El entorno permitirá separar las variables del proyecto y permitirá configurar el dominio para el entorno en el que se está probando, añadiendo la configuración de entornos adicionales a posteriori.
Para acceder dentro de un proyecto nos ubicamos con el ratón encima de él y pulsamos View Project:
Dentro del proyecto hay dos tipos de objetos:
- Test Cases: Son nuestras pruebas automatizadas realizadas.
- Page Objects: Como su nombre indica, nos permite englobar partes de test que se repiten, de manera que podemos utilizarlos para complementar los tests cases que realicemos. En la parte central, vemos los Test Cases o Page Objects, en función de lo que hayamos seleccionado.
Creación de un nuevo Test
Para crear un nuevo test, haremos clic en la parte superior derecha en New Test y seleccionaremos Architect. La primera vez que lo hagamos nos requerirá que instalemos la extensión correspondiente dentro de Chrome, con la finalidad de poder grabar nuestras acciones del test. Una vez instalada al hacer clic en New Test > Architect se nos presentará una pantalla como la siguiente:
Introducimos en primer lugar la url de la página web sobre la que queremos hacer las pruebas. Asimismo, podemos establecer la región, la orientación (vertical o horizontal) y las credenciales en caso de necesitar autenticación. Es importante activar la casilla que nos informa que no se van a utilizar credenciales de producción en nuestros tests. Una vez finalizado hacemos clic en Start.
Se nos abrirá la página web indicada con un pop-up de Functionize a la derecha. Para iniciar la grabación haremos clic en el botón REC. Se nos dará la posibilidad de borrar caché antes de iniciar.
Hacemos clic en Continue y en ese momento se iniciará la grabación. Lo que haremos será emular las acciones del test como si lo ejecutáramos manualmente mientras la herramienta va grabando dichas acciones. También podemos hacer cambios en tiempo real, como borrar acciones, añadir verificaciones (tanto verificar elementos como verificaciones visuales), añadir Page Objects existentes, esperas, etc.
Grabación de acciones:
Borrado de una acción en tiempo de grabación:
Añadir una verificación. Para ello haremos clic en Verify y posteriormente en el elemento de pantalla que queramos verificar. Por ejemplo que una label tenga un valor determinado:
Si queremos hacer una comprobación visual haremos clic en Visual Check y seleccionaremos el elemento, imagen, etc sobre el que queremos hacer visual testing:
También podemos añadir acciones Hover como por ejemplo en menús:
Podemos añadir acciones extra como por ejemplo, variables de proyecto, esperas, Page Objects, etc. Para ello hacemos clic en Type Instructions y escogemos qué acción queremos implementar:
Una vez hayamos hecho las verificaciones pertinentes del test, podemos finalizarlo haciendo clic en Pausa y posteriormente grabar las acciones del test:
Le ponemos un nombre al test:
Se guardan todas las acciones, atributos e imágenes incluidas en el test:
Llegados a este punto podemos guardar las acciones como un Test Case o bien como un Page Object, el cuál podremos integrar posteriormente dentro de otros tests.
Acciones dentro del Dashboard (Edición, Ejecución, Performance)
En la parte superior derecha tenemos el botón de tres puntos el cuál podremos acceder a los datos del proyecto, editarlos, añadir variables de proyecto, tags, etc.
Podemos escoger en qué navegadores queremos probar nuestros tests:
Para ejecutar un test, haremos clic en uno o más navegadores que tengamos definidos para ese test. Podemos realizar ejecuciones secuenciales o en paralelo:
Podemos ver el detalle del test y los resultados de la ejecución entrando en los detalles del mismo. Para ello hacemos clic en el nombre del test.
En la pestaña Actions veremos las acciones del test
Y en las pestañas de los navegadores podremos ver el resultado de la última ejecución:
Haciendo clic en View Results podremos ver cada acción con su imagen correspondiente y en caso de fallo ver el motivo:
Dentro de la pestaña History veremos el historial completo de las ejecuciones:
Adicionalmente, podemos visualizar los resultados de la performance de la ejecución. Para ello accedemos a la opción Project Metrics:
Integración con Jenkins, Jira Y XRay
Functionize permite la integración con otras aplicaciones como por ejemplo TestRail, XRay, Jira, Slack, Jenkins, etc. Para configurar estas integraciones iremos al menú Teams > Integrations.
Para la integración con Jira y XRay, necesitaremos contar con una instancia de Jira y el plugin de Xray instalado. Posteriormente configuramos el acceso y el mapeo de cada test de Functionize con su correspondiente proyecto donde volcaremos los resultados.
Para vincularlo con Jenkins, bastará con seleccionar el tipo de integración que queremos hacer y Functionize nos informará de todos los pasos a hacer.
Una vez tengamos XRay correctamente vinculado deberemos asignar para cada test en Functionize su correspondiente Test en Xray. Para ello vamos al test en Functionize y hacemos clic en Xray Linking. Con esta acción vincularemos los tests de Functionize con los tests de XRray.
Generando un job execution
Una vez lo tenemos todo vinculado, vamos a generar un Job Execution (Orchestration) de manera que ejecutemos un Job en Jenkins, cuya implementación sea el lanzamiento de la orchestration en Functionize y al acabar, nos incluya los resultados en XRay. Para ello deberemos tener completada las integraciones del punto anterior.
En primer lugar, iremos al menú Orchestrations de la parte superior y haremos clic en Create New Orchestration.
Introducimos el nombre que le queramos dar y seleccionamos lo que queramos incluir al job, proyectos, entornos, testcases, navegadores etc. Seleccionamos el tipo de ejecución bajo demanda.
Dentro de la pestaña Advanced definimos si queremos un lanzamiento de tests secuencial o en paralelo. Asimismo definimos la issue Test Plan de Xray y la fix versión, si procede, para poder enlazar después los resultados.
Guardamos los datos y ya tenemos nuestro job generado.
Lanzando un job execution desde Jenkins y volcado de resultados en XRay
Aquí tenemos nuestro job de Jenkins implementado según las instrucciones proporcionadas por Functionize.
Una vez lancemos el job en Jenkins se nos activará nuestros job en Functionize.
Al finalizar podremos ver y volcar los resultados en Xray. Para ver los resultados haremos clic en Actions > Orchestration Results.
En la pantalla de resultados podremos visualizar el estado de la ejecución de cada test por cada navegador definido, así como los datos del performance por cada test ejecutado.
Haciendo clic en el botón Submit to Xray ubicado en la parte superior podremos volcar los resultados en XRay, los cuales presentan el aspecto siguiente.
Test Plan en Xray
Los dos Test Execution con los vínculos a los detalles de la ejecución por cada navegador en el que se haya ejecutado el test.
Conclusión
En resumen, Functionize es una herramienta muy interesante para aquellos que quieran aprovechar las ventajas de la inteligencia artificial aplicada en el testing. Permite la generación de tests de una forma sencilla y visual evitando tener que programar código fuente. Además, las integraciones que contiene con Jenkins, Jira y XRay entre otros nos permite el control de los resultados pudiendo generar informes de trazabilidad como los actualmente existentes en XRay.