Pruebas predictivas en JavaScript con Machine Learning

Rate this content
Bookmark

Esta charla cubrirá cómo podemos aplicar el aprendizaje automático a las pruebas de software, incluido en JavaScript, para ayudar a reducir la cantidad de pruebas que deben ejecutarse.

Podemos utilizar un modelo predictivo de aprendizaje automático para tomar una decisión informada y descartar pruebas que es extremadamente improbable que descubran un problema. Esto abre una nueva forma más eficiente de seleccionar pruebas.

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

FAQ

El TestJS Summit es una conferencia organizada por GitNation enfocada en discutir y explorar tecnologías y técnicas avanzadas en las pruebas de JavaScript.

Shivaay es un miembro del grupo de trabajo de TensorFlow.JS y mentor de código del servidor de Google en TensorFlow. Ha participado en varias conferencias de GitNation, presentando temas relacionados con el aprendizaje automático en JavaScript.

Los beneficios incluyen la generación automatizada de casos de prueba, ahorro de tiempo significativo, aumento de la cobertura de código, y la mejora en la eficiencia de las pruebas al seleccionar solamente las pruebas más relevantes para los cambios de código específicos.

La IA puede analizar cambios de código históricos y aprender de ellos para generar automáticamente casos de prueba que sean más pertinentes y eficaces para los cambios actuales en el código, reduciendo así la redundancia y mejorando la eficiencia del proceso de prueba.

Los desafíos incluyen la necesidad de grandes conjuntos de datos de calidad para entrenar los modelos de IA, la adaptabilidad de la IA a los cambios de código que no ha visto antes, y la integración de estas tecnologías en las herramientas de prueba existentes.

Shivaay propuso utilizar el aprendizaje automático para optimizar las pruebas de software, específicamente en cómo la IA puede ser utilizada para la generación automática de casos de prueba y la selección de pruebas basadas en la importancia de los cambios de código.

Shivay Lamba
Shivay Lamba
18 min
19 Nov, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla explora los beneficios de introducir el aprendizaje automático en las pruebas de software, incluida la generación automatizada de casos de prueba y lograr una cobertura de código cercana al 100%. La IA se utiliza para automatizar la generación de pruebas, mejorar las pruebas de regresión y hacer predicciones en las pruebas de automatización. El aprendizaje automático permite pruebas predictivas mediante la selección de pruebas que tienen más probabilidades de descubrir problemas en los cambios de código. Se utilizan herramientas basadas en IA para generar pruebas automatizadas, mejorar la cobertura de código y seleccionar pruebas de manera inteligente. Las empresas confían en probadores dedicados y utilizan cambios de código históricos y casos de prueba para generar casos de prueba específicos para cambios de código relevantes.

1. Introducción a las pruebas predictivas en JavaScript

Short description:

¡Hola a todos! Bienvenidos a TestJS Summit 2021. Soy Shivaay y presentaré sobre las pruebas predictivas en JavaScript con aprendizaje automático. ¡Comencemos!

Hola a todos, bienvenidos a TestJS Summit 2021 y soy Shivaay, quien presentará un tema sobre las pruebas predictivas en JavaScript con aprendizaje automático. Una breve introducción sobre mí, soy Shivaay y actualmente soy miembro del grupo de trabajo de TensorFlow.JS. Soy mentor de código del servidor de Google en TensorFlow y esta es mi tercera conferencia de GitNation este año. Anteriormente, también di una charla en la conferencia de Node.js y también en React Advanced este año. Estoy muy emocionado de presentar otra charla en GitNation, específicamente en TestJS Summit. Así que sin perder más tiempo, ¡comencemos!

2. Introducing Machine Learning to Software Testing

Short description:

