Generación de sondas sintéticas y sus beneficios (parte I)

Generación de sondas sintéticas y sus beneficios (parte I)

Generación de sondas sintéticas y sus beneficios (parte I)

Tiempo de lectura: 7

En un entorno de comercialización global en el que cada vez tienen más peso las ventas a través de las diferentes webs de las empresas, es necesario que las compañías garanticen el rendimiento de sus aplicaciones y sistemas para garantizar la mejor experiencia de cliente. Esto se consigue a través de las sondas sintéticas, las cuales permiten obtener información precisa y en tiempo real.

¿Qué es una sonda sintética?

Las sondas sintéticas son programas automatizados para simular el comportamiento de los usuarios reales al interactuar con un sistema o aplicación. Estas sondas pueden realizar tareas específicas, como enviar una solicitud HTTP o completar un formulario web, y luego medir el tiempo de respuesta y la calidad de la respuesta recibida.

¿Qué tipo de sondas tienes a tu disposición? En Datadope tenemos dos tipos de sondas:

  • Sondas sintéticas: la monitorización sintética con sondas de API implica el uso de programas automatizados que simulan la interacción de una aplicación con una API, es decir, la interfaz de programación de aplicaciones. Estas sondas sintéticas envían solicitudes a la API y luego miden el tiempo de respuesta y la calidad de la respuesta recibida. De esta manera, las empresas pueden asegurarse que sus aplicaciones se integran correctamente con otras aplicaciones y sistemas, y que cumplen los acuerdos de nivel de servicio (SLA) establecidos.
  • Sondas programáticas: la monitorización sintética con sondas de navegador implica el uso de programas automatizados que simulan el comportamiento de los usuarios reales al interactuar con una aplicación a través de un navegador web. Estas sondas sintéticas realizan acciones específicas, como hacer clic en un botón o rellenar un formulario, y luego miden el tiempo de respuesta y la calidad de la respuesta recibida. De esta manera, las empresas pueden detectar rápidamente cualquier problema en su aplicación en diferentes navegadores y dispositivos, y garantizar que la experiencia del usuario sea consistente y satisfactoria. En el caso de que se produjese una incidencia, el cliente podría acceder a un video que le permita visualizar el punto donde se ha roto el proceso de la sonda.

En esta primera entrada hablaremos sobre las consideraciones para poder crear una sonda sintética para simular de la forma más real posible la experiencia de usuario en un flujo común de navegación por la aplicación en concreto.

Creación de una sonda programática

Para la creación de una sonda sintética se definen las siguientes acciones

proceso grabacion de sonda programatica

El objetivo de este flujo es garantizar que las diferentes acciones realizadas por la sonda sintética sean lo más fiables posible a una navegación real del usuario, de cara a poder desplegar la transacción en un entorno productivo de IOMetrics Synthetix para poder medir el estado y tiempo del aplicativo.

Se detectan las siguientes necesidades a cumplir durante el proceso de creación de una sonda programática:

  • Agnósticas a posibles cambios de páginas web
  • Agrupación funcional de acciones para validar diferentes componentes del aplicativo
  • Validación de existencia y operatividad de los elementos a interaccionar del aplicativo

Para ello, se describen a continuación las consideraciones a tener en cuenta cuando vamos a generar una sonda programática:

Grabación

Para la grabación de las sondas programáticas podemos utilizar diferentes recorders disponibles, como extensiones en browsers o extensiones de aplicativos (VSCode). En Datadope tenemos nuestra extensión que genera el formato específico para nuestro aplicativo IOMetrics Synthetix.

Refinamiento: navegación

El objetivo de nuestra sonda programática es simular de la forma más real posible al usuario y poder validar y garantizar que la transacción que realice el usuario se pueda realizar de forma satisfactoria y, en su defecto, poder validar que el servicio expuesto al usuario funciona correctamente en un tiempo razonable.

Para ello, se listan a continuación diferentes consideraciones para poder mejorar el diseño de la propia transacción.

Navegación privada

Para poder realizar la transacción es importante realizarla en una ventana de incógnito/navegación privada para evitar:

  • Sesiones guardadas de anteriores accesos
  • Cookies guardadas y poder simular el acceso único de un usuario a nuestro aplicativo.

La ventana de incógnito garantizará que aparezca el banner de cookies y podremos realizar las acciones para validar el banner u otros elementos que aparezcan. Al no tener sesiones almacenadas en el navegador, podremos simular el login o simular accesos no deseados en diferentes recursos de nuestro aplicativo

Validación de elementos y esperas

Las páginas web tienen diferentes estrategias de carga y durante la carga de la misma, los elementos con los cuales se va a interactuar pueden aparecer en momentos determinados del tiempo o no tener la funcionalidad debido a que se añade vía código.

Para poder simular de forma real la interacción con un usuario debemos utilizar condiciones de espera y validación de los diferentes elementos de nuestro aplicativo con los que vayamos a interactuar y que tengan la funcionalidad deseada:

  • Espera a que el elemento exista en nuestra página web
  • Espera a que el elemento sea visible en nuestra página web
  • Espera a que la página web contenga un elemento determinado

