¿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

Pedir pruebas a un asistente

Después de esta lección: Puedo pedir pruebas a un asistente y juzgar si de verdad comprueban algo.

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

Veinte pruebas en verde

Pides a un asistente pruebas para una función y te devuelve veinte, todas en verde. Parece un buen día. Pero una prueba en verde solo dice que el código no la contradijo. No dice que la prueba sirva para algo.

Aquí aprendes a pedir pruebas y a comprobar que cada una puede fallar.

Al final de esta lección

Nota

Puedo pedir pruebas a un asistente y juzgar si de verdad comprueban algo.

Palabras clave

PalabraQué significaEjemplo
Especificaciónla regla escrita de lo que debe hacer el código
Caso límiteun valor justo en el borde de una regla3 artículos
Versión rotauna copia del código con un fallo puesto a propósito
Prueba que no puede fallaruna prueba que pasa sea cual sea el código
Prueba espejouna prueba que calcula lo esperado con la fórmula del código

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

Pide las pruebas con la regla

Un asistente que solo ve el código escribe pruebas que el código cumple. Si el código tiene un fallo, las pruebas lo copian. Dale también la especificación: la regla escrita de lo que debe hacer.

Pide casos concretos: un valor justo antes del borde, uno en el borde y uno después. Pide que cada valor esperado salga de la regla, no de ejecutar la función.

Una petición posible

Esta es una petición posible, no la única. «Escribe pruebas para discount(total, items). Regla: con 3 artículos o más, el total baja un 10 %, en céntimos y redondeado. Quiero los casos 2, 3 y 0 artículos. Calcula cada valor esperado a mano desde la regla.»

Cuando lleguen las pruebas, no mires primero si pasan. Mira de dónde sale cada valor esperado.

Una prueba que no falla no prueba nada

Una prueba sirve si falla cuando el código está mal. Para comprobarlo, haz una versión rota: una copia con un fallo puesto a propósito, como un > donde iba >=. Pasa las pruebas por las dos versiones.

Una prueba que pasa en las dos no puede fallar. Una prueba espejo calcula lo esperado con la fórmula del código, así que siempre coincide con él.

Un ejemplo escrito a mano

Los cuatro ejemplos de abajo los escribimos nosotros, a mano. No son de ningún asistente. Sirven para ver qué pasa cuando una prueba es buena y cuando no lo es.

Los botones escriben archivos en la carpeta demo-tests 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-tests

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

Escribir el código bueno

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Regla: con 3 artículos o más, el total baja un 10 %.' 'function discount(total, items) {' '  if (items >= 3) return Math.round(total * 0.9);' '  return total;' '}' 'module.exports = { discount };' > demo-tests/descuento.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 versión rota

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// La misma función con un fallo puesto a propósito: > en lugar de >=.' 'function discount(total, items) {' '  if (items > 3) return Math.round(total * 0.9);' '  return total;' '}' 'module.exports = { discount };' > demo-tests/roto.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 las cuatro pruebas

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { discount } = require(\"./\" + process.argv[2]);' '' 'const tests = [' '  [\"2 artículos no tienen descuento\", discount(1000, 2) === 1000],' '  [\"3 artículos bajan un 10 %\", discount(1000, 3) === 900],' '  [\"el resultado es un número\", typeof discount(1000, 5) === \"number\"],' '  [\"5 artículos dan lo que da el código\", discount(1000, 5) === Math.round(1000 * 0.9)],' '];' 'for (const test of tests) {' '  console.log((test[1] ? \"pasa   \" : \"FALLA  \") + test[0]);' '}' > demo-tests/pruebas.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 las pruebas por el código bueno

Comando
docker exec -w /home/node/project agent node demo-tests/pruebas.js descuento

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

Pasar las pruebas por la versión rota

Comando
docker exec -w /home/node/project agent node demo-tests/pruebas.js roto

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: cuatro pruebas, dos códigos

PruebaCódigo buenoVersión rotaPuede fallar
2 artículos no tienen descuentopasapasaPoco: el fallo está en 3
3 artículos bajan un 10 %pasaFALLASí, es la que sirve
el resultado es un númeropasapasaNo: pasa con cualquier número
5 artículos dan lo que da el códigopasapasaNo: es una prueba espejo

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

Un error frecuente

Advertencia

Mucha gente cree que cuantas más pruebas en verde, mejor está el código. Con la versión rota pasaron tres de cuatro, y dos de esas tres no habrían fallado con ningún código. Cuenta las pruebas que pueden fallar, no las que pasan.

Para ir más lejos: tu propio cambio

En el laboratorio, elige un cambio que no sea el defecto de la caja, que es la tarea del laboratorio. Por ejemplo, una regla nueva: dos manzanas salen con un 5 % de descuento.

Escribe la regla con una frase. Pide pruebas al agente con esa frase. Haz una versión rota y pasa las pruebas por las dos. Anota cuáles no pudieron fallar.

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.