Pruebas unitarias basadas en aprendizaje automático en JavaScript

Rate this content
Bookmark

La charla aborda el escenario actual de la escritura de casos de prueba en JavaScript y los problemas asociados con el tiempo y los recursos que las empresas gastan en escribir los casos de prueba y la falta de automatización en esta área.

Luego, la charla cubrirá cómo la inteligencia artificial y el aprendizaje automático se están aprovechando mediante herramientas como Github Copilot y Ponicode para generar automáticamente casos de prueba, simplificando así el proceso de prueba de software.

FAQ

Pony Code es una extensión impulsada por IA que ayuda a generar automáticamente casos de prueba unitarios basados en las funciones de tu código. Ofrece una interfaz gráfica en VS Code o CLI, facilitando la escritura y automatización de pruebas unitarias, mejorando así la cobertura de pruebas.

El aprendizaje automático se puede utilizar en las pruebas de software para automatizar la generación de casos de prueba, sugerir combinaciones de datos de prueba útiles y ayudar a mejorar la cobertura de pruebas, reduciendo el esfuerzo manual y el código repetitivo en la creación de pruebas.

GitHub Copilot es un programador en pareja basado en IA, creado con OpenAI Codex, que actúa como un autocompletado inteligente de código. Aunque no es una herramienta de pruebas especializada, puede sugerir automáticamente código y completar funciones mientras escribes, incluyendo posibles casos de prueba unitarios.

Las pruebas unitarias son cruciales en el desarrollo de software porque permiten verificar la funcionalidad de las piezas más pequeñas del código, como funciones o métodos. Esto es esencial para identificar y corregir errores a tiempo, evitando problemas mayores en la base de código.

Shabail Amba recomienda explorar herramientas como Pony Code y GitHub Copilot que facilitan la automatización de pruebas unitarias. Estas herramientas permiten generar casos de prueba automáticamente y mejorar la cobertura de pruebas, reduciendo el esfuerzo manual.

Shabail Amba es miembro del grupo de trabajo de TensorFlow.js y mentor de soporte de Google en TensorFlow, implicando su participación en el desarrollo y apoyo de proyectos relacionados con el aprendizaje automático aplicado a JavaScript y otras áreas de programación.

Shivay Lamba
Shivay Lamba
22 min
03 Nov, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla explora las pruebas unitarias basadas en aprendizaje automático en JavaScript y TypeScript, centrándose en herramientas como la extensión Pony Code para VS Code y GitHub Copilot. La herramienta Pony Code proporciona una interfaz gráfica de usuario para generar y gestionar casos de prueba unitarios. GitHub Copilot actúa como una herramienta de autocompletado de código inteligente, comprendiendo el contexto del código y sugiriendo casos de prueba unitarios. Estas herramientas tienen como objetivo mejorar la cobertura de código y lograr una cobertura del 100%.

1. Introducción al aprendizaje automático en las pruebas unitarias

Short description:

Hola a todos. Bienvenidos a mi charla en TestJS Summit 2022. El título de mi charla es Pruebas unitarias basadas en aprendizaje automático en JavaScript. Hoy vamos a echar un vistazo a algunas de las herramientas disponibles para los desarrolladores de software para automatizar las pruebas unitarias con la ayuda de JavaScript o TypeScript. La primera herramienta que vamos a ver es la herramienta Pony Code.

Hola a todos. Bienvenidos a mi charla en TestJS Summit 2022. El título de mi charla es Pruebas unitarias basadas en aprendizaje automático en JavaScript. Una breve introducción sobre mí. Soy Shabail Amba, miembro del grupo de trabajo de TensorFlow.js y mentor de soporte de Google en TensorFlow. La primera pregunta que seguramente vendrá a nuestra mente es por qué el aprendizaje automático y las pruebas de software. Si quieres entender más sobre cómo se utiliza el aprendizaje automático en las pruebas de software, te recomendaría que veas mi charla del año pasado en TestJS Summit 2021, donde presenté una charla sobre pruebas predictivas en JavaScript con la ayuda del aprendizaje automático y cómo puedes utilizar el aprendizaje automático para predecir qué tipo de casos de prueba se deben utilizar y cómo mejorar la cobertura de las pruebas. Si estás interesado en eso, te recomendaría que lo revises. Pero, por supuesto, la sesión de hoy trata sobre las pruebas unitarias y cómo puedes incluir el aprendizaje automático en las pruebas unitarias.

