X
BLOG

¿Qué es la inteligencia artificial en las pruebas de software?

¿Qué es la inteligencia artificial en las pruebas de software? Tiempo de leer: 8 minutos

Una de las palabras de moda más recientes en la industria del desarrollo de software es la inteligencia artificial. ¿Pero qué significa realmente? ¿En qué se diferencia la IA en el contexto de la automatización de pruebas de software de su definición más amplia?

¿A qué nos referimos cuando hablamos de AI y su término hermano, máquina de aprendizaje? Pensé que aclararía nuestro uso para que esté claro cómo usamos la inteligencia artificial y el aprendizaje automático para avanzar en las pruebas de API de última generación.

Cómo implementar la inteligencia artificial en las pruebas de software (no es solo un rumor)

La inteligencia artificial es una de las palabras de moda más sobrecargadas en el mercado digital. La “IA” evoca imágenes de cosas como supercomputadoras todopoderosas, empeñadas en la destrucción humana; asistencia de control de voz en la forma de Alexa o Siri; oponentes de ajedrez informático; o coches autónomos.

Wikipedia define la investigación de IA como "… El estudio de los “agentes inteligentes”: cualquier dispositivo que perciba su entorno y realice acciones que maximicen sus posibilidades de lograr con éxito sus objetivos.”Pero eso es un poco demasiado abstracto. Me gusta pensar en la IA como la capacidad de un programa de computadora o máquina para pensar (razón de sí misma) y aprender (recopilar datos y modificar el comportamiento futuro de forma beneficiosa). Es en esta definición que comenzamos a ver algo más significativo en el contexto de lo que la IA significa para las herramientas y la tecnología de desarrollo de software.

También es importante darse cuenta de que el alcance de lo que se considera "IA" cambia con el tiempo. En un momento, por ejemplo, la gente consideraba que el reconocimiento óptico de caracteres (OCR) era lo último en inteligencia artificial. O las respuestas de preguntas y respuestas de Siri y Alexa, donde en un momento el impacto se consideró de vanguardia, ahora se dan por sentado en gran medida y no siempre se consideran un sistema de inteligencia artificial. Lo mismo ocurrirá con las herramientas de prueba de software. - Las innovaciones en la automatización de hoy serán esperadas a medida que evolucionen las nuevas capacidades. Pero por ahora, consideremos la IA en la automatización de pruebas de software en 2019.

Revolucione su práctica de pruebas de API aprovechando la inteligencia artificial

IA en la automatización de pruebas de software en 2020

El uso de la IA en el desarrollo de software aún está en pañales, y el nivel de autonomía es mucho más bajo que el visto en áreas de trabajo más evolucionadas como los sistemas de conducción autónoma o el control asistido por voz, aunque sigue avanzando en la dirección. de pruebas autónomas. La aplicación de la IA en las herramientas de prueba de software se centra en facilitar el ciclo de vida del desarrollo de software. Mediante la aplicación del razonamiento, la resolución de problemas y, en algunos casos, el aprendizaje automático, la IA se puede utilizar para ayudar a automatizar y reducir la cantidad de tareas mundanas y tediosas en el desarrollo y las pruebas.

"¿No prueban las herramientas de automatización para hacer esto ya?" usted podría preguntar.

Y la respuesta es, por supuesto, “¡Sí! ¡Ellas hacen!" … Pero tienen limitaciones.

Donde la IA brilla en el desarrollo de software es cuando se aplica para eliminar esas limitaciones, para permitir que las herramientas de automatización de pruebas de software proporcionen aún más valor a los desarrolladores y evaluadores. El valor de la IA proviene de reducir la participación directa del desarrollador o evaluador en las tareas más mundanas. (La inteligencia humana sigue siendo muy necesaria para aplicar la lógica empresarial, etc.)

