Logotipo de Parasoft Buscar

¡Descubre GoogleTest, con certificación TÜV y la tecnología Agentic AI para pruebas de C/C++!
Obtenga los detalles »

Blog de Parasoft

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

Foto de rostro de Igor Kirilenko, director de desarrollo de productos de Parasoft
By Ígor Kirilenko • 17 de junio de 2024 • 10 minutos de lectura
17 de junio de 2024 | 10 minutos de lectura
By Ígor Kirilenko
Gráfico 2D que muestra un bucle infinito azul con pequeños destellos verdes en el fondo y una superposición del ícono de inteligencia artificial: 3 diamantes de color rosa brillante.

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) sigue transformando el panorama tecnológico. Su aplicación en diversas áreas del desarrollo de software continúa creciendo. Una de las áreas del desarrollo de software donde la adopción de la IA puede avanzar es la de 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 uno de los términos de moda más utilizados en el mercado digital. «IA» evoca imágenes de cosas como supercomputadoras todopoderosas empeñadas en la destrucción humana, asistencia por voz como Alexa o Siri, oponentes de ajedrez informáticos y coches autónomos.

Wikipedia define la investigación en IA como " ...el estudio de los "agentes inteligentes": cualquier dispositivo que percibe su entorno y realiza acciones que maximizan sus posibilidades de alcanzar sus objetivos con éxito ". Pero eso es demasiado abstracto.

