El Futuro es Hoy: Aprovechando la IA en las Pruebas de Software

Rate this content
Bookmark

En esta charla, discutiremos cómo aprovechar las prácticas de Machine Learning en las pruebas de software con varios ejemplos prácticos y un estudio de caso que utilicé en mi proyecto para hacer el Triaje de Bugs. ¡Vamos a abrazar el futuro juntos!

FAQ

La integración del machine learning en las pruebas de software implica incorporar técnicas de aprendizaje automático para mejorar y optimizar el proceso de pruebas, desde la generación de casos de prueba hasta la ejecución y mantenimiento de los mismos. Esto permite automatizar tareas repetitivas, mejorar la detección de errores y acelerar el ciclo de desarrollo.

El machine learning puede mejorar las actividades de aseguramiento de calidad al automatizar la generación y ejecución de casos de prueba, optimizar la identificación de errores y proporcionar predicciones precisas sobre el comportamiento del software. Esto ayuda a reducir la carga de trabajo manual y aumentar la eficiencia de las pruebas.

El machine learning ofrece beneficios en varias etapas del ciclo de vida de las pruebas de software, como la generación automática de casos de prueba basada en requisitos, la implementación de código de prueba utilizando NLP, el reconocimiento visual en pruebas de UI, y la optimización de mantenimiento mediante la refactorización automática de código y la gestión de fallos.

El machine learning puede ayudar a abordar desafíos como la complejidad de las aplicaciones modernas, la necesidad de pruebas rápidas y eficientes, y la gestión de recursos y presupuestos limitados. Proporciona soluciones que pueden adaptarse rápidamente y cubrir un amplio alcance de pruebas sin comprometer la calidad.

El machine learning puede asistir en el mantenimiento y refactorización del código de prueba al revisar automáticamente el código para identificar y notificar patrones problemáticos o anti-patrones, así como ayudar en la corrección automática de fallos, lo que acelera el proceso y mejora la calidad del código.

En el proyecto personal, se utilizó machine learning para clasificar casi 900 tickets de bugs según su severidad después de preprocesar y extraer características de los datos. Esto permitió una gestión más eficiente y automatizada de los bugs, mejorando la toma de decisiones en el triage de errores.

Mesut Durukal
Mesut Durukal
25 min
11 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla discute la integración del aprendizaje automático en las pruebas de software, explorando su uso en diferentes etapas del ciclo de vida de las pruebas. Destaca la importancia de los datos de entrenamiento y los patrones ocultos en el aprendizaje automático. La charla también cubre la generación de código relevante para la automatización de pruebas utilizando el aprendizaje automático, así como las capacidades de observación y detección de valores atípicos de los algoritmos de aprendizaje automático. Enfatiza el uso del aprendizaje automático en el mantenimiento, la gestión de bugs y la clasificación de bugs basada en niveles de gravedad. La charla concluye con los resultados de la clasificación y la gestión de bugs, incluyendo el uso de clustering.

1. Integrando el Aprendizaje Automático en las Pruebas de Software

Short description:

En esta sesión, quiero hablar sobre la integración del aprendizaje automático en nuestras actividades diarias de pruebas de software. Discutiremos la integración de las actividades de aprendizaje automático en diferentes etapas de las pruebas de software. Comenzaremos desde la primera etapa en el ciclo de vida, analizaremos los requisitos, diseñaremos casos de prueba, implementaremos código de prueba y discutiremos las actividades de mantenimiento. Necesitamos usar el aprendizaje automático para mejorar nuestras actividades debido a la complejidad de los sistemas que probamos, la necesidad de cubrir diferentes interfaces e integraciones, y los problemas de tiempo y recursos que enfrentamos. Las máquinas y los robots pueden ayudarnos, como ya lo hacen en nuestra vida diaria.

