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

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

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,

3. Aprovechando el Aprendizaje Automático en el Ciclo de Vida del Caso de Prueba

Short description:

Si tenemos algún problema en el caso de prueba en sí, podemos mejorar el código de prueba. De lo contrario, si encontramos algún problema con el producto, entonces podemos levantar los bugs o los tickets. Por lo tanto, en cada etapa, podemos de alguna manera aprovechar las actividades de aprendizaje automático. Comencemos a discutir cada etapa una por una, comenzando con el análisis de los requisitos y luego generando de manera relevante algunos casos de prueba. Un número ISBN es una combinación de diferentes números en un formato diferente. Después de observar esto, puedo generar algunos otros casos de prueba inyectando algunos valores diferentes. Pero, por supuesto, hay una forma mucho más sencilla de hacerlo hoy en día, utilizando los protocolos de NLP o los algoritmos.

después de la ejecución, cerramos nuestra actividad de testing realizando el mantenimiento. Si tenemos algún problema en el caso de prueba en sí, podemos mejorar el código de prueba. De lo contrario, si encontramos algún problema con el producto, entonces podemos levantar los bugs o los tickets. Esta es la última etapa de un solo ciclo de vida del caso de prueba. Por lo tanto, en cada etapa, podemos de alguna manera aprovechar las actividades de machine learning. Comencemos a discutir cada etapa una por una, comenzando con el análisis de los requisitos y luego generando de manera relevante algunos casos de prueba. De nuevo, después de observar, después de hacer nuestro aprendizaje, después de hacer nuestro entrenamiento, entonces podemos generar algunos casos de prueba. Por ejemplo, permítanme pasar inmediatamente a un ejemplo, que podría ser una API que vamos a probar. La API de la Interfaz de Protocolo de Aplicación de una biblioteca. Por ejemplo, tenemos una biblioteca y dentro tenemos varios libros. Cada entidad de libro tiene algunos atributos diferentes, como el número ISBN, el precio o el año de publicación del libro. Siempre que envío algunas consultas, obtendré la respuesta relevante. Después de obtener estas respuestas, puedo ver qué tipo de valores representan estos atributos. Un número ISBN es una combinación de diferentes números en un formato diferente. Primero que nada, tenemos un dígito y luego tenemos el carácter guión y luego tres dígitos más y otro carácter guión. Este es un formato diseñado para representar el número ISBN. Este es ya un entrenamiento, ya un aprendizaje. Después de observar esto, puedo generar algunos otros casos de prueba inyectando algunos valores diferentes. No este valor exacto sino algunos valores similares e incluso algunos valores intencionalmente incorrectos. Por ejemplo, si comienzo con dos dígitos, ¿qué sucede? Porque estaría violando el estándar definido para este número ISBN. Estará generando también casos de prueba negativos, que generamos intencionalmente, inyectando algunos valores inesperados. Así que, esto es todo lo que podemos hacer después de aprender, después de ver y hacer nuestras observaciones. Pero, por supuesto, hay una forma mucho más sencilla de hacerlo hoy en día, utilizando los protocolos de NLP o los algoritmos. Así que, podemos simplemente enviar nuestra consulta. Por ejemplo, en este ejemplo, que estoy compartiendo en las diapositivas. Solo estoy explicando mi problema, como, soy un tester, tengo que design algunos casos de prueba y mi escenario de uso es algo así, los usuarios van a esta página web, y luego realizan algunas consultas enviando algunas palabras clave a los campos de texto en la página web. Así que, este es mi escenario. Por favor, define algunos casos de prueba para mí, y puedo ver que ya genera quizás seis, siete casos de prueba, incluyendo escenarios positivos, casos límite, y muchos puntos de cobertura diferentes. Después de que design nuestros casos de prueba, la siguiente etapa es generar el código, implementar el código de prueba, que puede ser nuevamente realizado utilizando NLP. En este ejemplo,

4. Generando Código Relevante para la Automatización de Pruebas

Short description:

En esta parte, discutimos la generación de código relevante para la automatización de pruebas utilizando el aprendizaje automático. Exploramos el uso de diferentes lenguajes de programación, bibliotecas y marcos, como Python con Selenium, Cypress, Playwrights y Selenium. El código generado es similar a lo que implementaríamos manualmente. El aprendizaje automático ayuda a automatizar el proceso de generación de código y ahorra tiempo y esfuerzo.