Me gusta pensar en la IA como la capacidad de un programa informático o una máquina para pensar (razonar por 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á en evolución, pero el nivel de uso actual en las pruebas automatizadas de software es menor en comparación con áreas de trabajo más avanzadas, como los sistemas de conducción autónoma o el control asistido por voz, la traducción automática y la robótica.

La aplicación de la IA en las herramientas de prueba de software se centra en simplificar el ciclo de vida del desarrollo de software (SDLC). Mediante el razonamiento, la resolución de problemas y, en algunos casos, el aprendizaje automático, la IA puede utilizarse para automatizar y reducir las tareas rutinarias y tediosas del desarrollo y las pruebas.

Quizás te preguntes: "¿Las herramientas de automatización de pruebas ya hacen esto?". Claro que las herramientas de automatización de pruebas ya incorporan 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 aprendizaje automático desempeñan un papel fundamental en la plataforma de pruebas de calidad continua de Parasoft . Son áreas importantes de investigación y desarrollo constantes en Parasoft. Nuestros hallazgos siguen aportando formas nuevas e interesantes de integrar estas tecnologías en nuestra plataforma y optimizar la automatización de pruebas en cada etapa del ciclo de vida del desarrollo de software (SDLC). A continuación, presentamos algunos ejemplos de cómo las hemos aprovechado.

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

Uno de los principales obstáculos para la adopción exitosa de herramientas de análisis estático es la gestión de un gran número de advertencias y el manejo de falsos positivos (advertencias que no son errores reales) en los resultados. Los equipos de software que analizan código heredado o existente tienen dificultades con los resultados iniciales del análisis estático y esta experiencia los desanima lo suficiente como para no continuar con el proceso. Parte de la razón de esta sensación de agobio radica en la cantidad de estándares, reglas (verificadores), recomendaciones y métricas que ofrecen las herramientas de análisis estático modernas.

Los equipos de desarrollo de software tienen requisitos de calidad únicos. No existen recomendaciones universales para verificadores ni estándares de codificación. Cada equipo tiene su propia definición de falso positivo, que suele significar "no me importa" en lugar de "esto es técnicamente incorrecto". La Plataforma de Pruebas de Calidad Continuas de Parasoft incluye una solución centralizada de informes y análisis llamada DTP que aplica IA y aprendizaje automático para priorizar los hallazgos del análisis estático y mejorar la experiencia del usuario y la adopción de estas herramientas.

Parasoft DTP utiliza un método para clasificar rápidamente los resultados de una herramienta de análisis estático, ya sea como algo que el equipo desea ver o como algo que desea suprimir, revisando un pequeño número de resultados y construyendo un clasificador basado en los metadatos asociados a dichos resultados.

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 CVE. 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 CVE 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 críticos junto con un modelo avanzado basado en IA para asignar las infracciones a los desarrolladores que mejor se ajusten a sus habilidades y experiencia, aprendiendo de las infracciones que corrigieron en el pasado. Gracias a estas innovaciones, las organizaciones pueden reducir de inmediato el esfuerzo manual en la adopción y el 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 se encuentra en Parasoft Jtest , nuestra solución de pruebas de software para desarrolladores Java que incluye análisis estático, pruebas unitarias, cobertura y trazabilidad, entre otras funciones. Aplicando IA en este caso, lanzamos la generación automática de casos de prueba, que ayuda a los desarrolladores a completar las deficiencias al partir de un entorno JUnit incompleto.

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. Mediante el uso de Jtest habilitado para IA, los usuarios pueden lograr una mayor cobertura de código mientras reducen significativamente el tiempo y el esfuerzo necesarios para crear un conjunto completo y significativo de casos de prueba de Junit.

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, que incorpora el aprendizaje automático, es el Generador de Pruebas de API Inteligente de Parasoft SOAtest . Va más allá de las pruebas de grabación y reproducción, aprovechando la IA 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

La validación automática de la capa de interfaz de usuario es otro componente fundamental de la estrategia de pruebas para garantizar que el producto esté completamente verificado antes de su lanzamiento a producción. El framework Selenium se ha adoptado ampliamente para las pruebas de interfaz de usuario, pero los usuarios aún se enfrentan a desafíos comunes relacionados con la mantenibilidad y la estabilidad. Aquí es donde las tecnologías de IA, y en particular el aprendizaje automático, pueden ser de gran ayuda, ya que proporcionan autorreparación en tiempo de ejecución para abordar los problemas comunes de mantenibilidad asociados con la ejecución de pruebas de interfaz de usuario.

Ofrecemos esta funcionalidad con Parasoft Selenic, que puede aprender sobre la estructura interna de datos durante la ejecución regular de pruebas de Selenium. El motor Selenic monitoriza cada ejecución y captura información detallada sobre el contenido de la interfaz web de la aplicación bajo prueba. Extrae elementos DOM, sus atributos, localizadores, etc., y los correlaciona con las acciones realizadas por las pruebas basadas en la interfaz de usuario. Selenic emplea el enfoque de modelado de datos patentado de Parasoft, almacenando dicha información en su motor de IA. El modelo se actualiza continuamente, analizando el historial de ejecución de todas las pruebas para seguir volviéndose más inteligente.

Esto supone un ahorro de tiempo crucial cuando los elementos de la interfaz de usuario de las páginas web se mueven o modifican significativamente, lo que provoca fallos en las pruebas. Con Selenic, la heurística de IA del motor puede correlacionar esos elementos modificados con los datos históricos representados por el modelo y generar automáticamente localizadores inteligentes 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 ellos.

Además, Selenic puede autocorregir diferentes tipos de "condiciones de espera" para abordar inestabilidades asociadas con las características de rendimiento de los sistemas bajo prueba. También mide el tiempo de ejecución de cada caso de prueba en páginas web y lo compara con el promedio histórico de ejecuciones anteriores. Si la desviación supera un umbral determinado, se genera una alerta en el informe para notificar al usuario sobre cambios significativos.

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

Las herramientas de análisis de impacto de pruebas (TIA) evalúan el impacto de los cambios realizados en el código de producción. Ayudan a identificar los casos de prueba afectados por dichos cambios. La principal ventaja de TIA es que elimina la necesidad de ejecutar pruebas en todo el código base tras realizar modificaciones. Esto ahorra tiempo y costes, a la vez que mantiene la eficiencia del proceso de desarrollo.

Al integrar la tecnología TIA en los flujos de CI/CD, puede optimizar la ejecución de sus pruebas automatizadas y brindar retroalimentación más rápida a los desarrolladores sobre el impacto de los cambios en la calidad de su proyecto. Según la naturaleza de los productos y el tipo de pruebas que se ejecuten, puede aprovechar la tecnología de IA de Parasoft para optimizar la ejecución de pruebas unitarias de C#, .NET y Java , pruebas de interfaz de usuario web con Selenium , 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.

Consulta a un experto