Seminario web destacado: Presentación de la prueba CT de Parasoft C/C++ para pruebas continuas y excelencia en el cumplimiento | Vea ahora

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

Foto de cabeza de Igor Kirilenko, director de productos de Parasoft
Junio 17, 2024
10 min leer

Mucho se ha dicho sobre la inteligencia artificial y cómo ha transformado la forma en que hacemos las cosas. Cuando se trata de pruebas de software, ¿cuál es el lugar de la IA? Esta publicación destaca cómo la IA ayuda a lograr pruebas de software sólidas.

La aparición de la inteligencia artificial (IA) continúa transformando el panorama tecnológico. Su aplicación en varias facetas del desarrollo de software continúa creciendo. Una de las áreas del desarrollo de software donde adopción de IA lo que podemos avanzar son las pruebas de software.

Las pruebas de software son cruciales para garantizar el lanzamiento de productos de software que cumplan tanto con los estándares de cumplimiento como con las demandas de calidad de los usuarios. Sin embargo, con muchas permutaciones en torno al uso de la inteligencia artificial, profundizaremos en descubrir qué es la IA en las pruebas de software.

  • ¿Cómo IA en el contexto de la automatización de pruebas de software difieren de su definición más amplia?
  • ¿A qué nos referimos cuando hablamos de IA y su término hermano, aprendizaje automático?
  • ¿Cuáles son los beneficios de utilizar la IA y el aprendizaje automático para avanzar en las pruebas de API de última generación?

Vamos a averiguar.

¿Qué es la IA y cómo está cambiando la dinámica de las pruebas de software?

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 el camino de Alexa o Siri, oponentes de ajedrez de computadora y autos sin conductor.

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.

IA en la automatización de pruebas de software

La prueba de software es el proceso de evaluar el software para garantizar que pueda hacer aquello para lo que fue diseñado de manera eficiente. Somete las infraestructuras de software a una serie de escenarios de prueba funcionales y no funcionales. Cuando los equipos prueban software, pueden descubrir y resolver defectos de tiempo de ejecución, problemas de escalabilidad, vulnerabilidades de seguridad y más.

El proceso de prueba de software suele ser riguroso, de ahí la necesidad de automatización. Sin embargo, para que la automatización del software sea supereficiente y fluida, es necesario incorporar IA.

El uso de la IA en el desarrollo de software aún está evolucionando, pero el nivel en el que se usa actualmente en las pruebas automatizadas de software es más bajo en comparación con áreas de trabajo más avanzadas, como los sistemas autónomos o el control asistido por voz, la traducción automática y la robótica.

La aplicación de IA en herramientas de prueba de software se centra en facilitar el ciclo de vida del desarrollo de software (SDLC). 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.

Quizás se pregunte: "¿No hacen esto las herramientas de automatización de pruebas?" Por supuesto, las herramientas de automatización de pruebas ya cuentan con IA, pero tienen limitaciones.

Donde la IA brilla en el desarrollo de software es cuando se aplica para eliminar esas limitaciones, lo que permite que las herramientas de automatización de pruebas de software brinden 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. Todavía tenemos una gran necesidad de inteligencia humana para aplicar la lógica comercial, el pensamiento estratégico, las ideas creativas y similares.

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 ejecuta todas o un conjunto predeterminado.

¿Qué pasaría si un bot habilitado para IA pudiera revisar el estado actual de los estados de prueba, los cambios de código recientes, la cobertura de código y otras métricas, y luego decidir qué pruebas ejecutar y ejecutarlas por usted?

Incorporar la toma de decisiones basada en datos cambiantes es un ejemplo de aplicación de IA. ¡Buenas noticias! Parasoft maneja las pruebas de software automatizadas en este nivel.

Cómo el aprendizaje automático mejora la IA

Entonces, ¿qué pasa con el aprendizaje automático?

El aprendizaje automático (ML) puede aumentar la IA mediante la aplicación de algoritmos que permiten que la herramienta mejore automáticamente mediante la recopilación de grandes cantidades de datos producidos por las pruebas.

