X
BLOG

Consejos y trucos para hacer que las herramientas de grabación de la interfaz de usuario sean menos dolorosas

Consejos y trucos para hacer que las herramientas de grabación de la interfaz de usuario sean menos dolorosas Tiempo de leer: 9 minutos
Las herramientas de grabación de la interfaz de usuario pueden ser frustrantes, pero no tienen por qué serlo. Con algunos consejos y trucos rápidos para hacer que los casos extremos sean menos dolorosos, será más feliz escalando la automatización de las pruebas de IU.

Los evaluadores adoptan la automatización de pruebas, específicamente la automatización de pruebas de IU, para acelerar las acciones de prueba repetitivas y enfocar el trabajo manual en encontrar problemas nuevos e interesantes. Con la automatización de pruebas de IU, puede definir las diferentes rutas que desea tomar a través de la aplicación y, en lugar de que un humano haga el trabajo, la máquina puede validar la aplicación de manera continua y automatizada.

La forma principal de crear una prueba automatizada es escribiendo código. Esto puede ser desafortunado, porque un evaluador que sabe cómo atravesar la aplicación a mano tiene que aprender a escribir código usando un marco como Selenium o usar una herramienta patentada como UFT para crear un flujo de trabajo automatizado que refleje el que estaban haciendo. mano. Esto puede convertirse en un desafío rápidamente, ya que el código, por naturaleza, es propenso a errores y la escritura de pruebas automatizadas puede requerir un conjunto de habilidades bastante sofisticado.

