9.1 Aparición de bugs
La depuración de software es el proceso de encontrar y corregir errores o bugs en un programa. Es la parte más interesante del desarrollo de software, que ayuda a asegurar el funcionamiento correcto de los programas.
Historia del término "bug"
El término "bug" (error) en el contexto de los programas informáticos comenzó a utilizarse en los años 40. Aunque el concepto de "bugs" existía antes de la aparición de los ordenadores, refiriéndose a fallos mecánicos en varios dispositivos.
El primer caso documentado del uso del término "bug" en la técnica informática fue con un equipo que trabajaba en la computadora Mark II en la Universidad de Harvard en 1947(!). El equipo descubrió que uno de los relés de la máquina no funcionaba porque una polilla había quedado atrapada en él. Retiraron el insecto y registraron este hallazgo como "el primer caso real de detección de un insecto" (literal bug).
Aunque no fue el primer caso de uso del término "bug" para referirse a un error, este incidente se hizo conocido y ayudó a popularizar el término «bug».
Depuración de un programa
La depuración es el proceso de encontrar, diagnosticar y corregir bugs en el software. El proceso de depuración incluye varias etapas:
- Detección del error: identificación de los síntomas que indican la presencia de un error en el programa.
- Reproducción del error: creación de condiciones en las que el error se manifiesta de nuevo para entender mejor su naturaleza.
- Diagnóstico del problema: uso de diversas herramientas y métodos para analizar el código y encontrar la causa del error.
- Corrección del error: realización de cambios en el código para eliminar el error.
- Pruebas: verificación de la corrección y prueba del programa para asegurarse de que el error se haya eliminado y no hayan surgido nuevos problemas.
Así que bug es el nombre general para cualquier error en los programas, y debug es el proceso de encontrar y corregir esos errores.
9.2 Herramientas y métodos de depuración
Registro (Logging)
Añadir registros al código del programa permite rastrear su ejecución y obtener información sobre el estado de las variables y operaciones en diferentes puntos de la ejecución del programa. Para el registro en JavaScript hay una excelente biblioteca — winston.
Ejemplo de uso de registro:
const { createLogger, format, transports } = require('winston');
// Creamos un logger con nivel de depuración
const logger = createLogger({ level: 'debug' });
// Función de división
function divide(a, b) {
logger.debug(`Dividiendo ${a} entre ${b}`);
if (b === 0) {
logger.error("¡Intento de división por cero!");
return null;
}
return a / b;
}
// Ejemplo de uso de la función
const result = divide(10, 2);
console.log(result); // Mostrará: 5
Uso de depuradores (Debuggers)
Los depuradores son herramientas que permiten a los desarrolladores ejecutar el programa paso a paso, establecer puntos de interrupción (breakpoints), verificar valores de variables y cambiarlos durante la ejecución del programa.
Depuradores populares para JavaScript:
- Chrome DevTools: depurador integrado en el navegador Google Chrome
- Firefox Developer Tools: depurador integrado en el navegador Mozilla Firefox
- Node.js Debugger: depurador integrado para JavaScript del lado del servidor en Node.js
- Visual Studio Code Debugger: depurador integrado en el editor de Visual Studio Code
Ejemplo de uso de depurador en Node.js:
// Importar el módulo de depuración integrado
const { inspect } = require('util');
// Ejemplo de función con error
function faultyFunction(a, b) {
debugger; // Establecer un punto de interrupción
let result = a / b;
return result;
}
// Llamada a la función con error
console.log(faultyFunction(10, 0));
Cuando el programa alcanza debugger, se detiene, y puedes usar comandos del depurador como avanzar (step over), entrar (step into), salir (step out), verificar valores de variables y otros.
Vamos a estudiar la depuración de programas usando el depurador integrado en Intellij IDEA (se necesita la versión Ultimate Edition).
9.3 Uso de debug
En general, el debug implica el uso activo de herramientas y prácticas de depuración para identificar y corregir errores.
Pasos de depuración:
- Establecer puntos de interrupción: establece puntos de interrupción en el código para detener la ejecución del programa en los lugares que te interesan.
- Ejecución paso a paso: ejecuta el programa paso a paso, observando los cambios en el estado del programa y los valores de las variables.
- Análisis de variables: estudia los valores de las variables y expresiones en varias etapas de la ejecución del programa para identificar datos incorrectos o errores lógicos.
- Corrección de errores: realiza cambios en el código para eliminar los errores encontrados.
- Pruebas repetidas: después de corregir los errores, realiza pruebas en el programa para asegurarte de que el error se haya eliminado y no hayan surgido nuevos problemas.
Parece sencillo, ¿verdad? En la próxima lección, vamos a revisar cada etapa en detalle :)
GO TO FULL VERSION