¡Hola a todos! Mi nombre es Mesut Turkal. Soy un ingeniero de aseguramiento de calidad de software, y en esta sesión, quiero hablar sobre la integración del machine learning en nuestras actividades diarias de pruebas de software. El machine learning es hoy en día un tema muy candente, todo el mundo habla de ello, todo el mundo intenta sacar ventaja para mejorar su eficiencia. Entonces, ¿qué pasa con las actividades de aseguramiento de calidad, verdad? También podemos mejorar nuestra eficiencia, quizás podemos reducir algunas tareas manuales, y podemos de alguna manera sacar provecho del uso del machine learning en nuestras actividades en diferentes etapas. Entonces, esto es lo que haremos. Discutiremos la integración, o el aprovechamiento de las actividades de machine learning en diferentes etapas de las pruebas de software. Comenzaremos desde la primera etapa en el ciclo de vida, que es incluso analizar los requisitos y diseñar algunos casos de prueba, y luego discutiremos cómo podemos implementar el código de prueba también, porque la automation de pruebas es muy importante, y finalmente discutiremos algunas actividades de mantenimiento con la ayuda de las actividades de machine learning. Entonces, esto es lo que vamos a hacer. Primero que nada, vamos a revisar el contexto y por qué necesitamos mejorar nuestras actividades con la ayuda del machine learning. Y en la segunda parte de la presentación, esta es probablemente la parte más importante en la que pasaremos por todas las etapas en el ciclo de vida de las pruebas de software, y finalmente en la última parte compartiré un ejemplo práctico donde intenté usar el machine learning en mi proyecto personal y explicaré lo que hice y compartiré algunos resultados. Así que comencemos con la primera parte, la parte de introducción y las necesidades o el contexto de uso del machine learning en las pruebas de software. Necesitamos usar el machine learning para mejorar o apoyar nuestras actividades porque tenemos varios desafíos. Las pruebas de software ya no son fáciles. Las aplicaciones, los sistemas que estamos probando son demasiado complejos, demasiado complicados. Tenemos varias interfaces o interacciones y las aplicaciones que estamos probando están hablando, comunicándose con diferentes aplicaciones en diferentes plataformas, ¿verdad? Así que tenemos que probar o cubrir diferentes interfaces o integraciones. Esto significa que tenemos un amplio alcance para probar y, por supuesto, tenemos una restricción de tiempo. El tiempo es precioso. Es muy valioso. Y si nuestros casos de prueba están ralentizando los pipelines, entonces después de algún tiempo no será aceptable, ¿verdad? Porque los desarrolladores o los gerentes de producto comenzarán a quejarse de los casos de prueba, de los casos de prueba que se ejecutan lentamente, porque queremos solucionar nuestros fallos o los problemas lo más pronto posible. Queremos porque esta es una de las mejores entregas, una de las dimensiones de calidad en el contexto de la calidad. Pero para apoyar una entrega rápida, tenemos que hacer frente al tiempo. Tenemos que adaptar rápidamente nuestras soluciones. Tenemos que cubrir rápidamente un gran alcance e integraciones. Así que tenemos restricciones de tiempo, alcance, recursos, por supuesto, el presupuesto es un problema de recursos, quiero decir, costos y problemas de presupuesto. Así que desde muchas dimensiones diferentes, tenemos varios desafíos. Así que parece un poco difícil y duro hacer frente a este desafío. Pero quizás podemos encontrar alguna ayuda. Podemos obtener ayuda de alguien. Y ¿podrían las máquinas o los robots ser alguien que pueda ayudarnos? En realidad, pueden, porque incluso en nuestras rutinas diarias, en nuestra vida diaria, podemos ver en varias situaciones diferentes, ya nos están ayudando. Incluso si estamos viendo en algunas redes sociales

2. Aprendizaje Automático en Pruebas de Software

Short description:

En esta parte, discutimos cómo funciona el aprendizaje automático y su principio de funcionamiento en las pruebas de software. Exploramos el uso de herramientas de aprendizaje automático, como los algoritmos de procesamiento de lenguaje natural, en las prácticas de pruebas de software. También destacamos la importancia de los datos de entrenamiento y cómo se revelan los patrones ocultos para generar un modelo para predecir futuras reacciones o resultados. Además, trazamos paralelismos entre el aprendizaje automático y el aprendizaje biológico, enfatizando la necesidad de aprendizaje y observación en las pruebas. Finalmente, examinamos el ciclo de vida de las pruebas de software y las etapas involucradas, desde el análisis de los requisitos hasta la ejecución de los casos de prueba y la realización de mantenimiento.