El aprendizaje automático se está utilizando en diversas industrias, incluido el desarrollo de software. Sin embargo, las pruebas de software no han aprovechado completamente la inteligencia artificial y el aprendizaje automático. Esta charla analiza los beneficios de introducir el aprendizaje automático en las pruebas de software. La IA puede automatizar la generación de casos de prueba, determinar qué pruebas son más importantes y lograr una cobertura de código cercana al 100%. La IA también puede mejorar los marcos de pruebas de automatización como Selenium al identificar y resolver problemas.

Ahora, primero, el aprendizaje automático está realmente en todas partes hoy en día. No hay duda al respecto. Se puede ver que el aprendizaje automático se utiliza en la atención médica, la educación, pero también en el desarrollo de software en sí. Hoy en día, el aprendizaje automático se utiliza para hacer muchas cosas diferentes. Por ejemplo, hemos visto cómo GitHub Copilot se utiliza hoy en día para generar automáticamente o sugerir nuevo código. También se utiliza en MLOps, en diferentes formas de operaciones en DevOps para mejorar los ciclos de DevOps. Y eso hace que sea realmente importante también usarlo en otras áreas donde tradicionalmente no pensaríamos que se podría utilizar. Entonces, eso es lo que hace que el aprendizaje automático sea realmente poderoso hoy en día. Y por eso, ¿por qué no pensar en introducir el aprendizaje automático en las pruebas de software?

Las pruebas de software tradicionalmente se han centrado en poder escribir casos de prueba, poder comprender fundamentalmente dentro de todo el ciclo de vida de la ingeniería de software cómo podemos hacer que nuestros software sean cada vez más productivos y libres de errores. Eso significa que idealmente, si tienes un probador de software o un analista de control de calidad, revisarán todo el código y escribirán casos de prueba unitarios. Y, por supuesto, tenemos todo el proceso de cómo comienza realmente la prueba, donde primero escribimos algo de código, luego preparamos las pruebas unitarias, tenemos pruebas de integración. Y en función de esto, una vez que los casos de prueba se aprueban y nuestro código pasa por todos estos diferentes casos de prueba tanto de la unidad como de la integración, finalmente ponemos nuestro código en producción. También utilizamos cosas como pruebas de regresión para ver cómo el nuevo código está afectando el código que se ha escrito anteriormente o, digamos, algunas de las bases de código antiguas y cómo se está viendo afectado este código. Todos estos procesos implican básicamente que puedes usar pruebas manuales o también tienes muchas herramientas de pruebas de automatización diferentes, como Selenium. Y tradicionalmente, estas no han utilizado realmente el aprendizaje automático. Tiene más que ver con escribir estos casos de prueba si estás haciendo pruebas manuales o incluso si estás utilizando herramientas de pruebas de automatización como Selenium para poder configurarlas para que puedan pasar por tu aplicación. Y en general, las pruebas de software realmente no han visto mucho uso de la IA, pero esta charla específicamente hablará sobre cómo podemos introducir y cuáles son los beneficios de agregar el aprendizaje automático o la IA a las pruebas de software.

