Volver a recursos del Bloque 5

CÁPSULA DE BASE

Testing y debugging

Convierte expectativas en pruebas y errores en hipótesis comprobables.

Objetivo técnico

Al terminar podrás escribir un test pequeño para una regla de RAG y diagnosticar en qué frontera falla. Testing comprueba una expectativa repetible; debugging busca evidencia para explicar un resultado inesperado.

Antes de empezar

Necesitas un proyecto TypeScript con Vitest. Instálalo con npm install -D vitest y agrega "test": "vitest run" a scripts. La función del ejemplo no llama servicios externos.

Paso a paso

  1. Crea src/answer.ts:
export function canAnswer(chunks: string[]): boolean {
  return chunks.length > 0;
}
  1. Crea src/answer.test.ts:
import { describe, expect, it } from 'vitest';
import { canAnswer } from './answer';

describe('canAnswer', () => {
  it('rejects a question without retrieved evidence', () => {
    expect(canAnswer([])).toBe(false);
  });

  it('allows an answer when evidence exists', () => {
    expect(canAnswer(['chunk relevante'])).toBe(true);
  });
});
  1. Ejecuta npm test.
  2. Cambia temporalmente la implementación por return true. Mira fallar el primer test y lee: nombre del caso, valor recibido y esperado.
  3. Restaura la regla. Si un sistema real falla, registra requestId, cantidad de chunks y etapa; no el documento completo.

Verificación

Primero debes observar un fallo causado deliberadamente y después dos tests verdes. Eso demuestra que el test detecta la regresión, no que pasa por accidente.

Errores frecuentes

  • Probar el mock en vez de la regla del dominio.
  • Cambiar test e implementación a la vez y perder la señal roja.
  • Loggear demasiado sin identificar la etapa: ingestión, retrieval o generación.

Práctica

Agrega una regla: un array con strings vacíos tampoco permite responder. Escribe el test primero, observa rojo, implementa el filtro y vuelve a verde.

Puente al RAG

Las evaluaciones del Bloque 5 necesitan diferenciar “no recuperó evidencia” de “generó una mala respuesta”. Este test crea la primera frontera observable.

Fuente primaria

Getting Started — documentación oficial de Vitest