Se debe evitar a medida de lo posible el uso de esperas “manuales” (ej: Sleep, Wait, u otros comandos que nos ofrecen los framework)

Timeouts en esperas e interacciones entre páginas web

En muchas páginas web cuando el usuario navega entre los diferentes menús o accede a diferentes elementos, estos hacen referencia a carga de nuevas páginas o recursos donde el usuario debe esperar a que la nueva vista finalice. Para cada interacción con los diferentes elementos es recomendable indicar el timeout que se considera que el usuario debe esperar antes de salirse de la página web, pensándose que no está funcionando o tiene algún problema con su conexión.

Locators e identificadores de elementos

Los “locators” permiten identificar (dentro del árbol de elementos que componen una página web en forma de árbol (DOM)) los diferentes elementos HTML a interaccionar accediendo a las diferentes propiedades de los mismos (id, class, texto, enlace, etc.). La mayoría de los frameworks permiten utilizar diferentes locators genéricos que acceden a propiedades de los elementos (id, class, link…), aunque el más común y genérico es el uso xpath.

Un mismo elemento puede identificarse mediante diferentes locators, pero es recomendable usar un locator que sea agnóstico a los diferentes cambios que pueda sufrir una página web. Para ello, definimos los siguientes casos a evitar y donde requerirá un refinamiento:

  • ID dinámico en compilación: los ids de los diferentes elementos pueden variar en tiempo de compilación de la propia página web
  • Elementos posicionales vía xpath
  • Clases de estilo no específicas a elementos

 

Ejemplo: seleccionar el elemento de Compañía

Locator
Recomendable
Detalle
id=sm-16823485866516055-5
No
ID variable, cualquier cambio y compilación de la página web nuestra sonda sintética dejará de funcionar
xpath=(.//nav/ul/li/[4]/a)
No
Si se añade una nueva sección previa en el menú, nuestra sonda sintética dejará de funcionar
class=elementor-item
No
Si se usa la clase a cualquier otro elemento de la página web y coincidir con el deseado, nuestra sonda sintética dejará de funcionar
xpath=(.//nav/ul/li/a[contains(text(),»Compañía»)])
Se busca un texto en concreto que aparezca en el propio menú y no tiene en cuenta la posición del menú o los estilos aplicados en la propia navegación
Credenciales y datos sensibles

A la hora de realizar el login o insertar datos sensibles en los formularios de nuestro aplicativo, es importante utilizar los mecanismos que nos ofrece el framework para poder esconder y securizar nuestros credenciales o datos sensibles

Para ello es importante revisar la transacción sintética y garantizar que las credenciales estén ocultas en nuestra definición de transacción y que las credenciales se lean desde algún gestor de credenciales u otras fuentes.

Refinamiento: agrupación funcional

El objetivo de una sonda programática es poder validar que un servicio de nuestro aplicativo esté disponible al usuario: compra de un artículo, validación de inventario, validación de procesos automáticos…

Para completar la sonda y validación, la transacción del usuario deberá interactuar con elementos web y que a su vez realizan llamadas a servicios externos al propio aplicativo (llamada a servicio de login, base de datos, etc.). Para poder acotar posibles problemas detectados en una navegación y correlar la monitorización de nuestro aplicativo, es importante agrupar las diferentes acciones en pasos funcionales y recoger, de la misma forma que se realiza a nivel global, los tiempos de respuesta y estado de cada uno de los pasos funcionales.

Supongamos el ejemplo de un e-commerce donde queremos validar que un usuario registrado es capaz de buscar un elemento en nuestro catálogo, acceder a su cesta de la compra y comprar su producto. Se definen los siguientes pasos funcionales para poder cumplir la navegación:


1. Acceso página principal

a. Acceso URL
b. Espera y aceptación cookies
c. Espera y clic en botón Login
d. Espera a carga de formulario de Login

2. Login

a. Introducir usuario y contraseña
b. Clic en Submit
c. Espera a carga de página principal con nombre de usuario

3. Acceso catálogo

a. Acceder al catálogo y buscar producto
b. Seleccionar elemento y añadir al carrito
c. Clic en cesta de la compra
d. Espera a carga de la cesta

4. Compra producto

a. Validar que el producto existe en el carrito de la compra
b. Validar que el botón comprar existe

Conclusión

Las sondas sintéticas permiten validar el estado actual del servicio desde el punto de vista de usuario y, por tanto, en valor para el negocio en concreto. Las sondas programáticas deben simular de forma real la transacción que realiza un usuario y se deben refinar a la medida de lo posible para poder detectar en tiempo y espacio los posibles errores de nuestro aplicativo.

Sergio Bengochea
Ana Ramírez

Ana Ramírez

¿Te ha resultado interesante?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

SÍGUENOS

CATEGORÍAS

ÚLTIMAS ENTRADAS