Entonces, escribamos sobre algunos de los grandes escenarios donde la IA podría ser utilizada en las pruebas. El primero es la generación automatizada de casos de prueba. Muchas veces, pasamos mucho tiempo creando casos de prueba. Eso podría ser programación orientada al comportamiento o desarrollo orientado al comportamiento, donde creamos los casos de prueba antes de escribir el código en sí, o digamos que hemos escrito una función en particular y escribimos un caso de prueba unitario para ella. ¿Cómo podemos usar la IA para generar casos de prueba sobre la marcha evaluando simplemente el código, revisando el código? Donde un modelo de IA simplemente comprende el código que se ha escrito, los cambios de código que se han realizado y luego genera automáticamente casos de prueba sin ninguna intervención manual. Luego, ser capaz de descubrir qué pruebas particulares se deben ejecutar realmente y que son más importantes, lo que ahorrará tiempo y el proceso completo del tiempo de prueba de software, donde solo estamos ejecutando los casos de prueba más importantes. También entraré en discusiones más profundas específicamente sobre el segundo punto y luego cómo podemos usar el aprendizaje automático no solo para probar la interfaz de usuario basada en frontend específicamente en JavaScript, sino también cómo podemos usar el aprendizaje automático para probar las API del backend. Eso también es uno de los campos donde actualmente se están desarrollando muchas herramientas de pruebas de software basadas en IA. Y luego, ¿cómo podemos lograr una cobertura de código del 100% con la ayuda de la IA? Porque la cobertura de código es un tema realmente importante que se utiliza cuando evaluamos cualquier tipo de base de código, cuando, digamos, creamos una nueva compilación o probamos nuevos despliegues, nuevos cambios que se han realizado. Si podemos lograr incluso un 90% o un 95% de cobertura de código, eso en sí mismo se considera un punto realmente excelente. Pero, ¿cómo podemos lograr una cobertura de código cercana al 100% con la ayuda de la IA? Y eso es algo en lo que la IA realmente puede ayudar, debido al hecho de que podemos evaluar el código con la ayuda de la IA y podemos generar pruebas automatizadas, podemos ejecutar las pruebas más importantes que son realmente importantes para ese cambio de código en particular, y eso ayudará a comprender todas las diferentes sutilezas del código que existen, incluidos los cambios de código y cómo los nuevos cambios han afectado realmente su código anterior. Todo eso se puede tener en cuenta al intentar lograr una cobertura de código con la ayuda de la IA. Y luego, incluso dentro del marco de pruebas de automatización, ¿cómo podemos usar realmente la IA, o digamos, con respecto a Selenium, para que cuando estemos haciendo cualquier tipo de prueba automatizada, la IA pueda ayudar a mejorarla al analizar específicamente los problemas que pueden surgir, y estamos utilizando una prueba manual, básicamente estamos utilizando pruebas de automatización para buscar específicamente esos problemas particulares y tratar de resolverlos. Estos son algunos de los escenarios en los que la IA se está utilizando actualmente en las pruebas de software.

QnA

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.
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.
TensorFlow.js 101: Aprendizaje automático en el navegador y más allá
ML conf EU 2020ML conf EU 2020
41 min
TensorFlow.js 101: Aprendizaje automático en el navegador y más allá
TensorFlow.js enables machine learning in the browser and beyond, with features like face mesh, body segmentation, and pose estimation. It offers JavaScript prototyping and transfer learning capabilities, as well as the ability to recognize custom objects using the Image Project feature. TensorFlow.js can be used with Cloud AutoML for training custom vision models and provides performance benefits in both JavaScript and Python development. It offers interactivity, reach, scale, and performance, and encourages community engagement and collaboration between the JavaScript and machine learning communities.

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
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
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Masterclass de Pruebas de API con Postman
TestJS Summit 2023TestJS Summit 2023
48 min
Masterclass de Pruebas de API con Postman
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
En el panorama siempre en evolución del desarrollo de software, garantizar la fiabilidad y funcionalidad de las API se ha vuelto primordial. "Pruebas de API con Postman" es una masterclass completa diseñada para equipar a los participantes con los conocimientos y habilidades necesarios para sobresalir en las pruebas de API utilizando Postman, una herramienta poderosa ampliamente adoptada por profesionales en el campo. Esta masterclass profundiza en los fundamentos de las pruebas de API, avanza a técnicas de prueba avanzadas y explora la automatización, las pruebas de rendimiento y el soporte multiprotocolo, proporcionando a los asistentes una comprensión holística de las pruebas de API con Postman.
Únete a nosotros para esta masterclass para desbloquear todo el potencial de Postman para las pruebas de API, agilizar tus procesos de prueba y mejorar la calidad y fiabilidad de tu software. Ya seas un principiante o un probador experimentado, esta masterclass te equipará con las habilidades necesarias para sobresalir en las pruebas de API con Postman.
Monitoreo 101 para Desarrolladores de React
React Summit US 2023React Summit US 2023
107 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, mira cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Nivel de la masterclass: Intermedio