No tiene que deshacerse del selenio para deshacerse de sus problemas de selenio

Por Chris Colosimo

17 de octubre de 2019

6  min leer

Está claro que Selenium es la opción más popular para las organizaciones que automatizan sus pruebas de interfaz de usuario, pero los equipos aún se enfrentan a desafíos. Aprenda a resolver esos desafíos sin abandonar el marco por completo.

Cuando realizamos encuestas sobre herramientas de prueba de IU, quedó muy claro que Selenium se ha convertido en el estándar de facto. Pero lo extraño fue que, independientemente de a quién le preguntamos, siempre teníamos la misma advertencia: "Nos encanta el selenio, pero existen desafíos ".

Así que volvimos a la comunidad y preguntamos: "¿Cuáles son sus principales desafíos para las pruebas de IU?"

Los resultados fueron claros: el desafío número uno fue pruebas de construcción que se podrían mantener con el tiempo. A través de más entrevistas con los clientes, resumimos los principales problemas del selenio en estos cinco desafíos:

  1. Creando localizadores confiables y condiciones de espera
  2. Mantener las pruebas cuando cambia la interfaz de usuario
  3. Depuración y diagnóstico de fallas de automatización
  4. Tiempo necesario para ejecutar toda la suite
  5. Conocimientos / habilidades para crear guiones

Luego, comenzamos a ver cómo podríamos ayudar a resolverlos sin tener que deshacernos de Selenium. Resulta que puede resolver todos estos desafíos agregando Parasoft Selenic en la mezcla, pero hay muchas formas relativamente simples de resolver todos los desafíos de Selenium, sin abandonar la plataforma que todos adoran.

Cómo resolver los 5 principales desafíos con Selenium

Así que profundicemos en estos desafíos y cómo resolverlos.

Desafío 1: crear localizadores fiables y condiciones de espera

La creación de localizadores confiables implica comprender cómo construir un identificador que interactúe con el elemento correcto en todo momento y sea estable entre diferentes ejecuciones. Los usuarios se encuentran buscando en las herramientas de desarrollo de Chrome para encontrar el bloque HTML correcto, averiguando qué está haciendo y luego dedicar tiempo a construir el localizador más inteligente posible. Por lo general, lo que acaba pasando es que el localizador de elementos se selecciona en la aplicación cuando está en el estado actual y que en la reproducción las cosas tienden a ser diferentes. Esto puede resultar realmente frustrante.

Las condiciones de espera también juegan un papel muy importante aquí. Con las aplicaciones web modernas, cargar contenido dinámicamente dentro de una sola página significa que incluso si encuentra el localizador correcto, debe ser inteligente al crear la condición de espera correcta para asegurarse de que el elemento esté listo para interactuar con él. Todo puede ser un gran dolor.

La solución: localizadores inteligentes

Existen muchas soluciones de prueba de IU que se centran en resolver este desafío exacto utilizando el término "localizadores inteligentes". Los localizadores inteligentes capturan el localizador más inteligente posible cuando se crea inicialmente el script de prueba para que sea más resistente a los cambios. Mi publicación reciente que llama 10 excelentes herramientas nuevas para probar la interfaz de usuario incluye varias herramientas que tienen capacidades de grabación y reproducción para esto.

Además, hay complementos para Chrome que pueden ayudar durante la creación del script para extraer los mejores localizadores de elementos directamente de la página. He estado mirando varios de estos complementos y, con mucho, el mejor que he visto es TruePath.

Desafío 2: Mantener las pruebas cuando cambia la interfaz de usuario.

Este es un desafío doloroso que enfrentan las organizaciones cuando se trata de actividades continuas de pruebas ágiles. Escuchamos esta historia una y otra vez: los probadores pasan mucho tiempo construyendo su prueba de Selenium (con buenos localizadores y condiciones de espera), y luego la interfaz de usuario de la aplicación cambia y sus pruebas se interrumpen, a menudo fallando la compilación nocturna. El evaluador tiene que volver atrás y averiguar qué cambió en la aplicación, identificar si es un defecto / regresión real o si es solo hay algo mal en su guión de prueba. Y luego siga el proceso de corregir o actualizar la prueba identificando y creando nuevos localizadores / condiciones de espera. Es un círculo vicioso.

La solución: inteligencia artificial

La IA realmente puede ayudarte en esta área. Sí, sí, lo sé, IA es una palabra de moda en estos días. Pero hay usos extremadamente prácticos. En particular, Parasoft Selenic utiliza el aprendizaje automático durante la ejecución de la prueba de Selenium para resolver este desafío exacto. Cada ejecución de prueba produce una entrada única en su historial, que muestra el estado actual del DOM e indica si la prueba fue exitosa o no.

Si la prueba falla alguna vez debido a un cambio en la interfaz de usuario de la aplicación, Selenic retrocede en el tiempo y le dice cómo construir un nuevo localizador que funcione con la nueva versión de la aplicación. Esto es realmente poderoso porque significa que no tiene que dejar Selenium para superar los desafíos de mantenimiento al cambiar las IU (y un beneficio adicional de esta tecnología es su capacidad para autocurar su tubería de CI / CD, actualizando automáticamente el localizador en tiempo de ejecución para evitar que la compilación falle innecesariamente).

Desafío 3: depuración y diagnóstico de fallas de automatización