En caso de que no estés familiarizado con las pruebas unitarias, básicamente son una forma de probar las piezas más pequeñas de código, como una función, una subrutina o un método que puede estar definido en un lenguaje de programación. Y, por supuesto, tenemos diferentes tipos de técnicas de prueba, como las pruebas de integración, pero las pruebas unitarias son, con mucho, el procedimiento de prueba más pequeño que funciona en una sola función o un solo método. Y eso hace que las pruebas unitarias también sean una parte muy importante de todo el ciclo de desarrollo basado en pruebas, porque es muy importante asegurarse de que podamos probar cada una de las funcionalidades más pequeñas de un software, porque si tienes una base de código muy grande, incluso una función pequeña que no funcione correctamente puede causar errores desconocidos en toda tu base de código. Por lo tanto, es realmente importante y los casos de prueba unitarios forman una parte muy importante de la programación basada en pruebas de cualquier organización donde se realicen pruebas. Pero una de las desventajas que podemos discutir sobre las pruebas unitarias es que es un proceso muy manual. Cuando los probadores de software escriben casos de prueba unitarios para funciones, si tienes una base de código muy grande, puedes tener una multitud de funciones diferentes que estás escribiendo. Si terminas escribiendo casos de prueba unitarios para cada una de ellas, puede llevar mucho tiempo escribirlos y es mucho trabajo manual. En los últimos años, se ha invertido mucho esfuerzo en automatizar los procedimientos de casos de prueba unitarios. Y nuevamente, la idea principal es que, con la ayuda de la automatización en las pruebas unitarias, somos capaces de reducir el código repetitivo que se requiere para los casos de prueba unitarios. También somos capaces de sugerir y crear una combinación útil de datos de prueba que se pueden proporcionar a los probadores de software para que los utilicen como parte de sus capacidades de pruebas unitarias. Esto nos ayuda a mejorar la cobertura de nuestro código y nos ayuda a escribir casos de prueba personalizados que podrían haber sido omitidos por los desarrolladores de software. Y ahí es donde los avances en el aprendizaje automático y la inteligencia artificial nos están ayudando a hacer esta automatización en la generación de casos de prueba unitarios y a mejorar la cobertura de pruebas en general, lo cual era más difícil de hacer manualmente si se escribían casos de prueba manuales por humanos. Hoy vamos a echar un vistazo a algunas de las herramientas disponibles hoy en día para los desarrolladores de software para automatizar las pruebas unitarias con la ayuda de JavaScript o TypeScript. La primera herramienta que vamos a ver es la herramienta Pony Code. Pony Code es una extensión impulsada por IA que ayuda a generar casos de prueba unitarios para ti y, en función de las funciones que escribas en tu base de código, te recomendará ciertos casos de prueba y generará automáticamente el archivo de pruebas unitarias para ti, y esto se hace con la ayuda de una interfaz gráfica muy intuitiva. Básicamente, puedes usar la extensión de VS Code o la interfaz de línea de comandos (CLI) proporcionada por Pony Code para escribir casos de prueba unitarios o automatizar los casos de prueba unitarios para un directorio completo. También puedes utilizar la herramienta CLI, como se mencionó, así como las acciones de GitHub proporcionadas por Pony Code, que te permiten combinar la generación de pruebas durante tu plataforma CI/CD. Veamos una demostración del producto. Y, por supuesto, si quieres explorar más a fondo cómo empezar con Pony Code,

2. Usando la extensión Pony Code para VS Code

Short description:

Pero para esta demostración, pasaremos rápidamente a VS code. Puedes instalar la extensión Pony Code para VS code, CLI o usarla como una acción de GitHub. La extensión Pony Code para VS code proporciona una interfaz gráfica de usuario donde puedes generar casos de prueba unitarios. Sugiere casos de prueba para aumentar la cobertura de pruebas. Puedes agregar o eliminar fácilmente casos de prueba utilizando la interfaz de usuario de Pony Code. Los archivos de prueba generados se crean automáticamente con Pony Code.

