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!

This talk has been presented at TestJS Summit 2023, check out the latest edition of this JavaScript Conference.

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
Cecilia Martinez, a technical account manager at Cypress, discusses network requests in Cypress and demonstrates commands like cydot request and SCI.INTERCEPT. She also explains dynamic matching and aliasing, network stubbing, and the pros and cons of using real server responses versus stubbing. The talk covers logging request responses, testing front-end and backend API, handling list length and DOM traversal, lazy loading, and provides resources for beginners to learn Cypress.
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.
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
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress is a powerful tool for end-to-end testing and API testing. It provides instant feedback on test errors and allows tests to be run inside the browser. Cypress enables testing at both the application and network layers, making it easier to reach different edge cases. With features like AppActions and component testing, Cypress allows for comprehensive testing of individual components and the entire application. Join the workshops to learn more about full circle testing with Cypress.
Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
This Talk introduces Test Effective Development, a new approach to testing that aims to make companies more cost-effective. The speaker shares their personal journey of improving code quality and reducing bugs through smarter testing strategies. They discuss the importance of finding a balance between testing confidence and efficiency and introduce the concepts of isolated and integrated testing. The speaker also suggests different testing strategies based on the size of the application and emphasizes the need to choose cost-effective testing approaches based on the specific project requirements.
Playwright Test Runner
TestJS Summit 2021TestJS Summit 2021
25 min
Playwright Test Runner
Top Content
The Playwright Test Runner is a cross-browser web testing framework that allows you to write tests using just a few lines of code. It supports features like parallel test execution, device emulation, and different reporters for customized output. Code-Gen is a new feature that generates code to interact with web pages. Playwright Tracing provides a powerful tool for debugging and analyzing test actions, with the ability to explore trace files using TraceViewer. Overall, Playwright Test offers installation, test authoring, debugging, and post-mortem debugging capabilities.

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.
Aprovechando LLMs para Construir Experiencias de IA Intuitivas con JavaScript
JSNation 2024JSNation 2024
108 min
Aprovechando LLMs para Construir Experiencias de IA Intuitivas con JavaScript
Featured Workshop
Roy Derks
Shivay Lamba
2 authors
Hoy en día, todos los desarrolladores están utilizando LLMs en diferentes formas y variantes, desde ChatGPT hasta asistentes de código como GitHub CoPilot. Siguiendo esto, muchos productos han introducido capacidades de IA integradas, y en este masterclass haremos que los LLMs sean comprensibles para los desarrolladores web. Y nos adentraremos en la codificación de tu propia aplicación impulsada por IA. No se necesita experiencia previa en trabajar con LLMs o aprendizaje automático. En su lugar, utilizaremos tecnologías web como JavaScript, React que ya conoces y amas, al mismo tiempo que aprendemos sobre algunas nuevas bibliotecas como OpenAI, Transformers.js
Masterclass: Qué son y cómo aprovechar los LLMs
React Summit 2024React Summit 2024
66 min
Masterclass: Qué son y cómo aprovechar los LLMs
Featured Workshop
Nathan Marrs
Haris Rozajac
2 authors
Únete a Nathan en esta sesión práctica donde primero aprenderás a alto nivel qué son los modelos de lenguaje grandes (LLMs) y cómo funcionan. Luego sumérgete en un ejercicio de codificación interactivo donde implementarás la funcionalidad de LLM en una aplicación de ejemplo básica. Durante este ejercicio, adquirirás habilidades clave para trabajar con LLMs en tus propias aplicaciones, como la ingeniería de indicaciones y la exposición a la API de OpenAI.
Después de esta sesión, tendrás una idea de qué son los LLMs y cómo se pueden utilizar prácticamente para mejorar tus propias aplicaciones.
Tabla de contenidos:- Demostración interactiva de la implementación de funciones básicas impulsadas por LLM en una aplicación de demostración- Discutir cómo decidir dónde aprovechar los LLMs en un producto- Lecciones aprendidas sobre la integración con OpenAI / descripción general de la API de OpenAI- Mejores prácticas para la ingeniería de indicaciones- Desafíos comunes específicos de React (gestión de estado :D / buenas prácticas de UX)
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