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.

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
Ya sea que estés probando tu UI o API, Cypress te proporciona todas las herramientas necesarias para trabajar y gestionar solicitudes de red. Esta tarea de nivel intermedio demuestra cómo usar los comandos cy.request y cy.intercept para ejecutar, espiar y simular solicitudes de red mientras pruebas tu aplicación en el navegador. Aprende cómo funcionan los comandos, así como los casos de uso para cada uno, incluyendo las mejores prácticas para probar y simular tus solicitudes de red.
Testing Pyramid Makes Little Sense, What We Can Use Instead
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
Gleb Bahmutov
Roman Sandler
2 authors
The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress ha tomado al mundo por sorpresa al traer una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones de frontend. Pero las pruebas de extremo a extremo son solo una pequeña parte de los esfuerzos de prueba. ¿Qué pasa con tu API? ¿Qué pasa con tus componentes? Bueno, en mi charla me gustaría mostrarte cómo podemos comenzar con pruebas de extremo a extremo, profundizar con pruebas de componentes y luego subir a probar nuestra API, circ
Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
Los desarrolladores quieren dormir tranquilos sabiendo que no rompieron la producción. Las empresas quieren ser eficientes para satisfacer las necesidades de sus clientes más rápido y obtener una ventaja competitiva antes. TODOS queremos ser coste efectivos... o debería decir... ¡PRUEBA EFECTIVA!¿Pero cómo hacemos eso?¿Nos sirve bien la terminología de "unidad" e "integración"?¿O es hora de un cambio? ¿Cuándo deberíamos usar cada estrategia para maximizar nuestra "efectividad de prueba"?¡En esta charla te mostraré una nueva forma de pensar sobre las pruebas coste efectivas con nuevas estrategias y nuevos términos de prueba!¡Es hora de ir MÁS PROFUNDO!
Playwright Test Runner
TestJS Summit 2021TestJS Summit 2021
25 min
Playwright Test Runner
Top Content
Charlie Gerard's Career Advice: Be intentional about how you spend your time and effort
6 min
Charlie Gerard's Career Advice: Be intentional about how you spend your time and effort
Featured Article
Charlie Gerard
Jan Tomes
2 authors
When it comes to career, Charlie has one trick: to focus. But that doesn’t mean that you shouldn’t try different things — currently a senior front-end developer at Netlify, she is also a sought-after speaker, mentor, and a machine learning trailblazer of the JavaScript universe. "Experiment with things, but build expertise in a specific area," she advises.

What led you to software engineering?My background is in digital marketing, so I started my career as a project manager in advertising agencies. After a couple of years of doing that, I realized that I wasn't learning and growing as much as I wanted to. I was interested in learning more about building websites, so I quit my job and signed up for an intensive coding boot camp called General Assembly. I absolutely loved it and started my career in tech from there.
 What is the most impactful thing you ever did to boost your career?I think it might be public speaking. Going on stage to share knowledge about things I learned while building my side projects gave me the opportunity to meet a lot of people in the industry, learn a ton from watching other people's talks and, for lack of better words, build a personal brand.
 What would be your three tips for engineers to level up their career?Practice your communication skills. I can't stress enough how important it is to be able to explain things in a way anyone can understand, but also communicate in a way that's inclusive and creates an environment where team members feel safe and welcome to contribute ideas, ask questions, and give feedback. In addition, build some expertise in a specific area. I'm a huge fan of learning and experimenting with lots of technologies but as you grow in your career, there comes a time where you need to pick an area to focus on to build more profound knowledge. This could be in a specific language like JavaScript or Python or in a practice like accessibility or web performance. It doesn't mean you shouldn't keep in touch with anything else that's going on in the industry, but it means that you focus on an area you want to have more expertise in. If you could be the "go-to" person for something, what would you want it to be? 
 And lastly, be intentional about how you spend your time and effort. Saying yes to everything isn't always helpful if it doesn't serve your goals. No matter the job, there are always projects and tasks that will help you reach your goals and some that won't. If you can, try to focus on the tasks that will grow the skills you want to grow or help you get the next job you'd like to have.
 What are you working on right now?Recently I've taken a pretty big break from side projects, but the next one I'd like to work on is a prototype of a tool that would allow hands-free coding using gaze detection. 
 Do you have some rituals that keep you focused and goal-oriented?Usually, when I come up with a side project idea I'm really excited about, that excitement is enough to keep me motivated. That's why I tend to avoid spending time on things I'm not genuinely interested in. Otherwise, breaking down projects into smaller chunks allows me to fit them better in my schedule. I make sure to take enough breaks, so I maintain a certain level of energy and motivation to finish what I have in mind.
 You wrote a book called Practical Machine Learning in JavaScript. What got you so excited about the connection between JavaScript and ML?The release of TensorFlow.js opened up the world of ML to frontend devs, and this is what really got me excited. I had machine learning on my list of things I wanted to learn for a few years, but I didn't start looking into it before because I knew I'd have to learn another language as well, like Python, for example. As soon as I realized it was now available in JS, that removed a big barrier and made it a lot more approachable. Considering that you can use JavaScript to build lots of different applications, including augmented reality, virtual reality, and IoT, and combine them with machine learning as well as some fun web APIs felt super exciting to me.


