¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Depurar con un asistente

Después de esta lección: Puedo dar a un asistente lo que necesita para encontrar un fallo y comprobar su arreglo.

Lección de 60 min7 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Arreglé el fallo y salió otro

Pegas en el asistente una frase: «no funciona, arréglalo». El asistente adivina y cambia tres cosas a la vez. La prueba pasa, pero ahora falla otra que antes iba bien.

Depurar con un asistente funciona mejor cuando le das datos y compruebas cada arreglo. Aquí aprendes cómo.

Al final de esta lección

Nota

Puedo dar a un asistente lo que necesita para encontrar un fallo y comprobar su arreglo.

Palabras clave

PalabraQué significa
Reproducirhacer que el fallo ocurra siempre con los mismos datos
Prueba que fallala prueba más pequeña que muestra el fallo
Hipótesisuna explicación posible que se puede comprobar
Un cambio cada vezprobar un arreglo solo, antes de añadir otro
Regresiónalgo que iba bien y falla después de un arreglo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Dale lo que necesita para encontrar el fallo

Un asistente que solo oye «no funciona» tiene que adivinar. Dale cuatro cosas: la prueba que falla, el mensaje de error exacto, lo que ya probaste y el trozo de código donde crees que está.

Pide primero una hipótesis, una explicación de por qué falla. Pídele que no cambie nada hasta que la hayas leído.

Una petición posible

Esta es una petición posible, no la única. «Esta prueba falla: la media de [30, 60, 90] da 90 y debe dar 60. Esta es la función. Ya probé a cambiar el bucle y no cambió nada. Explica por qué falla, con una hipótesis, y no cambies nada todavía.»

Después de leer la hipótesis, tú decides si tiene sentido.

Comprueba el arreglo con todos los casos

Un arreglo que hace pasar la prueba que falla puede romper otra. Eso es una regresión. Por eso, tras cada arreglo, pasa todos los casos, no solo el que fallaba.

Prueba un cambio cada vez. Si el asistente propone varios, aplica uno, mira los casos y solo entonces pasa al siguiente.

Un ejemplo escrito a mano

La función con fallo y los dos arreglos de abajo los escribimos nosotros, a mano. Ningún asistente los escribió.

Los botones escriben archivos en la carpeta demo-depurar de tu proyecto. No tocan el programa de la caja.

Crear la carpeta de la demostración

Comando
docker exec -w /home/node/project agent mkdir -p demo-depurar

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir la función y arreglos, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Precio medio de una lista de precios en céntimos. Una lista vacía da 0.' 'function original(prices) {' '  let sum = 0;' '  for (const price of prices) sum = sum + price;' '  return sum / (prices.length - 1);' '}' '// Cambio A: divide entre la longitud y trata la lista vacía aparte.' 'function candidateA(prices) {' '  if (prices.length === 0) return 0;' '  let sum = 0;' '  for (const price of prices) sum = sum + price;' '  return sum / prices.length;' '}' > demo-depurar/medias.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir la función y arreglos, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Cambio B: divide entre la longitud, sin tratar la lista vacía.' 'function candidateB(prices) {' '  let sum = 0;' '  for (const price of prices) sum = sum + price;' '  return sum / prices.length;' '}' 'module.exports = { original, candidateA, candidateB };' >> demo-depurar/medias.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir los tres casos

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const medias = require(\"./medias\");' 'const fn = medias[process.argv[2]];' '' 'const cases = [[[30, 60, 90], 60], [[50], 50], [[], 0]];' 'for (const item of cases) {' '  const got = fn(item[0]);' '  const name = \"media de [\" + item[0].join(\", \") + \"]\";' '  console.log((got === item[1] ? \"pasa   \" : \"FALLA  \") + name + \" esperado \" + item[1] + \" obtenido \" + got);' '}' > demo-depurar/casos.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pasar los casos por la función con fallo

Comando
docker exec -w /home/node/project agent node demo-depurar/casos.js original

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pasar los casos por el arreglo A

Comando
docker exec -w /home/node/project agent node demo-depurar/casos.js candidateA

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pasar los casos por el arreglo B

Comando
docker exec -w /home/node/project agent node demo-depurar/casos.js candidateB

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: un fallo y dos arreglos

CasoOriginalArreglo AArreglo B
[30, 60, 90] debe dar 60FALLA (90)pasapasa
[50] debe dar 50FALLA (Infinity)pasapasa
[] debe dar 0pasapasaFALLA (NaN)

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que si el arreglo hace pasar la prueba que fallaba, el fallo está resuelto. El arreglo B arregló los dos casos que fallaban y rompió el tercero. Pasa siempre todos los casos y pide que el arreglo explique el fallo.

Para ir más lejos: tu propio fallo

En el laboratorio, no uses el defecto de la caja, que es la tarea del laboratorio. Planta un fallo tuyo en una función nueva, por ejemplo una que calcule el precio de dos manzanas con una oferta.

Escribe la prueba que falla y la petición con las cuatro cosas. Pide una hipótesis antes del arreglo y pasa todos los casos después.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.