La investigación de ML 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, una herramienta habilitada para IA se ajusta mejor manualmente para adaptarse a la organización que la usa, 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.

Ejemplos reales de IA y ML en pruebas de software

La IA y el ML desempeñan papeles clave en Plataforma de prueba continua de calidad de Parasoft. Son áreas importantes de investigación y desarrollo continuos en Parasoft. Nuestros hallazgos continúan brindando formas nuevas y emocionantes de integrar estas tecnologías en nuestra plataforma y optimizar la automatización de pruebas en cada paso del SDLC. A continuación se muestran algunas formas en las que los hemos aprovechado.

Uso de IA para mejorar la adopción del análisis estático en las pruebas de software

Uno de los obstáculos para el adopción exitosa de herramientas de análisis estático está gestionando una gran cantidad de advertencias y tratando con falsos positivos (advertencias que no son errores reales) en los resultados. Los equipos de software que analizan una base de código heredada o existente luchan con los resultados iniciales que obtienen con el análisis estático y esta experiencia los desanima lo suficiente como para no realizar más esfuerzos. Parte de la razón de estar 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. No existen recomendaciones únicas para las fichas o los 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 plataforma de prueba continua de calidad de Parasoft incluye una solución centralizada de informes y análisis llamada DTP que aplica inteligencia artificial y aprendizaje automático para priorizar los hallazgos informados por el análisis estático para mejorar la experiencia del usuario y la adopción de dichas herramientas.

DTP de Parasoft utiliza un método para clasificar rápidamente los hallazgos en el resultado 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 recomendaciones.

Este clasificador se basa en los resultados de clasificaciones anteriores de hallazgos de análisis estáticos en el contexto de supresiones históricas de advertencias irrelevantes y 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.

Este proceso de priorización mejora enormemente la experiencia del usuario al dirigir a los desarrolladores a las advertencias que tienen mayor probabilidad de ser un defecto real dentro de su proyecto.

Los equipos de desarrollo pueden integrar opcionalmente Parasoft DTP con OpenAI o proveedores de Azure OpenAI para optimizar aún más la clasificación de los resultados del análisis estático para aplicaciones Java con análisis de coincidencias CVS. DTP analiza la infracción del análisis estático y cuantifica la similitud entre el código fuente del método que contiene la infracción y el código fuente con vulnerabilidades de seguridad conocidas. Los equipos de desarrollo pueden utilizar el análisis de coincidencias CVS al evaluar qué infracciones priorizar para que no se pasen por alto problemas de seguridad críticos.

También implementamos un motor de detección de puntos de acceso junto con un modelo avanzado basado en IA para asignar infracciones a los desarrolladores que coincidan con sus mejores habilidades y experiencia, aprendiendo de las infracciones que solucionaron en el pasado. Con estas innovaciones, las organizaciones pueden reducir inmediatamente el esfuerzo manual en su adopción y uso del análisis estático.

Uso de IA generativa para corregir infracciones del análisis estático más rápido

Parasoft incorpora IA generativa en su plataforma de prueba continua de calidad integrando sus soluciones de análisis estático C#, .NET y Java con los proveedores OpenAI y Azure OpenAI. La integración opcional permite a los equipos de desarrollo corregir más fácil y rápidamente los hallazgos del análisis estático a través de recomendaciones de corrección generadas por IA en el IDE.

Las correcciones de código de IA generativa para los hallazgos del análisis estático son particularmente útiles para nuevos proyectos que implementan análisis estático que tienen requisitos de cumplimiento de código para cumplir con estándares de seguridad o específicos de la industria. Es posible que los equipos nuevos en el análisis estático no estén técnicamente familiarizados con las pautas o reglas asociadas con esos estándares. Si la regla o infracción no se comprende correctamente, la productividad del desarrollo puede verse afectada, ya que los desarrolladores deben dedicar su tiempo y esfuerzos a investigar la infracción e implementar una corrección del código. Al integrar IA generativa para crear rápidamente correcciones de código, los desarrolladores pueden remediar rápidamente las infracciones. Como resultado, tienen más tiempo para centrarse en el desarrollo de nuevo código y abordar otras infracciones para elevar la calidad general del código, la seguridad y la confiabilidad del software.

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