o leyendo algunos artículos, vemos que nos están recomendando. Incluso si leo un artículo, veo que podría estar interesado en algunos artículos similares. Y la mayoría de las veces, es muy preciso, ¿verdad? ¿Cómo funciona? ¿Cómo me conocen? ¿Qué tipo de alcance o contexto podría interesarme? Porque me observan, me conocen, ya saben previamente qué artículos visité, en qué contexto estaba interesado. Y de manera similar, la predicción sería, ¿en qué tipo de alcance similar podría estar interesado? Entonces, hay un patrón subyacente en mis acciones y cuando este patrón oculto se revela después de la observación, que se llama aprendizaje en machine learning, entonces, por supuesto, las acciones futuras serían predichas fácilmente. Entonces, este es el principio de funcionamiento del machine learning, ¿verdad? De manera similar, puede funcionar en nuestras actividades de testing de software también. Por ejemplo, cuando verifico qué tipo de herramientas están utilizando solo el machine learning, esas herramientas que están realizando testing performance, incluso esta consulta puedo hacerla con la ayuda del machine learning. Hoy en día, por supuesto, todos sabemos que hay varios algoritmos o protocolos de procesamiento de lenguaje natural con los que podemos comunicarnos. Entonces, después de enviar nuestras consultas, podemos encontrar varias respuestas precisas. Así que no solo los protocolos o algoritmos de NLP, sino muchos algoritmos que podemos usar en nuestras prácticas de testing de software y veremos cuán rápidos, cuán confiables están trabajando. Y una vez más, recordemos rápidamente cómo funcionan los algoritmos dimensionales. Por supuesto, los data de entrenamiento son muy importantes para predecir algunos resultados precisos porque si no nos aprenden muy bien entonces quizás los resultados que están generando podrían no ser tan precisos o los resultados esperados. Entonces, después de tener suficientes y precisos data consistentes, luego después de observar estos data los patrones ocultos se revelan y se genera un modelo, por lo que cada vez que llega un data próximo, este modelo puede generar qué, cómo o de qué manera reaccionará este data de entrada. El sistema react de qué manera. Esta reacción o el resultado pueden ser predichos por el modelo y este será nuestro resultado y cuando completemos nuestro modelo podemos evaluar el performance y si estamos convencidos con el performance o satisfechos con el performance del modelo, entonces podemos ir y simplemente desplegarlo en producción, pero de lo contrario, podemos intentar mejorar continuamente cambiando los parámetros, haciendo algunas actividades de ajuste fino, jugando con las opcionales o los parámetros del modelo. Entonces, se parece mucho a nuestro aprendizaje biológico porque intenté dar algunos ejemplos previamente en las diapositivas anteriores, como cómo aprendemos algunas cosas. Primero que nada, observamos, intentamos aprender cómo funciona todo el sistema y luego para las situaciones venideras intentamos predecir cuáles podrían ser las reacciones o los resultados relacionados. Por ejemplo, como tester humano, si me pides que pruebe tu sistema, mi respuesta sería probablemente que está bien si tengo recursos o ancho de banda, por supuesto, puedo probar tu sistema, pero primero que nada, por favor enséñame, por favor, déjame aprender tu sistema, incluso si tú mismo no me enseñas, lo aprenderé mediante algunas actividades exploratorias o aprendiendo los documentos, revisando los materiales, haré el aprendizaje, observaré, haré algunas acciones exploratorias, haré clic en los botones, tal vez navegaré a diferentes páginas y observaré, veré cómo el sistema react a mis acciones y luego, finalmente, después de completar mi aprendizaje, puedo adivinar cuáles pueden ser los resultados. Por ejemplo, cuando veo que las API están trabajando de manera segura, entonces probablemente puedo adivinar que si envío una solicitud con tokens o credenciales no autenticados, entonces probablemente tendré un código de respuesta 403. Esta es mi predicción, ¿verdad? Porque ya aprendí, ya observé que el sistema está trabajando de manera segura. Esto funcionará de la misma manera con las máquinas y veamos cómo funciona en nuestros ciclos de vida de testing de software o las etapas. Este es un ciclo de vida muy habitual que seguimos. Por supuesto, ya no está funcionando de manera secuencial o en cascada hoy en día. Está trabajando de manera iterativa, de manera ágil. Pero básicamente así es como funciona, incluso a través de las iteraciones. Comenzamos analizando los requisitos, entendiendo las características, y luego diseñamos algunos casos de prueba para cubrir esos requisitos o las características. Entonces, cuando diseñamos nuestros casos de prueba, tenemos que ejecutarlos. Y podemos ejecutar de manera manual o automatizada. Entonces, si estamos haciendo el testing automatizado, deberíamos el código de prueba. Esta es la implementación que es parte de la etapa de configuración del entorno. Después de la ejecución, la ejecución del caso de prueba es la siguiente después de la configuración del entorno. Y finalmente,

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Ya sea que estés probando tu UI o API, Cypress te proporciona todas las herramientas necesarias para trabajar y gestionar solicitudes de red. Esta tarea de nivel intermedio demuestra cómo usar los comandos cy.request y cy.intercept para ejecutar, espiar y simular solicitudes de red mientras pruebas tu aplicación en el navegador. Aprende cómo funcionan los comandos, así como los casos de uso para cada uno, incluyendo las mejores prácticas para probar y simular tus solicitudes de red.
Testing Pyramid Makes Little Sense, What We Can Use Instead
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
Gleb Bahmutov
Roman Sandler
2 authors
The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress ha tomado al mundo por sorpresa al traer una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones de frontend. Pero las pruebas de extremo a extremo son solo una pequeña parte de los esfuerzos de prueba. ¿Qué pasa con tu API? ¿Qué pasa con tus componentes? Bueno, en mi charla me gustaría mostrarte cómo podemos comenzar con pruebas de extremo a extremo, profundizar con pruebas de componentes y luego subir a probar nuestra API, circ
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
En esta charla, construiremos nuestro propio Jarvis utilizando Web APIs y langchain. Habrá codificación en vivo.
Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
Los desarrolladores quieren dormir tranquilos sabiendo que no rompieron la producción. Las empresas quieren ser eficientes para satisfacer las necesidades de sus clientes más rápido y obtener una ventaja competitiva antes. TODOS queremos ser coste efectivos... o debería decir... ¡PRUEBA EFECTIVA!¿Pero cómo hacemos eso?¿Nos sirve bien la terminología de "unidad" e "integración"?¿O es hora de un cambio? ¿Cuándo deberíamos usar cada estrategia para maximizar nuestra "efectividad de prueba"?¡En esta charla te mostraré una nueva forma de pensar sobre las pruebas coste efectivas con nuevas estrategias y nuevos términos de prueba!¡Es hora de ir MÁS PROFUNDO!
Playwright Test Runner
TestJS Summit 2021TestJS Summit 2021
25 min
Playwright Test Runner
Top Content