Estoy compartiendo en esta diapositiva. Ahora, estoy explicando mi problema, los pasos de la prueba. Paso número uno, ir a esta página, navegar a esta URL. Paso número dos, encontrar, localizar este elemento, y hacer la interacción del usuario como hacer clic en el botón o tal vez escribir algunas palabras clave en los campos de texto, y luego puedo ver que se genera el código relevante. Este era, creo, Python con Selenium y algunas otras bibliotecas. No solo lenguajes de programación específicos o las bibliotecas, sino que también puedo pedir que se genere el código relevante en algunos marcos de automation frameworks. Por ejemplo, en este ejemplo, estoy pidiendo generar el código con un escenario similar, no el mismo pero un escenario similar, en Cypress. Pero también puedo pedir diferentes frameworks, como Playwrights, o Selenium, o cualquier otro. Así que de nuevo, puedo ver que está generando un código que es muy similar a lo que yo implementaría. Porque si no lo hubiera pedido, probablemente implementaría un código muy similar.

5. Generación de Código y Ejecución de Pruebas

Short description:

Ahora, en términos de generación de código, estoy siguiendo un camino diferente. Comienzo con una consulta de Postman y la convierto a diferentes lenguajes de programación. La implementación de casos de prueba en la automatización de la interfaz de usuario requiere el reconocimiento visual de los elementos. En lugar de usar atributos tradicionales, podemos reconocer visualmente los elementos. Podemos entrenar el código para que coincida visualmente utilizando iconos similares. Después de la implementación, podemos ejecutar el caso de prueba y recopilar métricas como la duración de la ejecución.

Ahora, en el tercer ejemplo, en términos de code generation, esta vez estoy siguiendo un camino diferente. Estoy comenzando con una consulta de Postman, y le pido que convierta esta consulta de Postman a diferentes lenguajes de programación, como, no solo Python, sino JavaScript, y algunos otros también. Entonces, primero, implemento mi consulta de Postman, y copio el valor de curl, y totalmente automatizado, ¿verdad? No pierdo tiempo. Todo es muy rápido, muy preciso, muy confiable. El código que se genera eventualmente es algo que puedo inyectar directamente en mi entorno de automation de pruebas. Continuando, hablando de la implementación de casos de prueba, cuando estamos haciendo la automation de la interfaz de usuario, el reconocimiento visual de los elementos es mucho más importante, ¿verdad? Porque tenemos que localizar los elementos en las páginas web, y cómo lo hacemos en las terminologías de automation de la interfaz de usuario, tenemos que localizar los elementos. De hecho, el código debería localizar los elementos. Normalmente, cómo lo hacemos es que usamos los atributos tradicionales de los elementos, o tal vez la ruta, o las clases, los ID de los elementos, pero todos sabemos que a veces son inestables. Podrían ser cambiados por el equipo de desarrollo. Pueden cambiar el diseño de la página, y a veces los localizadores se rompen. Entonces, ¿qué deberíamos hacer? Tal vez deberíamos, en lugar de usar esos atributos tradicionales o las clases, las rutas, ¿por qué no intentamos reconocer visualmente, como lo hacemos como seres humanos? Por ejemplo, cada vez que estamos escaneando la página web, con nuestros ojos, estamos tratando de ver dónde están los elementos, ¿verdad? ¿Dónde están los botones? En la esquina más a la izquierda, o en el medio de la página, ¿dónde está? Podemos verlo con nuestros ojos. Entonces, de la misma manera, podemos dejar que el código intente coincidir visualmente. Como, si lo entrenamos con varios iconos similares. Por ejemplo, en esta página, estoy compartiendo un repositorio abierto. Como es abierto, lo estoy compartiendo sin ninguna preocupación comercial. Puedes ir y comprobar. Hay varios iconos. Por ejemplo, en este caso, era un carrito de compras en línea. Si estás testing un sitio web en línea, entonces puedes entrenar de esta manera. Y cada vez que tengas un icono similar, no necesariamente 100% igual, pero uno similar, será reconocido como un carrito de compras. Y cada vez que hagas clic en él, puede ser reconocido allí, la ubicación. Y el código puede hacer clic en el elemento reconocido. Y podemos continuar con el resto de los pasos de la prueba. Continuando. Después, después de completar nuestra implementación, entonces podemos ejecutar el caso de prueba. Y lo que podemos hacer durante la ejecución de la prueba, podemos recopilar varias métricas. Por ejemplo, la duración de la ejecución. ¿Cuánto tiempo necesitamos para ejecutar para completar nuestra ejecución de la prueba? Por ejemplo, digamos que son 15 segundos por caso de prueba.