Nuestra solución de productividad para desarrolladores de Java, Jtest, incluye análisis estático automatizado, pruebas unitarias, análisis de cobertura de código y trazabilidad. Emplea la propia IA patentada de Parasoft y las integraciones opcionales con los proveedores OpenAI y Azure OpenAI para agilizar la creación de pruebas JUnit e impulsar la cobertura del código.

Los ingenieros pueden acelerar la creación de pruebas unitarias aprovechando el complemento Eclipse o IntelliJ IDE para generar nuevas pruebas con el asistente de pruebas unitarias (UTA) mejorado con IA de Jtest. Los equipos pueden crear conjuntos de pruebas unitarias eficaces analizando los niveles existentes de cobertura de código a nivel de método, clase, paquete o proyecto, y aprovechar la IA para generar de forma masiva un conjunto de pruebas unitarias dirigidas a líneas de código descubiertas. Durante la creación de pruebas, nuestra solución Java genera automáticamente simulacros y afirmaciones, lo que proporciona a los equipos un conjunto de casos de prueba inteligentes y eficaces para ejecutar pruebas de regresión.

A medida que se desarrolla un nuevo código, se deben crear pruebas unitarias adicionales para validar la nueva funcionalidad. La UTA de Jtest generará un nuevo caso de prueba para cubrir la línea de código seleccionada por el usuario y luego proporcionará recomendaciones sobre cómo mejorar el caso de prueba. Los equipos pueden crear y simular dependencias fácil y rápidamente, agregar aserciones, parametrizar casos de prueba y clonar o mutar casos de prueba existentes para impulsar niveles más altos de cobertura de código.

La integración opcional con OpenAI y los proveedores de Azure OpenAI brinda a los desarrolladores la capacidad de personalizar, ampliar o refactorizar fácilmente pruebas unitarias basadas en indicaciones en lenguaje natural que describen los requisitos específicos del desarrollador. La integración de Jtest con OpenAI analizará el código y la prueba unitaria existente junto con los requisitos ingresados ​​y refactorizará el caso de prueba en función de esas especificaciones. Esto proporciona a los desarrolladores una gran flexibilidad para personalizar los casos de prueba de cualquier forma que requiera su aplicación y acelera el proceso de creación de conjuntos de pruebas eficaces y valiosos.

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

Este primer ejemplo está en Prueba J de Parasoft, nuestra solución de pruebas de software para desarrolladores de Java que incluye análisis estático, pruebas unitarias, cobertura y trazabilidad, etc. Aplicando AI aquí, lanzamos la generación automática de casos de prueba, que ayuda a los desarrolladores a llenar los vacíos cuando comienzan desde 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 sencillas con un solo clic para crear, escalar y mantener pruebas unitarias. Al utilizar Jtest habilitado para IA, los usuarios pueden lograr una mayor cobertura de código y, al mismo tiempo, significativamente

Una forma de hacerlo es facilitando la creación de stubs 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. 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 los simulacros y stubs necesarios reduce el esfuerzo en una de las partes de la creación de pruebas que consume más tiempo.

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 IA y ML para automatizar la generación y el mantenimiento de pruebas de API

Otro buen ejemplo, agregando el aprendizaje automático a la mezcla, es Prueba SOA de ParasoftGenerador inteligente de pruebas de API. Va más allá de las pruebas de grabación y reproducción, ya que aprovecha la inteligencia artificial y el aprendizaje automático para convertir las pruebas de interfaz de usuario en escenarios de prueba de API completos y automatizados.

El Generador de prueba 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 interfaz de usuario.

Luego aplica el aprendizaje automático observando lo que puede sobre los diferentes recursos de la API y almacenándolos como una plantilla en una estructura de datos propietaria. 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. Así es como funciona Smart API Test Generator:

  1. Reconoce patrones dentro del tráfico.
  2. Crea un modelo de datos completo de los parámetros observados.
  3. Genera y permite pruebas de API automatizadas aplicando patrones aprendidos de otras pruebas de API para 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 al cambio.