Por ejemplo, considere que la mayoría (si no todas) las herramientas de automatización de pruebas ejecutan pruebas por usted y entregan resultados. La mayoría no sabe qué pruebas ejecutar, por lo que las ejecutan todas o algún conjunto predeterminado. Entonces, ¿qué pasa si un bot habilitado para IA puede revisar el estado actual del estado de la prueba, los cambios de código recientes, la cobertura del código y otras métricas, decidir qué pruebas ejecutar y luego ejecutarlas? La adopción de decisiones basadas en datos cambiantes es un ejemplo de aplicación de IA (y Parasoft lo hace, por cierto). El software puede reemplazar efectivamente al desarrollador / evaluador en el proceso de toma de decisiones. El beneficio de aplicar esto a una canalización de CI / CD es claro.

IA y aprendizaje automático

Entonces, ¿qué pasa con el aprendizaje automático? El aprendizaje automático puede aumentar la IA mediante la aplicación de algoritmos que permiten que la herramienta mejore automáticamente al recopilar la gran cantidad de datos producidos por las pruebas.

La investigación del aprendizaje automático es un subconjunto de la investigación general de IA, con un enfoque en la gestión de la toma de decisiones basada en datos observados previamente. Este es un aspecto importante de la IA en general, ya que la inteligencia requiere modificar la toma de decisiones a medida que mejora el aprendizaje. Sin embargo, en las herramientas de prueba de software, el aprendizaje automático no siempre es necesario - A veces, es mejor ajustar manualmente una herramienta habilitada para IA para que se adapte a la organización que utiliza la herramienta, y luego se puede aplicar la misma lógica y razonamiento cada vez, independientemente del resultado.

En otros casos, la recopilación de datos es clave para el proceso de toma de decisiones, y el aprendizaje automático puede ser extremadamente valioso, ya que requiere algunos datos inicialmente y luego mejora o se adapta a medida que se recopilan más datos. Por ejemplo, la cobertura del código, los resultados del análisis estático, los resultados de las pruebas u otras métricas de software, a lo largo del tiempo, pueden informar a la IA sobre el estado del proyecto de software.

Aprendizaje profundo

El aprendizaje automático tiene su propio subconjunto llamado aprendizaje profundo, que se basa en el procesamiento de una gran cantidad de datos de los que aprender. Dichos datos, en la mayoría de los casos, están representados por redes neuronales analíticas multicapa. - son modelos inspirados en la red de neuronas humanas, que ayudan a los ordenadores a adquirir nuevos conocimientos y a razonar de forma muy inteligente.

El aspecto clave del Deep Learning es la gran cantidad de información representada por las redes neuronales para impulsar el proceso de toma de decisiones. Tal cantidad de datos no siempre está disponible o no es aplicable en las pruebas de software; tal vez por eso todavía no vemos muchos casos de uso de Deep Learning en esas áreas. Un posible ejemplo sería "aprender" de decenas de millones de líneas de código para comprender diferentes tipos de violaciones de seguridad e implementar un motor de análisis estático basado en un modelo de aprendizaje profundo.

Ejemplos reales de inteligencia artificial y aprendizaje automático en pruebas de software

Esta es un área importante de investigación y desarrollo en Parasoft. Curiosamente, nuestras ofertas actuales son solo el comienzo, y nuestra investigación en curso en IA y ML continúa brindando nuevas formas de integrar estas tecnologías en nuestros productos. Aquí hay algunas formas en las que ya las hemos incluido.

Uso de inteligencia artificial para automatizar la generación y parametrización de pruebas unitarias

Este primer ejemplo está en Parasoft Jtest, nuestra solución de prueba de software para desarrolladores Java que incluye análisis estático, pruebas unitarias, cobertura y trazabilidad, etc. Al aplicar IA aquí, hemos lanzado la generación automática de casos de prueba, que ayuda a los desarrolladores a llenar los vacíos cuando comienzan con un arnés JUnit escaso.

El complemento IDE de Parasoft Jtest agrega una automatización útil a la práctica de pruebas unitarias con acciones fáciles de un clic para crear, escalar y mantener pruebas unitarias. Al usar Jtest habilitado para IA, los usuarios pueden lograr una mayor cobertura de código mientras reducen a la mitad el tiempo y el esfuerzo necesarios para construir un conjunto completo y significativo de casos de prueba de Junit.

