Lo que aprendí sobre la calidad del software de los 10 proyectos de Javascript más populares en Github

Rate this content
Bookmark

Es muy común que los equipos tengan procesos de revisión de código y esto suele suceder a través de las solicitudes de extracción. Cada comentario representa un paso hacia la mejora de la calidad del software, sin embargo, existe una amplia variedad de puntos de vista. La antigüedad del equipo, el propio equipo, la empresa, el tiempo restante, la mentalidad, los acuerdos internos, todo esto impacta la forma de revisar el código.

Como probador, necesito entender qué sucede en el código y al revisarlo, para identificar fallas en el proceso de desarrollo y mejorar mi estrategia de prueba.

En esta charla, traeré los resultados de la investigación que realicé analizando los comentarios contenidos en las solicitudes de extracción de los 10 proyectos de Github más populares creados en Javascript y aportaré algunas ideas relacionadas con lo que descubrí. Entre ellos: cuáles son las características de calidad del software que más ejercen los Devs, cuáles son los puntos débiles en su proceso de desarrollo, dónde podemos mejorar nuestras pruebas para anticipar fallas y herramientas que se pueden utilizar para probar de manera más completa, entre otros.

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

FAQ

El propósito principal de la charla es compartir aprendizajes obtenidos tras una investigación sobre las prácticas de revisión de código en las diez bibliotecas de JavaScript más utilizadas en GitHub.

El proceso de revisión de código es una práctica en la cual los compañeros de equipo revisan el código propuesto en un Pull Request (PR) para proporcionar comentarios y perspectivas, lo cual puede llevar a la aprobación y fusión del código o a requerir más trabajo en él.

Las características de calidad del software según la ISO 25010 incluyen idoneidad funcional, mantenibilidad, performance, seguridad, usabilidad, fiabilidad, compatibilidad y portabilidad.

El descubrimiento clave fue que el 75% de los comentarios en las solicitudes de extracción estaban relacionados con la mantenibilidad, enfocándose en la legibilidad y testeabilidad del código.

Se sugiere utilizar bots para realizar comprobaciones automáticas durante la revisión de código, como verificar el tamaño de los archivos o la presencia de pruebas flake, lo que ayuda a mejorar la eficiencia del proceso.

Se recomienda establecer y compartir directrices claras de codificación, utilizar herramientas automatizadas como bots y linkers, y fomentar un conocimiento técnico profundo dentro del equipo.

Se aprendió que es importante escribir pruebas valiosas, verificar la lógica de implementación y asegurarse de que las pruebas existentes se ejecuten correctamente antes de considerar una solicitud de extracción.

Se aconseja realizar un análisis de riesgos para decidir qué características de calidad del software pueden ser comprometidas temporalmente para acelerar un hotfix, asegurando que los riesgos son conocidos y controlados.

Júlio de Lima
Júlio de Lima
27 min
07 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla discute el proceso de revisión de código y la importancia de la calidad del software. Enfatiza la necesidad de mantenibilidad en el código y el uso de directrices adaptadas al equipo. La charla también destaca la importancia de la idoneidad funcional y los desafíos de la revisión de código. Se recomienda la automatización y la documentación para mejorar las revisiones de código y garantizar la calidad del software.

1. Introducción al Proceso de Revisión de Código

Short description:

Estoy aquí hoy para compartir lo que he aprendido de investigar las bibliotecas de JavaScript más utilizadas en GitHub. Vamos a entender las mejores prácticas para la revisión de código. El proceso de revisión de código implica crear código, abrir una solicitud de extracción y tener compañeros de equipo que revisen y proporcionen perspectivas. Los desarrolladores revisan el código basándose en estándares, legibilidad y si funciona correctamente. Las ideas para la revisión de código provienen de la experiencia y pueden ser empíricas. Las pruebas de software utilizan el estándar ISO 25010.