Depurar y diagnosticar las pruebas de selenio es difícil y puede suponer una pérdida de tiempo considerable (especialmente cuando se combina con una interfaz de usuario en constante cambio). Descubrimos que varias soluciones habían buscado resolver este desafío proporcionando sus propios marcos con funciones de informes avanzadas, pero luego, los probadores terminaron encerrados dentro de una plataforma patentada o IDE. Esto está “bien” si planea quedarse con ese proveedor o herramienta por el resto de su vida, pero ¿qué pasa con los usuarios de Selenium que quieren mantener la libertad original que les brindaba el código abierto?

La solución: automatización e informes inteligentes

Para resolver este desafío, puede utilizar una combinación de informes y análisis de la ejecución de la prueba, junto con herramientas IDE.

Conectando herramientas de informes, como Parasoft Selenic, en su canalización de CI / CD existente, puede comprender más fácilmente qué pruebas fallan y por qué. Con la autocuración en tiempo de ejecución, Parasoft Selenic puede evitar que la compilación falle innecesariamente debido a pruebas inestables. Una vez finalizada la prueba, Selenic proporcionará recomendaciones para corregir esas pruebas rotas, que se pueden importar directamente al IDE para su reparación automática.

Los propios IDE, como Eclipse e IntelliJ, tienen capacidades de depuración que le permiten establecer puntos de interrupción en sus pruebas de Selenium y pausar la aplicación en un punto en particular, para que pueda extraer información sobre el estado de la interfaz de usuario y lo que podría tener debido a la falla de la aplicación.

Desafío 4: tiempo necesario para ejecutar todo el guión

Las pruebas de IU automatizadas tardan más en ejecutarse que las pruebas que se ejecutan en la capa de API / servicio de su aplicación (y mucho más que las pruebas unitarias aisladas), y cuantas más pruebas de IU cree, más tiempo lleva ejecutar esas pruebas ... y cuanto más tiempo tenga que esperar la retroalimentación de la canalización de CI / CD. El problema es que la canalización se activa varias veces al día debido a los frecuentes cambios de código, y no puede esperar hasta el día siguiente (o, a veces, durante el fin de semana) para recibir comentarios útiles. Debe haber una forma de optimizar la ejecución de sus conjuntos de pruebas que equilibre la retroalimentación rápida con una cobertura completa.

La solución: análisis de impacto de prueba

Aquí es donde puede aprovechar tecnologías como Parasoft Selenic's análisis de impacto de prueba. Al rastrear el código que cubre cada prueba de Selenium y correlacionarlo con los cambios en la base del código, puede priorizar el subconjunto de pruebas que deben ejecutarse para validar los cambios de código. Con Parasoft Selenic, no necesita tener acceso al código subyacente porque simplemente escanea los binarios (por ejemplo, .war o archivo), identifica qué clases se han cambiado entre compilaciones y luego las asigna a los casos de prueba afectados para habilitar que ejecute un subconjunto de sus pruebas de Selenium como parte de la canalización de CI / CD.

Desafío 5: conocimientos y habilidades necesarios para crear guiones

Por último, el conocimiento y las habilidades necesarias para crear las pruebas de Selenium en primer lugar pueden hacer que el uso de Selenium sea prohibitivo. Dependiendo de con quién hablamos, este fue el primero o el último en la lista de desafíos a los que se enfrentaba la gente. Por lo general, veíamos que cuando los usuarios recién estaban comenzando con Selenium, su desafío número uno era la creación de pruebas, pero una vez que comenzaban y comenzaban a construir una práctica de prueba madura, ya no era el desafío número uno y, en realidad, los otros problemas. se volvió más importante. Entonces, a mi modo de ver, superar ese obstáculo inicial es el verdadero desafío.

La solución: ayudantes de código

Hay cosas como Selenium sin código y la creación de Selenium impulsada por PNL, pero no he visto una que funcione de la manera que todos esperaríamos que lo hiciera. Una de las principales realidades de Selenium es que es código. Esto es bueno y malo. Es bueno porque si tiene cosas que necesita hacer que están fuera de la "práctica normal", puede encontrar algunos buenos ejemplos de código haciendo una búsqueda rápida en Google. Es malo porque es código y eso representa una barrera para algunos probadores.

Entonces, ¿necesita ser un desarrollador para crear scripts de Selenium? La respuesta es no, pero algunas habilidades de desarrollo ayudan. Como mencioné anteriormente, muchos de los excelentes nuevas herramientas de prueba de IU tienen grabadoras que construirán scripts de Selenium, como Parasoft Selenic, SeleniumIDE y Katalon. Estas herramientas auxiliares darán a los usuarios que son nuevos en Selenium un impulso en la práctica y proporcionarán un término medio entre codificado y sin código. Por supuesto, debes tener en cuenta que ninguna herramienta de grabación y reproducción de UI es perfecta (por supuesto, también hay formas de resolver esos desafíos).

Conclusión

Selenium es la opción n. ° 1 para la automatización de la interfaz de usuario, la tecnología mejora cada día y existen muchas tecnologías que se basan en el soporte de Selenium y ayudan a resolver algunos de sus desafíos básicos. Las pruebas de la interfaz de usuario son fundamentales para validar la experiencia del cliente, y poder crear pruebas de selenio ricas y significativas, que se puedan mantener con el tiempo, ayudará a aumentar la cobertura general de pruebas en nuestra industria para crear experiencias mejores y más significativas en el futuro.

Por Chris Colosimo

Como Gerente de Producto en Parasoft, Chris elabora estrategias para el desarrollo de productos de las soluciones de pruebas funcionales de Parasoft. Su experiencia en la aceleración de SDLC a través de la automatización lo ha llevado a implementaciones empresariales importantes, como Capital One y CareFirst.

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