Vea cómo integrar fácilmente el análisis estático, las pruebas unitarias y otros métodos de prueba de software C y C++ en su canalización de CI/CD. Regístrese para la demostración >>

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

Por Igor Kirilenko

27 de septiembre de 2022

8  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.

El surgimiento 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 de desarrollo de software donde la adopción de IA puede avanzar es la prueba 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.

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.

Más versiones de software significa más pruebas de software

A medida que la cantidad de desarrolladores en todo el mundo continúa aumentando, se espera que lleguen más lanzamientos de software al mercado de software. Un informe reciente de Statista corrobora esta expectativa con una proyección que sugiere que se espera que la población global de desarrolladores aumente de 24.5 millones en 2020 a 28.7 millones de personas en 2024.

Esto presagia que seguiremos viendo más lanzamientos de software en los próximos años. Con este crecimiento esperado en el número de lanzamientos de software surge la necesidad de automatizar las pruebas de software.

La prueba de software es el proceso de someter una infraestructura de software a una serie de escenarios de prueba funcionales y no funcionales. Es un proceso de evaluación del software para asegurarse de que puede hacer lo que está diseñado para hacer de manera eficiente. Cuando los equipos prueban el 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 súper eficiente y sin problemas, es necesario incorporar IA.

IA en la automatización de pruebas de software

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.

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

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

AI y ML son áreas importantes de investigación y desarrollo en curso en Parasoft. Nuestros hallazgos continúan brindando nuevas y emocionantes formas de integrar estas tecnologías en nuestros productos. Aquí hay algunas formas en que los hemos aprovechado.

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

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 damas 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 solución de Parasoft a esto es aplicar 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.

Parasoft usa 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 hallazgos.

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.

Esto mejora en gran medida la experiencia del usuario al dirigir a los desarrolladores a las advertencias que tienen la mayor probabilidad de aplicarse a su proyecto. 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 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 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.

Vea cómo ahorrar tiempo al crear pruebas unitarias de Java y lograr una mayor cobertura de código aprovechando la IA.

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 Parasoftes Generador de pruebas de API inteligente. 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.

Aprenda a acelerar la creación de pruebas de API con inteligencia artificial.

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 aplicar patrones aprendidos a otras pruebas de 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 al cambio.

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 se verifique completamente antes de entrar en producción. El marco de trabajo de Selenium ha sido ampliamente adoptado para las pruebas de interfaz de usuario, pero los usuarios todavía luchan con los desafíos comunes de mantenimiento 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 autorreparación en tiempo de ejecución para abordar los problemas comunes de mantenimiento asociados con la ejecución de pruebas de IU.

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”.

Deje que las recomendaciones impulsadas por IA le digan qué está roto y cómo solucionarlo. Aproveche ML para reparar automáticamente la ejecución de pruebas de Selenium.

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

El análisis de impacto de prueba (TIA) evalúa el impacto de los cambios realizados en el código de producción. Ayuda 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 toda su base de código después de que se hayan realizado las modificaciones. Esto ahorra tiempo y costos mientras mantiene su proceso de desarrollo funcionando de manera eficiente.

Puede beneficiarse de la tecnología TIA durante la ejecución de pruebas manuales o puede aprovechar la integración de herramientas basadas en TIA con canalizaciones de CI/CD. Esto 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. Según la naturaleza de los productos y el tipo de pruebas que se ejecutarán, puede aprovechar la tecnología mejorada de IA de Parasoft para optimizar la ejecución de pruebas unitarias de Java, pruebas de interfaz de usuario web de Selenium y pruebas de API.

Conclusión

El crecimiento explosivo observado en el mercado de 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, existe la necesidad de automatización e inteligencia artificial en las pruebas de software. Aquí es donde entra Parasoft.

En Parasoft, proporcionamos soluciones de prueba de software basadas en 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.

¿Quiere obtener más información sobre cómo acelerar la creación de pruebas con IA?

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.