Entonces, estoy muy... Es un placer estar aquí hoy con ustedes. Gracias a toda la organización que hace esto posible y, definitivamente, es un honor estar aquí hoy. Esta es mi primera vez hablando aquí en Europa, así que, es otro recuerdo, momento en mi vida y mi carrera. Y espero que ustedes también puedan disfrutar de esta charla. Así que, ya me presentaron, así que voy a ahorrarles de escuchar esto de nuevo. La idea aquí en esta charla es compartir con ustedes lo que he aprendido después de hacer una investigación sobre las diez bibliotecas de JavaScript más utilizadas en GitHub. Y trato de estructurar esto de una manera que podamos entender un poco más sobre las mejores prácticas que estos chicos han estado utilizando al revisar el código. Y ese es el enfoque. La idea hoy no es hablar de las características que tienen las bibliotecas, sino aprender más sobre cómo están revisando el código que se envía a estos repositorios. Así que, vamos a avanzar y pensar un poco más sobre el proceso de revisión de código, ¿verdad? El proceso de revisión de código es básicamente una forma sencilla para las personas que están codificando todos los días, ¿verdad? Es algo que es bastante sencillo, pero para las personas que están en el lado de las pruebas, a veces no saben exactamente cómo funciona. Así que, primero, tenemos el código que se crea. Entonces, el desarrollador va allí y crea un fragmento de código, o incluso los probadores, dependiendo de cómo ustedes están estructurando la forma en que producen su código de automatización de pruebas, ¿verdad? Pero esta es la primera parte para crear un código. Luego la persona que creó este código abre un PR. Y después de abrir un PR, básicamente tenemos a nuestros compañeros de equipo yendo allí y revisando esto y proporcionándonos algunas perspectivas, las visiones que tienen. Y luego de eso, podemos, si tenemos la aprobación, podemos seguir adelante y fusionar el código. Si no, necesitamos trabajar en esta solicitud de extracción, o en este fragmento de código que estamos produciendo, ¿verdad? Lo cierto es que hay una actividad muy, cómo decirlo, muy importante que ocurre durante este proceso que es básicamente tener a estos compañeros de equipo mirando el código y revisándolo. La pregunta es, ¿cómo lo hacen los desarrolladores? Y la respuesta es magia, ¿verdad? En realidad, déjenme preguntarles a ustedes que son desarrolladores. Díganme, ¿qué tienen en mente cuando están revisando un código? Es tu turno. Sí, estamos haciendo estándares, ¿verdad? ¿Qué más? Esa es una muy buena pregunta. Esa es una muy buena respuesta también. Legibilidad. ¿Qué más? Sí, si el código hace lo que debería hacer, ¿verdad? Sin embargo, ¿de dónde vienen estas ideas? Sí, de la experiencia, ¿verdad? La forma en que lo haces. No estoy diciendo que todos lo hagan de esta manera, ¿verdad? Pero a veces lo hacemos de una manera empírica, ¿verdad? Basado en nuestra experiencia. Entonces, nos hace ser, cómo dicen, empíricos, ¿verdad? Así que, si todos aquí levantaran la mano y compartieran un pensamiento sobre cómo revisar, seríamos la persona más sabia en toda esta conferencia, ¿verdad? Hay otra forma de hacerlo. En las pruebas de software, utilizamos un estándar llamado ISO 25010. ¿Han oído hablar de él? ¿Sí? Levanten la mano. Okay,

2. Calidad del Software y Revisión de Código

Short description:

Existen ocho características de calidad del software, incluyendo la idoneidad funcional y la mantenibilidad. La mantenibilidad se centra en hacer el código legible, testeable y mejor. En un estudio de investigación, el 75% de los comentarios en las solicitudes de extracción estaban relacionados con la mantenibilidad. Para entender cómo los repositorios de pruebas de software manejan las revisiones de código, analicé las solicitudes de extracción cerradas. Te animo a que pruebes este método de investigación en tu empresa para obtener información sobre la calidad.

bien. Hagan un saludo. Tenemos pulgares arriba. Bien. Entonces, básicamente hay ocho características de calidad del software. Si el software funciona como se espera, se clasifica como idoneidad funcional. Si el código es legible, se llama ¿dónde está? Bien, mantenibilidad. ¿De acuerdo? Hay grupos de cosas. Y lo que sucede es que cada vez que le pregunto a un desarrollador qué piensa que debería hacer durante la revisión, lo que escuché más comúnmente, más frecuentemente es relacionado con la mantenibilidad. ¿De acuerdo? Se trata de hacer el código legible. Se trata de hacer el código testeable. Se trata de hacer el código mejor. Eso es todo acerca de la mantenibilidad. Hice una rápida investigación en uno de los equipos con los que estaba trabajando. Y revisé 52 solicitudes de extracción y más de 300 comentarios en las solicitudes de extracción. ¿Qué aprendí? El 75% de los comentarios estaban relacionados con la mantenibilidad.

¿De acuerdo? La cuestión es, cómo los repositorios de software de testing más utilizados, las bibliotecas de software de testing, cómo dicen, hacen cuando las personas que contribuyen a este proyecto están revisando las solicitudes de extracción. Esta es la pregunta que tenía. Y entonces empecé a encontrar las respuestas. Y lo que hice fue básicamente ir uno por uno a estos repositorios y luego filtrar sólo las solicitudes de extracción cerradas. ¿De acuerdo? Porque ya están, cómo dicen, establecidas. Todo lo que debería tomar como una decisión ya se hizo. ¿Correcto? Eso es lo que hice. Y les recomiendo que recuerden esta diapositiva. Porque realmente me gustaría que ustedes intentaran hacer esto en sus empresas. Al menos para un repositorio. Y les prometo, aprenderán mucho sobre cómo ustedes entienden la calidad en ese repositorio específico. ¿De acuerdo? Así que, intenten reproducir este método de investigación. Así que, el segundo fue abrir la solicitud de extracción que tiene comentarios. ¿De acuerdo? Porque a veces tenemos solicitudes de extracción que son simplemente aprobadas. Mágicamente. ¿De acuerdo? Simplemente son aprobadas. Y luego ignorar las solicitudes de extracción que sólo tienen interacciones de bots o las

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.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
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.

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.
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
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