Where do you see the fields going together in the future, near or far? I'd love to see more AI-powered web applications in the future, especially as machine learning models get smaller and more performant. However, it seems like the adoption of ML in JS is still rather low. Considering the amount of content we post online, there could be great opportunities to build tools that assist you in writing blog posts or that can automatically edit podcasts and videos. There are lots of tasks we do that feel cumbersome that could be made a bit easier with the help of machine learning.
 You are a frequent conference speaker. You have your own blog and even a newsletter. What made you start with content creation?I realized that I love learning new things because I love teaching. I think that if I kept what I know to myself, it would be pretty boring. If I'm excited about something, I want to share the knowledge I gained, and I'd like other people to feel the same excitement I feel. That's definitely what motivated me to start creating content.
 How has content affected your career?I don't track any metrics on my blog or likes and follows on Twitter, so I don't know what created different opportunities. Creating content to share something you built improves the chances of people stumbling upon it and learning more about you and what you like to do, but this is not something that's guaranteed. I think over time, I accumulated enough projects, blog posts, and conference talks that some conferences now invite me, so I don't always apply anymore. I sometimes get invited on podcasts and asked if I want to create video content and things like that. Having a backlog of content helps people better understand who you are and quickly decide if you're the right person for an opportunity.What pieces of your work are you most proud of?It is probably that I've managed to develop a mindset where I set myself hard challenges on my side project, and I'm not scared to fail and push the boundaries of what I think is possible. I don't prefer a particular project, it's more around the creative thinking I've developed over the years that I believe has become a big strength of mine.***Follow Charlie on Twitter

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.
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.
Pruebas de Aplicaciones Web utilizando Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Pruebas de Aplicaciones Web utilizando Cypress
WorkshopFree
Gleb Bahmutov
Gleb Bahmutov
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.
Mejores Prácticas para Escribir y Depurar Pruebas de Cypress
TestJS Summit 2023TestJS Summit 2023
148 min
Mejores Prácticas para Escribir y Depurar Pruebas de Cypress
Workshop
Filip Hric
Filip Hric
Probablemente conozcas la historia. Has creado un par de pruebas y, como estás utilizando Cypress, lo has hecho bastante rápido. Parece que nada te detiene, pero luego - prueba fallida. No fue la aplicación, no fue un error, la prueba fue... ¿inestable? Bueno sí. El diseño de la prueba es importante sin importar la herramienta que utilices, incluyendo Cypress. La buena noticia es que Cypress tiene un par de herramientas bajo su cinturón que pueden ayudarte. Únete a mí en mi masterclass, donde te guiaré lejos del valle de los anti-patrones hacia los campos de pruebas estables y siempre verdes. Hablaremos sobre los errores comunes al escribir tu prueba, así como depurar y revelar problemas subyacentes. Todo con el objetivo de evitar la inestabilidad y diseñar pruebas estables.