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!

25 min
11 Dec, 2023

AI Generated Video Summary

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

TestJS Summit 2021TestJS Summit 2021
33 min
Network Requests with Cypress
Whether you're testing your UI or API, Cypress gives you all the tools needed to work with and manage network requests. This intermediate-level task demonstrates how to use the cy.request and cy.intercept commands to execute, spy on, and stub network requests while testing your application in the browser. Learn how the commands work as well as use cases for each, including best practices for testing and mocking your network requests.
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Featured Video
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.
TestJS Summit 2022TestJS Summit 2022
27 min
Full-Circle Testing With Cypress
Cypress has taken the world by storm by brining an easy to use tool for end to end testing. It’s capabilities have proven to be be useful for creating stable tests for frontend applications. But end to end testing is just a small part of testing efforts. What about your API? What about your components? Well, in my talk I would like to show you how we can start with end-to-end tests, go deeper with component testing and then move up to testing our API, circ
TestJS Summit 2021TestJS Summit 2021
31 min
Test Effective Development
Developers want to sleep tight knowing they didn't break production. Companies want to be efficient in order to meet their customer needs faster and to gain competitive advantage sooner. We ALL want to be cost effective... or shall I say... TEST EFFECTIVE!But how do we do that?Are the "unit" and "integration" terminology serves us right?Or is it time for a change? When should we use either strategy to maximize our "test effectiveness"?In this talk I'll show you a brand new way to think about cost effective testing with new strategies and new testing terms!It’s time to go DEEPER!
JSNation 2023JSNation 2023
24 min
AI and Web Development: Hype or Reality
In this talk, we'll take a look at the growing intersection of AI and web development. There's a lot of buzz around the potential uses of AI in writing, understanding, and debugging code, and integrating it into our applications is becoming easier and more affordable. But there are also questions about the future of AI in app development, and whether it will make us more productive or take our jobs.
There's a lot of excitement, skepticism, and concern about the rise of AI in web development. We'll explore the real potential for AI in creating new web development frameworks, and separate fact from fiction.
So if you're interested in the future of web development and the role of AI in it, this talk is for you. Oh, and this talk abstract was written by AI after I gave it several of my unstructured thoughts.

Workshops on related topic

React Summit 2023React Summit 2023
151 min
Designing Effective Tests With React Testing Library
Featured Workshop
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests.
Table of contents- The different kinds of React application tests, and where component tests fit in- A mental model for thinking about the inputs and outputs of the components you test- Options for selecting DOM elements to verify and interact with them- The value of mocks and why they shouldn’t be avoided- The challenges with asynchrony in RTL tests and how to handle them
Prerequisites- Familiarity with building applications with React- Basic experience writing automated tests with Jest or another unit testing framework- You do not need any experience with React Testing Library- Machine setup: Node LTS, Yarn
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Featured WorkshopFree
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
TestJS Summit 2022TestJS Summit 2022
146 min
How to Start With Cypress
Featured WorkshopFree
The web has evolved. Finally, testing has also. Cypress is a modern testing tool that answers the testing needs of modern web applications. It has been gaining a lot of traction in the last couple of years, gaining worldwide popularity. If you have been waiting to learn Cypress, wait no more! Filip Hric will guide you through the first steps on how to start using Cypress and set up a project on your own. The good news is, learning Cypress is incredibly easy. You'll write your first test in no time, and then you'll discover how to write a full end-to-end test for a modern web application. You'll learn the core concepts like retry-ability. Discover how to work and interact with your application and learn how to combine API and UI tests. Throughout this whole workshop, we will write code and do practical exercises. You will leave with a hands-on experience that you can translate to your own project.
React Summit 2022React Summit 2022
117 min
Detox 101: How to write stable end-to-end tests for your React Native application
WorkshopFree
Compared to unit testing, end-to-end testing aims to interact with your application just like a real user. And as we all know it can be pretty challenging. Especially when we talk about Mobile applications.
Tests rely on many conditions and are considered to be slow and flaky. On the other hand - end-to-end tests can give the greatest confidence that your app is working. And if done right - can become an amazing tool for boosting developer velocity.
Detox is a gray-box end-to-end testing framework for mobile apps. Developed by Wix to solve the problem of slowness and flakiness and used by React Native itself as its E2E testing tool.
Join me on this workshop to learn how to make your mobile end-to-end tests with Detox rock.
Prerequisites- iOS/Android: MacOS Catalina or newer- Android only: Linux- Install before the workshop
TestJS Summit 2023TestJS Summit 2023
48 min
API Testing with Postman Workshop
WorkshopFree
In the ever-evolving landscape of software development, ensuring the reliability and functionality of APIs has become paramount. "API Testing with Postman" is a comprehensive workshop designed to equip participants with the knowledge and skills needed to excel in API testing using Postman, a powerful tool widely adopted by professionals in the field. This workshop delves into the fundamentals of API testing, progresses to advanced testing techniques, and explores automation, performance testing, and multi-protocol support, providing attendees with a holistic understanding of API testing with Postman.
1. Welcome to Postman- Explaining the Postman User Interface (UI)2. Workspace and Collections Collaboration- Understanding Workspaces and their role in collaboration- Exploring the concept of Collections for organizing and executing API requests3. Introduction to API Testing- Covering the basics of API testing and its significance4. Variable Management- Managing environment, global, and collection variables- Utilizing scripting snippets for dynamic data5. Building Testing Workflows- Creating effective testing workflows for comprehensive testing- Utilizing the Collection Runner for test execution- Introduction to Postbot for automated testing6. Advanced Testing- Contract Testing for ensuring API contracts- Using Mock Servers for effective testing- Maximizing productivity with Collection/Workspace templates- Integration Testing and Regression Testing strategies7. Automation with Postman- Leveraging the Postman CLI for automation- Scheduled Runs for regular testing- Integrating Postman into CI/CD pipelines8. Performance Testing- Demonstrating performance testing capabilities (showing the desktop client)- Synchronizing tests with VS Code for streamlined development9. Exploring Advanced Features - Working with Multiple Protocols: GraphQL, gRPC, and more
Join us for this workshop to unlock the full potential of Postman for API testing, streamline your testing processes, and enhance the quality and reliability of your software. Whether you're a beginner or an experienced tester, this workshop will equip you with the skills needed to excel in API testing with Postman.
React Advanced Conference 2023React Advanced Conference 2023
98 min
Working With OpenAI and Prompt Engineering for React Developers
Workshop
In this workshop we'll take a tour of applied AI from the perspective of front end developers, zooming in on the emerging best practices when it comes to working with LLMs to build great products. This workshop is based on learnings from working with the OpenAI API from its debut last November to build out a working MVP which became PowerModeAI (A customer facing ideation and slide creation tool).
In the workshop they'll be a mix of presentation and hands on exercises to cover topics including:
- GPT fundamentals- Pitfalls of LLMs- Prompt engineering best practices and techniques- Using the playground effectively- Installing and configuring the OpenAI SDK- Approaches to working with the API and prompt management- Implementing the API to build an AI powered customer facing application- Fine tuning and embeddings- Emerging best practice on LLMOps