Workshops on related topic

Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Cómo empezar con Cypress
TestJS Summit 2022TestJS Summit 2022
146 min
Cómo empezar con Cypress
Featured WorkshopFree
Filip Hric
Filip Hric
La web ha evolucionado. Finalmente, también lo ha hecho el testing. Cypress es una herramienta de testing moderna que responde a las necesidades de testing de las aplicaciones web modernas. Ha ganado mucha popularidad en los últimos años, obteniendo reconocimiento a nivel mundial. Si has estado esperando aprender Cypress, ¡no esperes más! Filip Hric te guiará a través de los primeros pasos sobre cómo empezar a usar Cypress y configurar tu propio proyecto. La buena noticia es que aprender Cypress es increíblemente fácil. Escribirás tu primer test en poco tiempo y luego descubrirás cómo escribir un test de extremo a extremo completo para una aplicación web moderna. Aprenderás conceptos fundamentales como la capacidad de reintentar. Descubre cómo trabajar e interactuar con tu aplicación y aprende cómo combinar pruebas de API y de UI. A lo largo de todo este masterclass, escribiremos código y realizaremos ejercicios prácticos. Saldrás con una experiencia práctica que podrás aplicar a tu propio proyecto.
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Masterclass de Pruebas de API con Postman
TestJS Summit 2023TestJS Summit 2023
48 min
Masterclass de Pruebas de API con Postman
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
En el panorama siempre en evolución del desarrollo de software, garantizar la fiabilidad y funcionalidad de las API se ha vuelto primordial. "Pruebas de API con Postman" es una masterclass completa diseñada para equipar a los participantes con los conocimientos y habilidades necesarios para sobresalir en las pruebas de API utilizando Postman, una herramienta poderosa ampliamente adoptada por profesionales en el campo. Esta masterclass profundiza en los fundamentos de las pruebas de API, avanza a técnicas de prueba avanzadas y explora la automatización, las pruebas de rendimiento y el soporte multiprotocolo, proporcionando a los asistentes una comprensión holística de las pruebas de API con Postman.
Únete a nosotros para esta masterclass para desbloquear todo el potencial de Postman para las pruebas de API, agilizar tus procesos de prueba y mejorar la calidad y fiabilidad de tu software. Ya seas un principiante o un probador experimentado, esta masterclass te equipará con las habilidades necesarias para sobresalir en las pruebas de API con Postman.
Trabajando con OpenAI y la Ingeniería de Prompts para Desarrolladores de React
React Advanced Conference 2023React Advanced Conference 2023
98 min
Trabajando con OpenAI y la Ingeniería de Prompts para Desarrolladores de React
Top Content
Workshop
Richard Moss
Richard Moss
En esta masterclass daremos un recorrido por la IA aplicada desde la perspectiva de los desarrolladores de front end, enfocándonos en las mejores prácticas emergentes cuando se trata de trabajar con LLMs para construir grandes productos. Esta masterclass se basa en los aprendizajes obtenidos al trabajar con la API de OpenAI desde su debut en noviembre pasado para construir un MVP funcional que se convirtió en PowerModeAI (una herramienta de creación de ideas y presentaciones orientada al cliente).
En la masterclass habrá una mezcla de presentación y ejercicios prácticos para cubrir temas que incluyen:
- Fundamentos de GPT- Trampas de los LLMs- Mejores prácticas y técnicas de ingeniería de prompts- Uso efectivo del playground- Instalación y configuración del SDK de OpenAI- Enfoques para trabajar con la API y la gestión de prompts- Implementación de la API para construir una aplicación orientada al cliente potenciada por IA- Ajuste fino y embeddings- Mejores prácticas emergentes en LLMOps