Uso de IA generativa para la creación de pruebas de escenarios API

Parasoft SOAtest también se puede integrar con proveedores OpenAI o Azure OpenAI, lo que permite el uso de tecnologías de IA generativa para agilizar la creación de pruebas de escenarios API. Los evaluadores pueden ingresar un archivo de definición de servicio en SOAtest y proporcionar un mensaje en lenguaje natural que describa los requisitos específicos y la lógica empresarial necesarios. Luego, la IA analiza el archivo de definición del servicio y genera una serie de casos de prueba de escenarios de API asignados al caso de uso descrito en el mensaje.

Este uso de IA generativa en las pruebas de API permite a los equipos de control de calidad aumentar la minuciosidad de sus esfuerzos de prueba, ya que permite a los evaluadores generar escenarios de prueba avanzados de forma automática y sin código.

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

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 selenio se ha adoptado ampliamente para las pruebas de UI, pero los usuarios aún luchan con los desafíos comunes de mantenibilidad y estabilidad de las pruebas de Selenium. Aquí es donde las tecnologías de IA y, en particular, el aprendizaje automático, pueden ayudar, proporcionando autocuración en tiempo de ejecución para abordar los problemas comunes de mantenimiento asociados con la ejecución de pruebas de UI.

Brindamos 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 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 y similares, y los correlaciona con acciones realizadas por pruebas basadas en UI. Selenic emplea el enfoque de modelado de datos patentado de Parasoft, almacenando esa información dentro de su motor de IA. El modelo se actualiza continuamente, analizando la ejecución histórica de todas las pruebas para seguir siendo “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 hace que las pruebas fallen. Con Selenic, la heurística de IA utilizada por el motor puede "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.

Además de esto, Selenic puede reparar automáticamente diferentes tipos de "condiciones de espera" que abordan las inestabilidades asociadas con las características de rendimiento de los sistemas bajo prueba. También mide el tiempo asociado con la ejecución de cada caso de prueba en páginas web y lo compara con el promedio histórico capturado de las ejecuciones anteriores. En los casos en que la desviación supera un cierto umbral, se marca una alerta dentro del informe para notificar al usuario sobre cambios significativos.

Optimice la ejecución de pruebas con análisis de impacto de pruebas

Herramientas de análisis de impacto de pruebas (TIA) evaluar el impacto de los cambios realizados en el código de producción. Ayudan a revelar casos de prueba afectados por cambios de código. El principal beneficio de TIA es que elimina la necesidad de ejecutar pruebas en todo el código base después de realizar las modificaciones. Esto ahorra tiempo y costos mientras mantiene su proceso de desarrollo funcionando de manera eficiente.

Al integrar la tecnología TIA en los canales de CI/CD, puede optimizar la ejecución de sus pruebas automatizadas y proporcionar comentarios más rápidos a los desarrolladores sobre el impacto de los cambios en la calidad de su proyecto. Dependiendo de la naturaleza de los productos y el tipo de pruebas que se ejecutarán, puede aprovechar la tecnología mejorada con IA de Parasoft para optimizar la ejecución de Pruebas unitarias de C#, .NET y Java, Pruebas de interfaz de usuario web de selenio, Pruebas de API, o pruebas ejecutadas en frameworks de terceros.

Conclusión

El crecimiento explosivo observado en el mercado del software sugiere que se seguirá lanzando más software para resolver problemas en nuestro negocio diario. Sin embargo, para que el software funcione de manera eficiente y llegue al mercado lo más rápido posible, es necesaria la automatización y la inteligencia artificial en las pruebas de software. Aquí es donde entra en juego la plataforma de prueba continua de calidad de Parasoft para proporcionar soluciones de prueba de software impulsadas por inteligencia artificial y aprendizaje automático que integran la calidad en el proceso de desarrollo de software para prevenir, detectar y remediar defectos en las primeras etapas del SDLC.

Obtenga más información sobre cómo acelerar la creación de pruebas con IA.