6. Observación y Detección de Valores Atípicos

Short description:

Los algoritmos de machine learning pueden detectar valores atípicos en los tiempos de ejecución, notificándonos automáticamente de situaciones riesgosas o inesperadas. Al analizar las observaciones y compararlas con los resultados anteriores, podemos identificar posibles problemas e investigar más a fondo.

Y esto es la observación. Esto es el entrenamiento, ¿verdad? Y siempre que tengamos una nueva ejecución, si no toma 15 segundos, sino dos minutos, por ejemplo, no 15 segundos, no 20 segundos, sino dos minutos, es obviamente un valor atípico, ¿verdad? Entonces, en este caso, el algoritmo de machine learning puede advertirme, puede modificarme. Mi resultado esperado era alrededor de 15 segundos, porque esta fue mi observación anterior. Pero esta vez, tomó dos minutos. Por favor, ve y verifica si hay algo mal. Podría haber algunas respuestas que llegaron tarde por parte del sistema, o podría ser algo más. Entonces, todas estas observaciones se pueden hacer automáticamente. Y en lugar de ir a través de todas las ejecuciones, una por una, podemos ser notificados automáticamente sobre lo riesgoso, sobre la ejecución, que podría tener algunos valores atípicos o situaciones inesperadas.

7. Mantenimiento, Gestión de Bugs y Machine Learning

Short description:

En la etapa de mantenimiento, podemos enseñar a las máquinas a hacer revisiones de código e identificar anti-patrones. Los casos de prueba que fallan por sí mismos pueden ayudar a identificar las causas raíz y proporcionar opciones de solución. La migración entre marcos puede lograrse a través del entrenamiento de modelos. Se compartirá un estudio de caso sobre la gestión de bugs, centrándose en la clasificación de bugs basada en niveles de gravedad. El preprocesamiento y la extracción de características son pasos clave en el machine learning. Convertir el texto en números permite que las computadoras comprendan los datos. La clasificación es la siguiente etapa, seguida de la recopilación de resultados.

Y la etapa final es el mantenimiento. Y la refactorización es una actividad, una opción que podemos hacer en la etapa de mantenimiento. Por ejemplo, revisar el código, o mejorar la refactorización del código. Entonces, si podemos enseñar de alguna manera a las máquinas a hacer revisiones de código, como si les enseñáramos las prácticas raíz, o incluso los anti patterns que debemos evitar, entonces pueden hacer las revisiones de código. Por ejemplo, siempre que tengo un número mágico codificado con dificultad dentro del código, y si enseño a las máquinas que no es un anti-patrón que quiero evitar, entonces puede, siempre que lo detecte, puede notificarme, encontré el anti-patrón aquí, por favor ve y revisa. Acelerará nuestros procesos porque de lo contrario lo que podríamos hacer, podríamos hacer solo revisiones por pares, y tomaría algún tiempo, verdad, enviaría mi código a un compañero de equipo, y él o ella revisará el código, proporcionará la retroalimentación. Revisaré de nuevo, tomará algún tiempo, irá de ida y vuelta, pero de esta manera ya podemos completar o incluso hacer la primera revisión con la ayuda de las máquinas. Y el auto-fallo es otra opción que podemos realizar, que es como siempre que un caso de prueba está fallando, podemos intentar entender la causa raíz automáticamente, y proporcionará algunas opciones para hacer la corrección para evitar este fallo. Y migrar, lo discutí en una de las diapositivas anteriores, como migrar de Cypress a Playwright o convertir de un marco a otro marco, todo eso se puede lograr entrenando nuestros modelos. Y finalmente, la última parte será un case study donde compartiré mis experiencias personales relacionadas con la gestión de bugs y explicaré cómo podemos incluso gestionar nuestros bugs o tickets en nuestros proyectos usando machine learning. Entonces, en este proyecto donde apliqué machine learning, tenía casi 900 tickets en nuestro sistema de seguimiento de problemas. Y en primer lugar, exporté estos tickets de la herramienta de gestión de proyectos a una hoja de cálculo de Excel, y tenía tres niveles de gravedad diferentes. Gravedad 1, 2, 3, ¿verdad? Y esos son diferentes niveles de criticidad, o niveles de prioridad. Entonces, lo que estoy tratando de hacer es clasificar esos bugs en diferentes niveles de gravedad. Entonces, lo que hice para este propósito es, en primer lugar, hice el preprocesamiento, como limpiar los data. Si necesito algún texto en las cadenas en las descripciones que se levantan dentro de los tickets, entonces los elimino, los elimino. O hago algunas formaciones, como eliminar la puntuación, o hacer que todas las palabras sean minúsculas. Entonces, hago este tipo de formaciones. Y luego hago la extracción de características. ¿Qué es la extracción de características? Como todos sabemos en la máquina learning, la descripción normal en inglés que escribo para describir mi problema, para describir mi bug, no puede ser entendida por las máquinas, ¿verdad? Porque este es nuestro idioma como humanos. Pero si queremos hablar, no a otro humano, sino a una PC, entonces no tengo que usar, o debería usar algunos otros idiomas, no inglés. Y es el lenguaje de la máquina. Y ¿cómo funciona? Tengo que convertir estas cadenas, estos valores de texto, en algunos números, básicamente ceros y unos. Esto es lo que una computadora entiende. Entonces, ¿cómo puedo hacer esta conversión? Puedo seguir diferentes enfoques. Pero lo que hice en el caso específico fue simplemente contar el número de frecuencias de palabras en cada oración. Y luego tendré los unos y ceros. Por ejemplo, si una palabra específica ocurre dos veces, tres veces en una oración, entonces la forma binaria de este número sería mi característica para esta muestra. Y después de tener las características, la siguiente etapa es hacer la clasificación en sí. Y finalmente, podemos recoger los resultados de estos modelos.

