“Es la aplicación del aprendizaje automático más alucinante que he visto nunca”.
Mike Krieger, cofundador de Instagram.
Las palabras de Mike Krieger no son una hipérbole. Aunque el ML es capaz de algunas cosas notables en términos de análisis de datos y conocimientos, GitHub Copilot es un cambio de juego total debido a la utilidad potencial que puede proporcionar a los desarrolladores de productos de todo el mundo.
Los copilotos de codificación y la IA generativa ayudan a los equipos a obtener enormes beneficios, como acelerar el ciclo de vida del desarrollo de software a velocidades hasta ahora inimaginables. Sin embargo, el impacto de la tecnología en la RPA y las pruebas de software son dos de las fronteras más apasionantes de esta increíble tecnología.
En este artículo, veremos cómo los copilotos de codificación y la IA Generativa han alterado los mundos de las pruebas de software y la RPA en la actualidad antes de explorar su impacto futuro en la tecnología.
Copilotos e IA generativa en
desarrollo de software: Un manual
La IA generativa y los copilotos de codificación son relativamente nuevos en el panorama del desarrollo de software. Antes de hablar de su impacto en el espacio, conviene conocer su trayectoria y su forma de trabajar.
1. Autocodificadores con IA
Los grandes modelos lingüísticos (LLM) han mejorado notablemente en los últimos años. A medida que el tamaño de los conjuntos de datos y la potencia de cálculo han aumentado exponencialmente, la calidad de los resultados también lo ha hecho.
Hay muchos sectores verticales que pueden beneficiarse de los LLM. Algunos de los más escritos incluyen la generación de texto, imágenes, vídeos y otras formas de medios. Sin embargo, aunque estos casos de uso son impresionantes, hay implicaciones para los desarrolladores que quizá sean mucho más interesantes.
Existen varios autocodificadores LLM en el mercado. Sin embargo, GitHub CoPilot es quizás el más conocido y el que más logros ha conseguido. Gran parte de la razón es que se forma en el repositorio GitHub. Tiene acceso a millones de ejemplos de código de fuente abierta, mejores prácticas, arquitectura de aplicaciones y mucho más de lo que aprender, lo que le permite ofrecer resultados versátiles y de alta calidad.
2. ¿Cómo funcionan los copilotos de codificación?
Una de las formas más sencillas de explicar cómo funcionan los copilotos de codificación es analizar el producto líder del sector, GitHub CoPilot. La aplicación se basa en el modelo ChatGPT-3 de OpenAi.
Al igual que ChatGPT y otros LLM similares, CoPilot se basa en miles de millones de parámetros. Durante el desarrollo de ChatGPT-3, OpenAI comenzó a construir un programa de codificación dedicado llamado OpenAI Codex. Microsoft compró el acceso exclusivo al producto.
Sin embargo, lo fundamental aquí es que Microsoft ya era propietaria de GitHub. Si eres programador, lo sabrás todo sobre GitHub. Básicamente, se trata de una plataforma web utilizada para el control de versiones y la colaboración en proyectos de desarrollo de software. Formaron el OpenAI Codex en la biblioteca de GitHub que contenía millones de líneas de código abierto y público.
CoPilot utiliza el aprendizaje automático para encontrar patrones y relaciones entre líneas de código. Al igual que ChatGPT, observa una palabra o línea y calcula la probabilidad de lo que debería venir a continuación basándose en un vasto repositorio de datos históricos.
El poder de los copilotos de IA reside en su capacidad para sugerir fragmentos de código a medida que los desarrolladores editan. Imagínatelo como un autocompletado sobrealimentado para la codificación. Cuando los programadores introducen una línea de código, el LLM compara el inicio de ese código con su enorme biblioteca de proyectos anteriores. A partir de ahí, sugiere líneas probabilísticas y líneas de código novedosas.
Los beneficios obvios aquí son que los desarrolladores pueden ahorrar una increíble cantidad de tiempo a través de este autocompletado. Aumenta la productividad y, en muchos casos, la precisión del código.
3. ¿Qué hay de la IA Generativa para la codificación y el desarrollo?
Como puede verse en la historia de CoPilot, la IA Generativa y los Copilotos tienen raíces similares. Ambas son tecnologías que utilizan la probabilidad estadística para hacer predicciones sobre lo que necesitan los usuarios basándose en información imputada.
Sin embargo, la gran diferencia entre el software de copilotaje y la IA generativa es que esta última se basa en instrucciones. En pocas palabras, significa que los usuarios introducen una serie de instrucciones escritas en la máquina y ésta produce contenidos. Como sabe cualquiera que haya utilizado ChatGPT o aplicaciones similares, esta salida puede venir en forma de texto, imágenes, vídeo o código.
Así pues, aunque los métodos que utilizan los codificadores para llegar a la codificación automatizada son diferentes, podemos englobarlos en un paraguas similar de codificación automatizada o generativa asistida por IA.
Evolución de las pruebas de software
Las pruebas de software responden y evolucionan constantemente. En el espacio de unas pocas décadas, ha cambiado y se ha transformado para satisfacer nuevas necesidades y utilizar los avances tecnológicos.
1. Pruebas manuales:
En los primeros tiempos de las pruebas de software se realizaban pruebas manuales. Este tipo de pruebas resultaba caro y llevaba mucho tiempo, porque exigía que los expertos en control de calidad revisaran el software con lupa desarrollando una serie de casos de prueba, ejecutando y registrando los resultados, programando correcciones y repitiendo el proceso.
Garantizar que estas pruebas cubrieran todos los escenarios y situaciones posibles era un reto importante, y si a ello se añadían el tiempo y los costes que implicaban, las pruebas manuales consumían muchos recursos. También era muy susceptible al error humano, que se veía amplificado por las limitadas opciones de distribución, lo que significaba que cualquier fallo no descubierto era difícil de parchear rápidamente.
2. Pruebas programadas:
Las pruebas con guiones supusieron un gran paso adelante para la comunidad de control de calidad. En lugar de repasar manualmente el código y los escenarios de prueba, los desarrolladores pudieron escribir programas capaces de probar el software automáticamente. Las grandes ventajas eran que las pruebas eran más eficaces y menos propensas al error humano. Sin embargo, conseguirlo exigía una planificación y codificación cualificadas, precisas y que requerían mucho tiempo para garantizar una cobertura completa.
3. Automatización de pruebas:
La automatización de pruebas fue la siguiente evolución de las pruebas. Herramientas como ZAPTEST ofrecían a los programadores todas las ventajas de las pruebas con secuencias de comandos, pero con una interfaz sin código. Una vez más, las principales ventajas son el ahorro de tiempo, las pruebas reutilizables y adaptables, las pruebas de interfaz de usuario y API, y las pruebas entre plataformas y dispositivos.
4. Pruebas basadas en datos:
Las pruebas basadas en datos fueron la solución al problema de probar software que procesaba diversos conjuntos de datos. Una vez más, se trata de una forma de automatización de pruebas, pero este método implica la creación de secuencias de comandos de prueba y su ejecución con conjuntos de datos asignados. Este tipo de pruebas permitía a los desarrolladores trabajar más rápido, aislar las pruebas y reducir el tiempo de repetición de los casos de prueba.
5. Pruebas de IA generativa:
Las pruebas de IA generativa son la última innovación en pruebas de software. Mediante el uso de LLM, los equipos de control de calidad pueden crear casos de prueba y datos de prueba que ayudan a acelerar el proceso de prueba. Estos casos de prueba son muy flexibles y editables, lo que ayuda a los desarrolladores a reutilizar y reutilizar las pruebas y aumentar enormemente el alcance de las pruebas.
Uso actual de copilotos y
IA generativa en pruebas de software y RPA
La IA generativa y los copilotos han tenido un gran impacto en las pruebas de software. Sin embargo, en lugar de sustituir directamente a los programadores, estas herramientas han ayudado a aumentar el número de probadores. En resumen, ayudan a los desarrolladores a ser más rápidos y eficaces y, en muchos casos, mejoran la calidad de las pruebas.
En
Encuesta a desarrolladores de Stack Overflow de 2023
ofrece algunas ideas sobre el uso actual de las herramientas de IA en la comunidad de desarrollo de software. Una de las partes más interesantes de la encuesta sugería que, si bien algo más de la mitad de los desarrolladores se mostraban interesados en las herramientas de IA para las pruebas de software, menos del 3% afirmaba confiar en ellas. Es más, sólo 1 de cada 4 indicó que actualmente utiliza herramientas de IA para las pruebas de software.
Lo interesante de estas estadísticas es que demuestran que el uso de herramientas de IA aún no se ha generalizado y que los primeros en adoptarlas aún pueden obtener ventaja.
1. Casos de uso de Copilot y Generative AI en pruebas de software y RPA.
Los copilotos y la IA generativa están afectando a todos los ámbitos del desarrollo de software. Estas son algunas de las formas en que la tecnología puede ayudar con las pruebas de software y RPA.
Análisis de requisitos
El análisis de requisitos es una parte fundamental del ciclo de vida del desarrollo de software. El proceso implica comprender los requisitos de las partes interesadas y las distintas características necesarias para crear un programa informático. La IA generativa puede ayudar a los equipos a idear nuevas ideas y perspectivas.
Planificación de pruebas
Una vez que se conocen bien los requisitos de las pruebas, los equipos de control de calidad tienen que desglosarlos en un calendario para garantizar una cobertura adecuada de las pruebas. Este tipo de trabajo requiere pericia y experiencia, pero Generative AI puede ayudar a los equipos mediante ejemplos y guías, además de hacer recomendaciones de herramientas concretas y mejores prácticas para sus requisitos específicos.
Creación de casos de prueba
Los equipos de control de calidad pueden utilizar los LLM para analizar el código, los requisitos de usuario y las especificaciones de software con el fin de comprender las relaciones subyacentes al sistema. Una vez que la IA conoce las entradas y salidas y los comportamientos esperados del software, puede empezar a crear casos de prueba que pondrán a prueba el software.
Las ventajas van más allá del ahorro de tiempo y la codificación manual. La creación de casos de prueba con IA también puede dar lugar a una cobertura más completa, ya que puede explorar áreas que los ingenieros de control de calidad podrían no tener en cuenta, lo que da lugar a compilaciones más fiables.
Encontrar y resolver errores
El aprendizaje automático permite a los profesionales del control de calidad reducir considerablemente el tiempo necesario para localizar y resolver errores. En las pruebas de software, muchos errores son fáciles de localizar. Sin embargo, en muchos casos, se trata de un proceso laborioso y lento. La IA generativa puede realizar comprobaciones en una fracción del tiempo de los trabajadores manuales y ayudar a poner de relieve incluso los errores más persistentes. Además, estas herramientas de IA también pueden resolver los errores que identifican, ahorrando un tiempo interminable a los equipos de control de calidad.
Pruebas de interfaz de usuario
Las herramientas de IA generativa pueden simular una serie de comportamientos e interacciones de los usuarios con los sistemas informáticos. Los métodos pueden dar a los equipos de desarrollo la seguridad de que su interfaz puede soportar una amplia gama de usos humano-ordenador. Es más, la IA Generativa también puede analizar datos de la interfaz de usuario y mapas de calor y hacer sugerencias sobre cómo mejorar la IU y hacerla más fácil de usar.
El futuro de los copilotos y la IA Generativa
en Pruebas de software y RPA
Aunque el uso actual de los copilotos y la IA Generativa en la automatización de software ya es apasionante, el futuro es aún más prometedor.
El futuro del copiloto y de la IA Generativa depende de las mejoras que puedan introducirse en los productos. Un estudio reciente de la Universidad de Purdue, titulado ¿Quién responde mejor? Un análisis en profundidad de las respuestas de ChatGPT y Stack Overflow a las preguntas sobre ingeniería de software subraya algunas de las limitaciones de los modelos de IA Generativa.
Los investigadores dieron a ChatGPT más de 500 preguntas de Stack Overflow. La herramienta de IA respondió más de la mitad de forma inexacta. Ahora bien, es importante señalar que uno de los problemas más significativos que observaron los investigadores fue que la IA fallaba con más frecuencia porque no entendía bien las preguntas. Este detalle subraya la importancia de la ingeniería rápida dentro de la IA Generativa.
Además, tanto Google como Amazon han realizado pruebas independientes este año para comprobar la calidad de las herramientas de IA Generativa en un entorno de preguntas de entrevista. En ambos casos, la herramienta consiguió responder a las preguntas del test lo suficientemente bien como para obtener el puesto, según informa
CNBC
y
Business Inside
respectivamente.
Así que está claro que estamos en un punto de esta tecnología en el que el potencial está ahí, pero hay que limar algunas pequeñas asperezas. La escala a la que han mejorado estas herramientas en los últimos años nos hace confiar en que se alcanzará el nivel requerido y probablemente antes de lo previsto.
Ahora podemos echar un vistazo a algunas de las áreas en las que estas tecnologías repercutirán en el futuro de las pruebas de desarrollo de software.
1. Hiperautomatización
La hiperautomatización describe un destino en la evolución de la empresa en el que se automatizarán todos los procesos que puedan automatizarse. Se trata de un enfoque holístico de la productividad que está muy interconectado.
En términos de desarrollo de software, no es difícil imaginar un sistema centralizado con una supervisión de los requisitos de los procesos empresariales. El sistema comprenderá e identificará las necesidades y eficiencias e identificará constantemente las áreas que necesitan ser mejoradas a través de la tecnología.
A medida que las empresas evolucionen, estos sistemas centralizados utilizarán la IA Generativa para crear aplicaciones que resuelvan los cuellos de botella y las ineficiencias de forma automática, o tal vez envíen determinados trabajos a los ingenieros para que los completen.
2. Diseño de arquitecturas de software
Con datos suficientes, las herramientas de IA podrían comprender las mejores prácticas de arquitectura de software y encontrar formas de mejorar estos diseños para lograr la máxima eficiencia. El aprendizaje automático consiste en encontrar patrones y relaciones que están más allá del alcance de la mente humana.
Si las herramientas de IA tienen suficiente conocimiento de una variedad de aplicaciones, podemos darles instrucciones para que adapten arquitecturas anteriores a nuevos requisitos, dando lugar a construcciones más eficientes o incluso a ideas que de otro modo no se tendrían en cuenta.
3. Modernización de los sistemas heredados
Aunque ningún software es perfecto, hay muchas herramientas que siguen haciendo un trabajo excelente y están tan profundamente arraigadas en la infraestructura de una empresa que son difíciles de sustituir. Adaptar estos sistemas puede ser una tarea ardua, sobre todo si se escribieron utilizando un código de software que ha pasado de moda.
En el futuro, las herramientas de IA generativa podrán convertir este código en el lenguaje de moda, lo que permitirá a los equipos conservar sus sistemas heredados y, en muchos casos, mejorarlos.
4. Potenciar el desarrollo de código reducido y sin código
Uno de los retos de la automatización de pruebas de software mediante herramientas de IA Generativa que identificamos anteriormente era una situación en la que el codificador carecía de los conocimientos y la experiencia necesarios para verificar el resultado.
Los copilotos de IA ayudarán a aumentar las herramientas de bajo código haciendo mejores sugerencias que conduzcan a aplicaciones robustas. Las sofisticadas herramientas de prueba permitirán a los operadores humanos dar rienda suelta a su creatividad, validando constantemente su trabajo y abriendo la puerta a profesionales no técnicos para que creen las aplicaciones que necesitan.
Ventajas de la IA generativa en las pruebas de software
El uso de la IA Generativa para las pruebas de software tiene muchas ventajas que la convierten en una opción atractiva para los equipos de desarrollo que quieren trabajar más rápido pero sin comprometer la calidad.
1. Acelerar el ciclo de vida del desarrollo de software
Los desarrolladores están sometidos a una presión constante para trabajar muchas horas y garantizar que el software y las nuevas funciones lleguen al mercado a tiempo. Aunque las metodologías Agile/DevOps han garantizado que el desarrollo sea más eficiente, todavía hay etapas individuales del desarrollo que pueden beneficiarse de una mayor racionalización.
Las herramientas de IA generativa permiten a los equipos de pruebas abordar diversas fases del SDLC, desde la generación de prototipos hasta las pruebas de la interfaz de usuario.
2. Detección exhaustiva de errores
Una de las aplicaciones más potentes de la IA en las pruebas de software procede de la capacidad de la tecnología para comparar grandes conjuntos de datos. Las herramientas de ML pueden analizar vastos conjuntos de datos (incluido el código) para construir un repositorio de información y modelos esperados.
Cuando los desarrolladores envían el código, pueden compararlo con estos modelos, que pueden poner de relieve situaciones inesperadas, dependencias y vulnerabilidades, lo que permite mejorar el código a lo largo de todo el proceso de desarrollo.
3. Mejora de la cobertura de las pruebas
Las herramientas de aprendizaje automático están diseñadas para analizar y comprender grandes conjuntos de datos. Cuando se aplica a las pruebas de software, permite a los equipos aumentar el alcance de las mismas. Las ventajas van más allá de la mera eliminación de la mano de obra humana de la ecuación para ahorrar dinero; la IA también conduce a un tipo de pruebas mucho más completo que permite mejorar la detección de errores en un conjunto complejo de escenarios.
4. 4. Reducción de costes
En comparación con la contratación de un equipo de ingenieros de control de calidad y su utilización para tareas de pruebas de software repetitivas y lentas, la IA generativa y la RPA son más rápidas y rentables.
A medida que el mundo del desarrollo de software se vuelve más competitivo, encontrar formas de ofrecer productos de calidad y duraderos dentro del presupuesto aumenta su importancia. Las herramientas de IA generativa y los copilotos pueden reducir la dependencia de los ingenieros y permitirles realizar un trabajo orientado al valor, lo que se traduce en construcciones menos hinchadas.
¿Suponen las herramientas de IA generativa el fin
de ingenieros de software humanos?
A pesar de sus evidentes ventajas, cualquier herramienta de automatización puede provocar en los trabajadores cierto grado de ansiedad sobre su futuro. Aunque se trata de una reacción normal, la velocidad y el alcance de la IA Generativa hacen que las preocupaciones sean mayores de lo habitual. Aunque estas herramientas tienen capacidad para automatizar muchos trabajos, no pueden realizar todas las tareas que realizan los ingenieros de software. Comprender las capacidades de la tecnología, así como sus limitaciones, es esencial para ingenieros y dirigentes.
Lo primero que hay que recordar es que las herramientas de automatización de pruebas basadas en IA existen en el mercado desde hace bastante tiempo. Sin embargo, la facilidad de uso de la IA Generativa la hace capaz de una mayor flexibilidad.
Una de las primeras cosas que debemos tener en cuenta es que la IA Generativa funciona mejor con resultados que puedan verificarse. Este es un punto clave. La naturaleza de la formación de los LLM implica que harán todo lo posible por darte una respuesta, incluso si en ocasiones eso significa “alucinar” con hechos, referencias y argumentos.
Ahora, si tiene suficientes conocimientos de codificación, podrá leer y verificar cualquier texto que Generative AI produzca y detectar posibles errores. Si eres un ciudadano programador que utiliza la IA Generativa en lugar de saber programar, no serás tan capaz de detectar estos errores.
Así que, visto desde esta perspectiva, los ingenieros cualificados seguirán siendo una parte fundamental del ecosistema de desarrollo de software. Se les seguirá exigiendo que realicen pruebas tanto en sentido práctico como de supervisión.
Otra limitación de la IA Generativa para las pruebas de software tiene que ver con las pruebas móviles. Por ejemplo, ChatGPT es una buena opción para probar la interfaz de usuario de un sitio web. Sin embargo, no tiene acceso a diferentes dispositivos móviles. Con tantos teléfonos y modelos diferentes en el mercado, se queda atrás con respecto al software de automatización de pruebas actual, como ZAPTEST. Este problema tampoco es un obstáculo menor. Más de
la mitad de todo el uso de internet procede del móvil
y esa cifra aumenta cada año.
Así pues, aunque la IA Generativa quitará muchas tareas a los desarrolladores, no dejará obsoletos a estos profesionales sin grandes cambios en la infraestructura de pruebas y la capacidad de verificar los resultados.
Reflexiones finales
Las pruebas de software y la RPA están en constante proceso de mejora. A medida que surgen nuevas tecnologías y métodos, ambas disciplinas absorben las mejores prácticas para ayudar a los equipos de control de calidad a realizar pruebas más rápidas y exhaustivas por una fracción del precio de las pruebas manuales.
Aunque mejorar el alcance de las pruebas y reducir los errores humanos y los costes son algunas de las ventajas más evidentes de las pruebas impulsadas por IA, también ayuda a los equipos a adoptar un enfoque de integración continua y canalizaciones de despliegue (CI/CD).
Con las expectativas de los consumidores y la competencia más altas que nunca, la IA Generativa ofrece a los equipos una forma de proporcionar pruebas rápidas y eficientes sin comprometer la calidad.