Una forma de hacerlo es facilitando la creación de códigos auxiliares y simulacros para aislar el código bajo prueba. La IA subyacente permite a Jtest observar la unidad bajo prueba para determinar sus dependencias en otras clases, y cuando se crean instancias de estas dependencias, sugiere burlarse de ellas al usuario para crear pruebas más aisladas. La creación automática de las simulaciones y los stubs necesarios reduce el esfuerzo en una de las partes de la creación de pruebas que más tiempo requieren.

Parasoft Jtest también detecta automáticamente el código que no está cubierto por las suites de prueba existentes y atraviesa la ruta de control del código fuente para averiguar qué parámetros deben pasarse a un método bajo prueba y cómo se deben inicializar los subs / simulacros para alcanzar ese código. Al habilitar esta IA, Jtest puede generar automáticamente nuevas pruebas unitarias, aplicando parámetros modificados para aumentar la cobertura general del código de todo el proyecto.

Uso de inteligencia artificial y aprendizaje automático para automatizar la generación y el mantenimiento de pruebas de API

Otro buen ejemplo, agregando el aprendizaje automático a la mezcla, es Parasoft SOAtestes Generador de pruebas de API inteligente, que va más allá de las pruebas de grabación y reproducción, aprovechando la inteligencia artificial y el aprendizaje automático para convertir las pruebas de IU manuales en escenarios de prueba de API completos y automatizados.

El generador de pruebas de API inteligente utiliza el razonamiento para comprender los patrones y las relaciones en las diferentes llamadas a la API realizadas mientras se ejercita la interfaz de usuario. A partir de ese análisis, se construye una serie de llamadas a la API que representan las llamadas a la interfaz subyacente realizadas durante el flujo de la IU. Luego, aplica el aprendizaje automático al observar lo que puede sobre los diferentes recursos de la API y almacenarlos como una plantilla en una estructura de datos patentada. Esta estructura interna se actualiza examinando otros casos de prueba en la biblioteca del usuario para aprender diferentes tipos de comportamiento al ejercitar las API, por ejemplo, una afirmación o agregar un encabezado particular en el lugar correcto.

El objetivo de la IA aquí es crear pruebas más avanzadas (no solo repetir lo que estaba haciendo el usuario, como se obtiene con las pruebas simples de grabación y reproducción). La herramienta reconoce patrones dentro del tráfico, crea un modelo de datos completo de parámetros observados, genera pruebas API automatizadas y permite aplicar patrones aprendidos a otras pruebas API para mejorarlas y ayudar a los usuarios a crear escenarios de prueba automatizados más avanzados. Las pruebas de API automatizadas resultantes son más completas, reutilizables, escalables y resistentes a los cambios.

Uso del aprendizaje automático para autocurar la ejecución de pruebas de selenio

La validación automática de la capa de interfaz de usuario es otro componente crítico de su estrategia de prueba para garantizar que el producto esté completamente verificado antes de entrar en producción. El marco de Selenium ha sido ampliamente adoptado para las pruebas de IU como una clara elección del usuario, pero los usuarios todavía luchan con los desafíos comunes de las pruebas de Selenium de mantenibilidad y estabilidad. Aquí es donde las tecnologías de IA y, en particular, el aprendizaje automático, pueden ayudar, proporcionando autorreparación en tiempo de ejecución para abordar los problemas de mantenimiento comunes asociados con la ejecución de pruebas de IU.

Proporcionamos esta funcionalidad con Parasoft Selenic, que puede "aprender" sobre su estructura de datos interna durante la ejecución regular de las pruebas de Selenium. El motor de Selenic monitorea cada ejecución y captura información detallada sobre el contenido de la interfaz de usuario web de la aplicación bajo prueba. Extrae elementos DOM, sus atributos, localizadores, etc., y los correlaciona con acciones realizadas por pruebas impulsadas por la interfaz de usuario. Selenic emplea el enfoque de modelado de datos patentado de Parasoft, almacena esa información dentro de su motor de inteligencia artificial, y el modelo se actualiza continuamente, analizando la ejecución histórica de todas las pruebas para seguir volviéndose "más inteligente".