8. Resultados de la Clasificación y Gestión de Bugs

Short description:

En el primer ciclo, tuve una matriz de confusión con alrededor del 73% de precisión. Fusioné la clase 2 y 3 para evitar sesgos, ya que la clase 2 era importante para detectar. Recopilé todas las demás clases en una. La precisión resultante fue del 82%, pero aún no es suficiente para todas las actividades. También podemos usar el clustering para gestionar bugs.

Permíteme compartir algunos resultados. En el primer ciclo, esta es la matriz de confusión que tenía. Y tenía alrededor del 73% de precisión. Luego intenté recoger la clase 2 y 3 juntas, y las etiquetas para eso eran 3 y 4. Fusioné esos dos solo para evitar sesgos, porque la clase 2 es la clase donde la mayoría de los bugs están etiquetados. Así que combiné 3 y 4. Lo que significa que la clase 2 para mí era importante detectar. Si tengo un ticket de problema de clase 2, entonces era un bloqueador de lanzamiento para mí, para decidir si la clase 2 o no es una decisión importante. Así que recopilo todas las demás en una clase. Y en este caso, tenía un 82% tal vez aún no es 100% suficiente para aprovechar en mis actividades porque era un problema difícil. Incluso para nosotros mismos, como humanos, a veces discutimos mucho sobre el triage de bugs, ¿verdad? Para mí, a veces es 72. Para alguien más, es un 73 o 4. Así que además de la clasificación, también podemos hacer el clustering. Y podemos gestionar nuestros bugs. Así que en resumen, podemos aprovechar machine learning en varias etapas diferentes, comenzando desde la generación de casos de prueba, y luego podemos hacer la code generation, la implementación, y finalmente las etapas de ejecución y mantenimiento también. Incluso desde nuestros bugs, tickers, podemos clasificarlos para hacer el triage de bugs, o tal vez agruparlos en diferentes grupos para gestionar fácilmente. Así que las palabras finales serían un tema muy candente, ¿las máquinas nos reemplazarán? ¿Perderemos nuestros trabajos debido a machine learning? Porque machine learning está llegando, todo el mundo está asustado, temeroso, hay una falta de claridad sobre lo que haremos en el futuro. Así que por ahora, por supuesto, no sé qué pasará en el futuro, pero por ahora, lo que diría es, si eres un gerente, si eres un CEO de una empresa, ¿qué harías? Contratarías a una persona sin una PC o una PC sin alguien que los opere. Por supuesto, lo que harías es contratar a una persona y darle una PC, ¿verdad? Así que harías una colaboración, harías uso de la colaboración entre esos dos. Entonces, ¿por qué estamos tratando de comparar, pero no solo tratando de hacer una colaboración? Así que estas serían las palabras finales, y muchas gracias por escucharme, y si tienes alguna pregunta, estaré encantado de intentar responderla. Supongo que tendremos un canal para eso, e incluso después del evento, estaré más que encantado de conectarme a través de las redes sociales que estoy compartiendo.

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.
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.
El Flujo de Trabajo del Desarrollador Asistido por IA: Construye Más Rápido e Inteligente Hoy
JSNation US 2024JSNation US 2024
31 min
El Flujo de Trabajo del Desarrollador Asistido por IA: Construye Más Rápido e Inteligente Hoy
Top Content
AI is transforming software engineering by using agents to help with coding. Agents can autonomously complete tasks and make decisions based on data. Collaborative AI and automation are opening new possibilities in code generation. Bolt is a powerful tool for troubleshooting, bug fixing, and authentication. Code generation tools like Copilot and Cursor provide support for selecting models and codebase awareness. Cline is a useful extension for website inspection and testing. Guidelines for coding with agents include defining requirements, choosing the right model, and frequent testing. Clear and concise instructions are crucial in AI-generated code. Experienced engineers are still necessary in understanding architecture and problem-solving. Energy consumption insights and sustainability are discussed in the Talk.
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.

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.
AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Top Content
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
How to 9,2x Your Development Speed with Cline
JSNation 2025JSNation 2025
64 min
How to 9,2x Your Development Speed with Cline
Featured Workshop
Nik Pash
Nik Pash
La forma en que escribimos código está cambiando fundamentalmente. En lugar de quedar atrapado en bucles anidados y detalles de implementación, imagine enfocarse puramente en la arquitectura y la resolución creativa de problemas mientras su programador de pares de IA maneja la ejecución. En esta masterclass práctica, te mostraré cómo aprovechar Cline (un agente de codificación autónomo que recientemente alcanzó 1M de descargas en VS Code) para acelerar drásticamente tu flujo de trabajo de desarrollo a través de una práctica que llamamos "vibe coding" - donde los humanos se enfocan en el pensamiento de alto nivel y la IA maneja la implementación.Descubrirás:Los principios fundamentales del "vibe coding" y cómo se diferencia del desarrollo tradicionalCómo diseñar soluciones a un alto nivel y hacer que la IA las implemente con precisiónDemostración en vivo: Construcción de un sistema de almacenamiento en caché de grado de producción en Go que nos ahorró $500/semanaTécnicas para usar IA para entender bases de código complejas en minutos en lugar de horasMejores prácticas para solicitar a los agentes de IA que obtengan exactamente el código que deseasErrores comunes a evitar al trabajar con asistentes de codificación de IAEstrategias para usar IA para acelerar el aprendizaje y reducir la dependencia de ingenieros seniorCómo combinar efectivamente la creatividad humana con las capacidades de implementación de IAYa sea que seas un desarrollador junior que busca acelerar tu aprendizaje o un ingeniero senior que desea optimizar tu flujo de trabajo, saldrás de esta masterclass con experiencia práctica en desarrollo asistido por IA que puedes aplicar inmediatamente a tus proyectos. A través de demostraciones de codificación en vivo y ejercicios prácticos, aprenderás cómo aprovechar Cline para escribir mejor código más rápido mientras te enfocas en lo que importa: resolver problemas reales.
Building Full Stack Apps With Cursor
JSNation 2025JSNation 2025
46 min
Building Full Stack Apps With Cursor
Featured Workshop
Mike Mikula
Mike Mikula
En esta masterclass cubriré un proceso repetible sobre cómo iniciar aplicaciones full stack en Cursor. Espere comprender técnicas como el uso de GPT para crear requisitos de producto, esquemas de base de datos, hojas de ruta y usarlos en notas para generar listas de verificación que guíen el desarrollo de aplicaciones. Profundizaremos más en cómo solucionar alucinaciones/errores que ocurren, indicaciones útiles para hacer que su aplicación se vea y se sienta moderna, enfoques para conectar cada capa y más. Al final, ¡espere poder ejecutar su propia aplicación full stack generada por IA en su máquina!
Por favor, encuentre las preguntas frecuentes aquí
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
Workshop
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