Para facilitar el desafío, muchas herramientas (Parasoft's Herramienta de automatización de pruebas de interfaz de usuario incluido) incluyen la capacidad de grabar y reproducir un escenario web. Estas herramientas son excelentes en teoría, pero un gran problema es que la mayoría de las grabadoras no logran grabar y reproducir el escenario exacto el 80% del tiempo. Esta es una realidad desafortunada, pero hay una luz al final del túnel. Estos son algunos de los desafíos comunes que enfrentan todas las grabadoras, y algunos consejos y trucos que puede adoptar para solucionarlos.

Cuando la aplicación web se comporta de manera diferente durante la reproducción que cuando la grabó ...

La inconsistencia en el comportamiento de las aplicaciones web es el desafío número uno que enfrentará con las tecnologías de grabación y reproducción, y puede ser bastante difícil de superar. Aquí hay algunas razones diferentes por las que esto puede suceder, así como algunas técnicas para ayudarlo a diagnosticar y potencialmente solucionar los problemas.

Problema n. ° 1: la aplicación se registró en un estado en particular, aunque usted no lo sabía.

Los desarrolladores de software utilizan cookies del navegador para almacenar información de sesión para un usuario particular de una aplicación web, o para rastrear sesiones entre aplicaciones relacionadas. Las cookies se pueden utilizar para recuperar información sobre el usuario sin necesidad de almacenar la información en un sistema de back-end. Una cookie registra datos como el hecho de que el navegador del usuario ha visitado previamente la aplicación web o información sobre la sesión actual del usuario.

Para fines de automatización, las cookies existentes pueden causar fácilmente un problema. Los marcos de automatización de pruebas como Selenium a menudo inician el navegador en un estado "limpio" en el que se han eliminado todas las cookies. Si grabó una prueba con cookies presentes, la aplicación web se comportará de manera diferente durante la reproducción que cuando la grabó, y la prueba grabada puede fallar.

Un ejemplo son los datos de sesión almacenados en una cookie que permite a un usuario permanecer conectado a una aplicación web entre sesiones de navegador. Si comienza a grabar cuando ya ha iniciado sesión, no se capturará ninguna información de inicio de sesión en el caso de prueba grabado. Durante la reproducción, no habrá cookies presentes, por lo que la aplicación irá inmediatamente a una página de inicio de sesión y la prueba fallará.

El mismo tipo de problema ocurrirá cuando aparezcan elementos en la página durante la reproducción que no aparecieron durante la grabación. Muchas aplicaciones web muestran una notificación en la primera visita de un usuario, como una notificación GDPR sobre el uso de cookies de la aplicación, o un div emergente que muestra una oferta especial, venta o oportunidad de suscripción al boletín. En este caso, la reproducción de escenarios grabados fallará porque los elementos adicionales de la página no aparecieron durante la grabación y, por lo tanto, la prueba no sabe cómo interactuar con los elementos adicionales.

He aquí cómo hacer que eso sea menos doloroso ...

Solución: grabar y reproducir en modo incógnito / privado

La mayoría de los navegadores pueden configurarse para iniciarse en modo incógnito / privado. Cuando se ejecuta en este modo, las cookies y la información del perfil se eliminan, por lo que la aplicación web se comportará como si fuera su primera visita y no hubiera iniciado sesión. Registre sus escenarios de prueba utilizando un navegador que se haya iniciado en modo incógnito / privado. y tendrá una línea de base limpia para sus escenarios de prueba registrados. En Chrome, la configuración se ve así:

Aquí hay un gran artículo. que muestra cómo configurar este modo en navegadores distintos a Chrome.

Una vez que haya creado su secuencia de comandos de prueba, normalmente puede permitir que se reproduzca en modo normal. Sin embargo, hay ciertos casos en los que puede ser beneficioso reproducir en modo incógnito / privado. Un ejemplo de esto sería una aplicación web que usa su ubicación actual para personalizar la experiencia en la página. He visto casos en los que la ubicación actual recuperada durante la reproducción de una prueba de selenio difería de la ubicación recuperada durante la grabación (no estoy seguro de por qué). La reproducción en modo incógnito / privado evitará que el navegador obtenga su ubicación actual y estabilizará su escenario de prueba. En Selenium, puede indicar que la reproducción se realice en modo incógnito / privado; consulte estos prácticos enlaces para Chrome y  Firefox.

Solución: configurar cookies específicas

Esto puede resultar útil si necesita que existan determinadas cookies para garantizar que la reproducción se inicie con la aplicación web en un estado específico. Aquí está un gran publicación en el foro que describe el proceso para capturar y configurar cookies específicas en la reproducción.

Problema n. ° 2: cambiar el tamaño de la pantalla

La práctica moderna de desarrollo de aplicaciones web de diseño web adaptable causa problemas durante la creación automática de pruebas. Para crear una aplicación web que funcione tanto para dispositivos móviles como para computadoras de escritorio, los desarrolladores crean aplicaciones receptivas que cambian según el tamaño de la pantalla. Esto se ve cuando se cambia el tamaño de una ventana y la interfaz de usuario cambia por completo. ¡Imagínese lo que eso le hace a una prueba automatizada!

Si graba su prueba en una ventana maximizada y luego la reproduce en una ventana de tamaño medio, los elementos de la página podrían estar ocultos u oscurecidos debido a las diferencias de tamaño del navegador. Un efecto similar ocurre cuando la resolución en su máquina de reproducción es diferente a la de su máquina de grabación. De cualquier manera, tiene un gran impacto en la automatización de sus pruebas.

He aquí cómo hacer que eso sea menos doloroso ...

Solución: maximice la reproducción de su navegador

Puede utilizar los comandos de Selenium para maximizar el tamaño del navegador:

  • Utilice la API de Selenium WebDriver (funciona en todos los navegadores compatibles con Selenium):
    driver.manage (). window (). maximizar ();
  • Agregue esta opción para Chrome que le ahorrará un paso en su prueba al configurar WebDriver Opciones de Chrome:
    options.addArguments ("inicio maximizado")
  • Consulte este útil tutorial para conocer otros comandos de tamaño del navegador

Maximizar el navegador asegura que la página sea de tamaño completo y que los elementos estén organizados en la página para esa configuración. Suponiendo que grabó con el tamaño de pantalla al máximo, los elementos generalmente serán consistentes entre la grabación y la reproducción, incluso si la máquina que realiza la reproducción usa una resolución diferente.

Cuando las pruebas fallan esporádicamente o se comportan de manera diferente debido a problemas de tiempo ...

Como ser humano, cuando uso una aplicación web, busco elementos específicos e interactúo con esos elementos cuando están "listos". En una prueba automatizada, es un poco más difícil para la máquina saber cuándo hacer las cosas que cuándo esperar.

La herramienta de prueba automatizada ejecuta un escenario de prueba como una serie de pasos. Por ejemplo, al ejecutar una prueba de carrito de compras contra Amazon, puede llegar a un punto en el que el siguiente paso sea agregar un artículo al carrito y luego hacer clic en el botón del carrito. El problema es que es posible que el botón del carrito no esté disponible inmediatamente después de que se agregue el artículo, y puede haber un momento en el que el ícono cambie. El script de prueba necesita saber exactamente la cantidad de tiempo correcta para esperar, o las condiciones que se deben buscar para avanzar. La configuración en la prueba que maneja esto generalmente se llama "condiciones de espera". Los registradores tienen muchas dificultades para comprender qué condiciones de espera crear en los scripts de prueba, por lo que debe crear manualmente condiciones de espera sofisticadas en sus pruebas.

He aquí cómo hacer que eso sea menos doloroso ...

Solución: utilice esperas explícitas

Las esperas explícitas son condiciones de espera que se establecen en un elemento individual, que le indican a Selenium WebDriver que espere hasta que se cumpla una condición específica, como esperar a que un elemento esté presente o visible en la página. La condición de espera especifica una cantidad máxima de tiempo de espera para que se cumpla la condición.

Utilice esperas explícitas siempre que la prueba intente encontrar un elemento. Si no se utilizan condiciones de espera, la prueba fallará si el elemento no está presente inmediatamente en el estado adecuado. Selenium WebDriver también admite condiciones de espera implícitas, que se establecen globalmente para un escenario de prueba completo y se utilizan cada vez que la prueba intenta encontrar un elemento. Sin embargo, no se recomiendan esperas implícitas. Consulte la documentación de Selenium en esperas explícitas e implícitas.

Cuando se utilizan esperas explícitas, Selenium puede generar excepciones que interrumpan la condición de espera, pero en realidad desea que la condición de espera continúe en esos casos. Puede manejar esto configurando las esperas explícitas para ignorar excepciones particulares. Algunas excepciones comunes que deben ignorarse son NoSuchElementException, StaleElementReferenceException y ElementClickInterceptedException.

A continuación, se muestra un buen ejemplo de una espera explícita que ignora una de estas excepciones:

WebDriverWait wait = nuevo WebDriverWait (controlador, DEFAULT_WAIT_FOR_ELEMENT_TIMEOUT); wait.ignoring (StaleElementReferenceException.class); wait.until (ExpectedConditions.elementToBeClickable (elemento);

Cuando los localizadores de elementos se rompen debido a cambios en partes no relacionadas de la página ...

Los grabadores de aplicaciones web intentan crear un buen localizador de elementos para cada elemento de la página al que se hace referencia en la prueba grabada, pero en muchos casos los localizadores que se graban no son los ideales. Por ejemplo, el localizador grabado puede hacer referencia a información dinámica que cambia cada vez que se visita la página, o ser propenso a romperse cuando se modifican posteriormente partes no relacionadas de la página.

Algunos ejemplos comunes pueden ser:

  • ID que cambian cada vez que visita la página, lo cual es muy común en las aplicaciones de Salesforce y SAP:
    Haga clic aquí para más información
  • Texto que difiere según el usuario específico que inició sesión:
    Cerrar sesión de usuario (bob)
  • Localizadores basados ​​en posición, como un xpath, que ya no funcionarán si los elementos de la página a los que hacen referencia los segmentos en el xpath se mueven o modifican posteriormente en la aplicación web.

He aquí cómo hacer que eso sea menos doloroso ...

Solución: cree localizadores inteligentes

Por lo general, es bastante fácil identificar los localizadores de elementos que contienen información dinámica. Tan pronto como reproduzca su escenario grabado, estos localizadores fallarán porque la información dinámica de la que dependen es diferente. Para manejar estos casos, necesita encontrar atributos de identificación única del elemento de página que pueda usar en el localizador de elementos en lugar del atributo dinámico que se registró.

Una forma de hacer esto es navegar manualmente en su navegador hasta la página donde aparece el elemento, y luego hacer clic con el botón derecho en el elemento y elegir la opción de menú para inspeccionar el elemento (llamado Inspeccionar en Chrome e Inspeccionar elemento en Firefox). Esto lo llevará a una estructura DOM que le permitirá ver el código DOM y HTML subyacente para el elemento. En esta vista puede identificar otros atributos mediante los cuales identificar el elemento. Los atributos comunes para buscar son "clase", "nombre", "título" y "alt", pero estos también pueden ser dinámicos y debe elegir uno o más que identifiquen de forma única el elemento. En algunos casos, un atributo que se utiliza mejor para identificar de forma única el elemento se encuentra en un elemento principal, por lo que es posible que desee crear un xpath relativo como el siguiente:

// div [@ class = 'actionButton'] / botón

Otro enfoque es usar herramientas que pueden brindarle varias opciones de localizador, entre las cuales puede elegir una y luego modificarla según sea necesario. Algunas herramientas específicas que me vienen a la mente son SeleniumIDE y TruePath, las cuales crean múltiples localizadores diferentes que se pueden usar para identificar un elemento. Puede utilizar un localizador tal cual o elegir uno y modificarlo para que se adapte a sus necesidades.

Una tercera opción es utilizar Parasoft Selenic para generar recomendaciones para mejores localizadores cuando las pruebas fallan debido a malos localizadores o localizadores rotos de autocuración en tiempo de ejecución. Selenic utilizará datos históricos de ejecuciones de pruebas anteriores, así como información sobre el estado actual de la página para sugerir un conjunto de localizadores diferentes que puede utilizar, junto con su confianza sobre cada localizador.

Algunos consejos adicionales

Además de lo que ya mencioné, existen otras situaciones comunes que surgen al crear escenarios de prueba a partir de la grabación. Aquí hay algunos consejos adicionales para hacer que el uso de las herramientas de grabación de la interfaz de usuario sea menos doloroso.

Grabación de acciones flotantes

Tradicionalmente, es difícil para las herramientas de grabación y reproducción capturar elementos de la página que aparecen cuando un usuario coloca el mouse sobre otro elemento. Por lo general, la acción de desplazamiento no se registra, pero la interacción con el elemento que aparece sí se registra. Al ejecutar el escenario de prueba, la acción de desplazamiento no ocurre y el elemento de página siguiente definido en el escenario de prueba nunca aparece, lo que hace que la prueba falle.

Para que esto sea menos doloroso, preste atención durante la grabación a dónde las acciones de desplazamiento revelan elementos adicionales, y cuando vea uno de estos casos, haga clic en el elemento en lugar de simplemente desplazarse sobre él. Esto hará que se registre una acción de clic en su prueba para ese elemento de página. Si desea que la prueba se desplace en lugar de hacer clic en el elemento, cambie la acción de hacer clic en la prueba a una acción de desplazamiento después del hecho. Aquí hay un artículo para ayudarte con esto.

Desplazamiento

Muchas veces, durante la grabación, es necesario desplazar los elementos de la página a la vista para interactuar con ellos. Las herramientas de grabación generalmente no registran acciones de desplazamiento, y no es necesario, ya que Selenium normalmente maneja el desplazamiento por usted. Sin embargo, hay algunos casos en los que Selenium no desplaza el elemento de la página a la vista cuando se reproduce la prueba, y la prueba fallará porque el elemento no es visible. Para que esto sea menos doloroso, agregue manualmente las interacciones de desplazamiento más tarde usando un ejecutor de JavaScript. Aquí hay un gran artículo. que te ayuda a superar esto.

Algunas acciones no registradas

De vez en cuando, durante la grabación, los elementos simplemente no se graban. Muy a menudo, esto se debe a que el marco de la interfaz de usuario crea los elementos de la página de una manera única.

Para que esto sea menos doloroso, realice un seguimiento de las acciones específicas que está realizando en su aplicación web mientras graba. Después de grabar, identifique en su secuencia de comandos de Selenium dónde debería haber estado la acción y agréguela manualmente. Puede identificar el localizador a usar navegando en el navegador hasta la página donde se perdió la acción y luego usar una de las extensiones del navegador mencionadas anteriormente para capturar un localizador y ponerlo manualmente en la prueba.

Conclusión

La creación de escenarios de prueba con herramientas de grabación de IU puede ser dolorosa, pero no tiene por qué serlo. Aproveche estas técnicas para que tenga éxito con su práctica de automatización de pruebas de IU. ¡Feliz prueba!

Nueva llamada a la acción

Escrito por

Nathan Jakubiak

Nathan es Director de Desarrollo de Parasoft. Él y sus equipos desarrollan capacidades de productos en las áreas de pruebas de UI (Selenic), pruebas de API (SOAtest), virtualización de servicios (Virtualize) y pruebas unitarias (Jtest). Ha estado con Parasoft desde 2000.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.

Prueba Parasoft