Fiabilidad

El papel de la IA generativa en las pruebas de software y control de calidad

Resumen

La IA generativa ha transformado las pruebas de software, automatizando tareas como la creación de casos de prueba, la mutación del código y la detección de errores. Libera a los evaluadores del trabajo manual y aumenta la productividad y la calidad. Sin embargo, sigue habiendo retos, lo que lleva a reflexionar sobre la evolución del papel de los evaluadores a la luz del rápido avance de la IA Generativa.

La introducción de la IA generativa en las pruebas de software ha marcado una diferencia significativa en el enfoque, la calidad y la productividad de las pruebas de software.

Antes de la IA generativa, las pruebas de software consistían en un trabajo manual que consumía tiempo, limitaba la productividad y no siempre producía el resultado óptimo.

Tomemos, por ejemplo, los casos de prueba que se escriben manualmente, dejando abierto el riesgo de escenarios no identificados: lo que se espera es lo que se obtiene.

La IA generativa ha automatizado múltiples acciones en las pruebas de software, como la generación de casos de prueba, la mutación de código (donde el código se manipula deliberadamente) y la detección automatizada de errores con rapidez y precisión, liberando a los probadores de software de tareas repetitivas para que se centren en tareas más críticas y creativas.

La IA generativa tiene ciertas limitaciones. Por ejemplo, ChatGPT no puede realizar pruebas en dispositivos móviles, ya que no tiene acceso a todos los dispositivos o emuladores en los que realizarlas.

La IA generativa ha evolucionado rápidamente y pronto podrá entrar en ámbitos inexplorados de las pruebas de software. Pero esto plantea una pregunta: ¿qué ocurre con los probadores de software? ¿Adónde irán a partir de ahora?

Las pruebas de software antes de la IA generativa

Antes de la IA generativa, las pruebas de software eran un proceso manual, que incluía:

  • Creación de casos de prueba
    Los probadores creaban casos de prueba basándose en su comprensión de los requisitos y escenarios. Los casos de prueba proporcionan los pasos para probar el software y el resultado esperado.
  • Ejecución manual
    Basándose en los casos de prueba, el probador de software probaba el software y comparaba el resultado con lo escrito en el caso de prueba.
  • Pruebas de regresión
    Los evaluadores escriben casos de prueba para las pruebas de regresión. Cuando se añade, actualiza o elimina una nueva función, las pruebas de regresión descubren los efectos del cambio en el software. Es útil para identificar cualquier problema debido al cambio.
  • Pruebas exploratorias
    Los probadores se ponen en la piel del público objetivo del software y lo exploran. El proceso permite detectar defectos desde la perspectiva de un cliente.
  • Pruebas de rendimiento
    El software se sometería a diferentes niveles de carga de usuarios para simular el rendimiento en situaciones como la carga de otros usuarios, el tiempo de carga de páginas o pantallas y el consumo de recursos.
  • Pruebas de seguridad
    El probador trataría de probar la seguridad del software por diversos medios, como introducir credenciales erróneas e intentar otras formas de acceder al software.

Las pruebas manuales son un proceso lento y propenso a errores.

Pruebas de software después de la IA Generativa

La IA generativa ha automatizado múltiples áreas de las pruebas de software y puede aumentar significativamente la velocidad y la productividad:

  • Generación de datos de prueba
    La disponibilidad de datos de prueba antes de la IA generativa era un problema, y se tardaba un tiempo en generar los datos. La IA generativa puede generar rápidamente datos de prueba de calidad para diversos escenarios, casos extremos y crear combinaciones de entrada que son difíciles o requieren mucho tiempo si se hacen manualmente.
  • Generación de casos de prueba
    La creación manual de casos de prueba puede pasar por alto escenarios, mientras que con la IA generativa puede introducir los detalles del software, como los requisitos, las especificaciones y el diseño, y proporcionar las indicaciones adecuadas. La IA generativa generará un conjunto completo de casos de prueba.
  • Pruebas de mutación
    Las pruebas de mutación consisten en probar un código mutado y encontrar la diferencia entre el código original y el mutado. Modificar manualmente el código para crear una versión mutada es un proceso difícil, pero la IA generativa puede crear múltiples versiones mutadas del código, y cada prueba es un paso para garantizar la calidad del código.
  • Revisión y análisis del código
    La revisión, el análisis y la refactorización del código son esfuerzos considerables pero necesarios, y los esfuerzos manuales requieren más mano de obra y tiempo. La IA generativa puede revisar el código, ofrecer sugerencias y ejemplos de código mejorado e incluso refactorizarlo.