Te recomendaría que consultes docs.ponycode.com. Pero para esta demostración, pasaremos rápidamente a VS code. Y primero, básicamente vamos a ir a este enlace en particular para la documentación. Como puedes ver, puedes instalar la extensión Pony Code para VS code o el CLI o también puedes usarlo como una acción de GitHub, y es gratuito, gratuito para desarrolladores individuales. Si haces clic en la extensión de VS code e instalas dentro de tu VS code, se verá algo así. Si estás usando básicamente, puedes ver que aparecerá aquí como este icono de Pony Code dentro de tu VS code. Y puedes echar un vistazo a algunas de las cosas que tiene la página de inicio. Y esto básicamente te muestra cómo empezar rápidamente y generar casos de prueba unitarios dentro de tu aplicación. Entonces, el que vamos a usar es la extensión Pony Code para VS code. En este caso, en mi directorio de archivos, he creado una carpeta de Pony Code. Y aquí lo que he hecho es simplemente crear un archivo index.cs y he creado una función simple para sumar dos números. Primero, veamos cómo se verá básicamente. Tan pronto como escribas cualquier función, Pony Code automáticamente podrá detectar la función que has escrito, como una función de JavaScript. Y aquí, puedes ver directamente que obtenemos esta interfaz de usuario gráfica donde puedes ver que podemos hacer clic en esta prueba unitaria de Pony Code, que básicamente generará una interfaz de usuario. Y puedes ver que básicamente ofrece algunas sugerencias para casos de prueba unitarios que puedes escribir. Así que, puedes ver que estas son las sugerencias proporcionadas por Pony Code para, digamos, aumentar la cobertura de tus pruebas. Digamos que quiero tomar este ejemplo de A y B. Básicamente, como es una función de suma de dos números, tenemos dos variables y aquí toma estos dos valores. Entonces, lo que puedo hacer fácilmente es probar esta función en particular. Y ver que, ya sabes, básicamente genera la respuesta y puedo hacer clic en el signo de más. Si quiero agregar este caso de prueba específico dentro de mi, uh, Pony Code. Y lo que hace de inmediato es que ahora tenemos una nueva carpeta en su lugar y esta carpeta es la carpeta de Pony Code. Si voy y exploro esta carpeta de Pony Code, puedes ver que es el archivo index.ts.js. Este es un archivo de generación de pruebas automatizado, creado automáticamente, uh, que ha sido creado por Pony Code. Si básicamente echamos un vistazo a, como, ya sabes, lo que incluye, ¿verdad? Puedes ver que, uh, primero de todo, lo que hace, ha hecho. Es que ha, uh, como, ya sabes, importado nuestro archivo index.js y ahora ha descrito una función, uh, index.addToNumbers porque esa es una función que tenemos en nuestro archivo index.js que hemos creado y hemos generado un aquí donde está, uh, como, ya sabes, llegando a estos dos valores. Ahora, digamos que queremos agregar algunos casos de prueba adicionales, podemos hacer clic fácilmente en la interfaz de usuario, uh, en la interfaz de usuario de Pony Code y agregar eso. Entonces eso se agregará automáticamente, uh, dentro de tu función index.test.js. Como puedes ver, tenemos otra, uh, como, ya sabes, función, otra función que hemos agregado, otro caso de prueba que hemos agregado. De esta manera, puedes eliminar o eliminar, uh, estos casos de prueba y automáticamente se generará la prueba unitaria para ti.

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
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.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
Remix es un marco de trabajo web que te ofrece el modelo mental simple de una aplicación de múltiples páginas (MPA) pero el poder y las capacidades de una aplicación de una sola página (SPA). Uno de los grandes desafíos de las SPA es la gestión de la red que resulta en una gran cantidad de indirecciones y código defectuoso. Esto es especialmente notable en el estado de la aplicación que Remix elimina por completo, pero también es un problema en los componentes individuales que se comunican con un punto final de backend de un solo propósito (como una búsqueda de combobox, por ejemplo).
En esta charla, Kent demostrará cómo Remix te permite construir componentes de interfaz de usuario complejos que están conectados a un backend de la manera más simple y poderosa que hayas visto. Dejándote tiempo para relajarte con tu familia o lo que sea que hagas para divertirte.
Haciendo JavaScript en WebAssembly Rápido
JSNation Live 2021JSNation Live 2021
29 min
Haciendo JavaScript en WebAssembly Rápido
Top Content
JavaScript en el navegador se ejecuta muchas veces más rápido de lo que lo hacía hace dos décadas. Y eso sucedió porque los proveedores de navegadores pasaron ese tiempo trabajando en intensivas optimizaciones de rendimiento en sus motores JavaScript.Debido a este trabajo de optimización, JavaScript ahora se está ejecutando en muchos lugares además del navegador. Pero todavía hay algunos entornos donde los motores JS no pueden aplicar esas optimizaciones de la manera correcta para hacer las cosas rápidas.Estamos trabajando para resolver esto, comenzando una nueva ola de trabajo de optimización de JavaScript. Estamos mejorando el rendimiento de JavaScript para entornos completamente diferentes, donde se aplican reglas diferentes. Y esto es posible gracias a WebAssembly. En esta charla, explicaré cómo funciona todo esto y qué vendrá a continuación.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.

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
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
React Day Berlin 2022React Day Berlin 2022
86 min
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
WorkshopFree
Hussien Khayoon
Kahvi Patel
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres?
En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.
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.