Este es un ahorro de tiempo crítico en los casos en que los elementos de la interfaz de usuario de las páginas web se mueven o modifican significativamente, lo que provoca que las pruebas fallen. Con Selenic, la heurística de IA utilizada por el motor puede "hacer coincidir" esos elementos modificados con los datos históricos representados por el modelo y generar automáticamente "localizadores inteligentes" que son resistentes a los cambios, para recuperar la ejecución de las pruebas de Selenium en tiempo de ejecución. La información sobre estos cambios se propaga automáticamente a través del modelo y la generación futura de nuevos localizadores se ajusta en función de esos cambios.

Uso de pruebas de software de inteligencia artificial para mejorar la adopción del análisis estático

Uno de los obstáculos para la adopción exitosa de herramientas de análisis estático es administrar una gran cantidad de advertencias y lidiar con falsos positivos (advertencias que no son errores reales) en los resultados. Los equipos de software que analizan una base de código existente o heredada luchan con los resultados iniciales que obtienen con el análisis estático y esta experiencia los apaga lo suficiente como para no esforzarse más. Parte de la razón para sentirse abrumado es la cantidad de estándares, reglas (verificadores), recomendaciones y métricas que son posibles con las herramientas modernas de análisis estático.

Los equipos de desarrollo de software tienen requisitos de calidad únicos y no hay recomendaciones únicas para verificadores o estándares de codificación. Cada equipo tiene su propia definición de falso positivo, que a menudo significa "no me importa" en lugar de "esto es técnicamente incorrecto". La solución de Parasoft a esto es aplicar la inteligencia artificial y el aprendizaje automático para priorizar los hallazgos reportados por el análisis estático para mejorar la experiencia del usuario y la adopción de tales herramientas.

Parasoft utiliza un método para clasificar rápidamente los hallazgos en la salida de una herramienta de análisis estático como algo que el equipo quiere ver o algo que el equipo quiere suprimir revisando una pequeña cantidad de hallazgos y construyendo un clasificador basado en los metadatos asociados con esos hallazgos. Este clasificador se basa en los resultados de las clasificaciones manuales anteriores de los hallazgos del análisis estático en el contexto de las supresiones históricas de advertencias irrelevantes y la priorización previa de hallazgos significativos para corregir dentro de la base de código.

Los resultados finales se clasifican de dos formas:

  • De interés para que el equipo investigue.
  • Elementos que se pueden suprimir.

Esto mejora enormemente la experiencia del usuario al dirigir a los desarrolladores a las advertencias que tienen la mayor probabilidad de aplicarse a su proyecto. Con estas innovaciones, las organizaciones pueden reducir inmediatamente el esfuerzo manual en su adopción y uso del análisis estático.

El futuro de la inteligencia artificial y el aprendizaje automático

Entonces, ¿qué viene después? Estamos en I + D activo en este espacio, y continuamos buscando más aplicaciones de inteligencia artificial y aprendizaje automático para aumentar nuestro conjunto de herramientas de prueba de software. Hay muchas rutas de investigación, pero el objetivo final es claro: para ayudar a los equipos a desarrollar y probar su código de manera más eficiente y efectiva, para crear software de mayor calidad a gran velocidad.

Acelere la creación de pruebas de API con inteligencia artificial.
Solicite una demostración ahora
Escrito por

Igor Kirilenko

Igor, vicepresidente de desarrollo de Parasoft, es responsable de la estrategia técnica, la arquitectura y el desarrollo de los productos Parasoft. Igor aporta más de 20 años de experiencia en el liderazgo de equipos de ingeniería, con especialización en establecer y promover las mejores prácticas ágiles en entornos de desarrollo de software.

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

Prueba Parasoft