Caso práctico

Este estudio de caso trata de cómo la IA generativa permitió realizar pruebas superiores en la aplicación Messenger de Meta.

Messenger es una aplicación popular que no necesita presentación. Sin embargo, las pruebas manuales suponían un reto.

Por ejemplo, los usuarios acceden a la aplicación de varias formas y en diferentes dispositivos, como móviles, tabletas y portátiles, lo que supone diversos escenarios de acceso y uso de la aplicación. Identificar tantos escenarios y crear casos de prueba manualmente es un gran reto, y los fallos repercuten en la calidad de la aplicación y la experiencia del usuario.

La IA generativa simuló las interacciones de los usuarios en tiempo real y capturó los datos. Esto permitió al software saber cómo piensan los usuarios, frente a lo que suponen los probadores de software al escribir los casos de prueba. Basándose en los datos de interacción del usuario, Generative AI generó casos y datos de prueba y automatizó las pruebas de la aplicación.

Las principales ventajas de implantar la IA generativa fueron una mejor comprensión del comportamiento del usuario, un proceso de pruebas superior y pruebas automatizadas. Meta observó una mejora de la productividad, una mayor satisfacción de los usuarios, menos errores y un mejor flujo de trabajo de pruebas.

Reforzó la idea de que las pruebas manuales pueden captar las intenciones del usuario hasta cierto punto, pero la IA generativa puede aprender constantemente del comportamiento y las peculiaridades del usuario.

Limitaciones de la IA generativa

A pesar de todas las ventajas que aporta y del entusiasmo que genera, la IA generativa sigue evolucionando en el nicho de las pruebas de software porque todavía tiene limitaciones.

Por ejemplo, ChatGPT tiene dificultades para probar aplicaciones en dispositivos móviles porque no tiene acceso a varios dispositivos móviles diferentes. No puede analizar las secuencias de comandos o los detalles de los distintos dispositivos móviles y escribir casos de prueba.

Por ejemplo, ChatGPT no puede cargar una aplicación en un dispositivo móvil Samsung concreto y probar la pantalla de inicio de sesión de la aplicación.

Dado que se trata de un área en evolución, aún no podemos asegurar que la IA generativa sea la respuesta a los problemas de las pruebas manuales de software.

Conclusión

La IA generativa es una fuerza potente y está aquí para quedarse. Funciona según un modelo de aprendizaje continuo y es razonable suponer que irá superando sus limitaciones una a una.

Pero, ¿sustituirá a los evaluadores manuales? La respuesta depende de múltiples factores, como si la IA generativa puede realizar pruebas en aplicaciones extremadamente complejas con grandes riesgos.

¿Confiarán las partes interesadas en la IA generativa lo suficiente como para probar aplicaciones extremadamente complejas?

La respuesta puede ser una mezcla de pruebas automatizadas y manuales, porque las aplicaciones complejas requieren análisis y delicadeza humanos.

En general, el futuro no está decidido, pero desde luego parece que la participación manual y las pruebas automatizadas aprenderán a coexistir.

Temas relacionados

Kaushik Pal
Editor

Kaushik es un arquitecto técnico y consultor de software con más de 23 años de experiencia en análisis de software, desarrollo, arquitectura, diseño, pruebas e industria de capacitación. Tiene interés en nuevas tecnologías y áreas de innovación, centrándose en arquitectura web, tecnologías web, Java/J2EE, código abierto, WebRTC, big data y tecnologías semánticas. Ha demostrado su experiencia en análisis de requisitos, diseño e implementación de arquitecturas, preparación de casos de uso técnico y desarrollo de software. Su experiencia ha abarcado diferentes sectores como seguros, banca, aerolíneas, envíos, gestión de documentos y desarrollo de productos, entre otros. Ha trabajado con una amplia…