Pruebas de regresión para agentes de IA

Asegura que nuevas versiones de agentes no rompan comportamientos existentes.
En esta página
  1. Idea en 30 segundos
  2. Problema
  3. Cuándo usarlo
  4. Implementación
  5. Cómo funciona en una ejecución
  6. 1. Fijar baseline y versión de dataset
  7. 2. Ejecutar candidate en las mismas condiciones
  8. 3. Calcular diff con umbrales de riesgo
  9. 4. Revisar casos, no solo summary
  10. 5. Añadir regression gate en CI
  11. Notas para QA y automatización
  12. Errores típicos
  13. Sobrescritura automática de baseline
  14. Condiciones de ejecución distintas entre baseline y candidate
  15. Comparar solo métricas globales
  16. Sin umbrales claros para CI gate
  17. Casos inestables en el set de regression
  18. Resumen
  19. FAQ
  20. Qué sigue

Idea en 30 segundos

Regression testing para agentes de IA compara candidate con baseline sobre los mismos casos y bajo las mismas condiciones.

Su valor principal es mostrar exactamente dónde cambió el comportamiento del sistema después de cambios en modelo, prompts, herramientas o runtime.

Problema

Sin regression testing, el equipo suele ver solo un "mejor/peor" general, pero no entiende qué se rompió exactamente.

Consecuencias típicas:

  • regresiones sutiles llegan a release;
  • escenarios críticos empeoran aunque el resultado promedio parezca normal;
  • es difícil explicar si la causa está en cambios de código, modelo, prompt o condiciones de ejecución.

Al final, la release parece segura, pero en producción aparecen incidentes repetidos.

Cuándo usarlo

Regression testing es necesario cada vez que los cambios puedan afectar el comportamiento del agente:

  • se actualizó la versión del modelo;
  • se cambió el prompt o reglas de policy;
  • se agregaron o rediseñaron herramientas;
  • se cambiaron ajustes de runtime (timeouts, retries, límites).

Regression testing responde una pregunta: qué cambió entre versiones del sistema.

También conviene ejecutarlo después de incidentes, para verificar que el arreglo no rompió escenarios cercanos.

Implementación

En la práctica, regression testing sigue una regla: mismos casos, mismas condiciones de ejecución y comparación contra baseline fijado. Los ejemplos de abajo son esquemáticos y no dependen de un framework concreto.

Cómo funciona en una ejecución

Una ejecución de regression suele correr el mismo eval harness, pero comparando resultados contra baseline.

Ciclo corto de una ejecución de regression
  • Dataset version - fijar una versión de casos para ambas ejecuciones.
  • Baseline report - usar reporte de referencia como punto de comparación.
  • Candidate run - ejecutar la nueva versión del agente en condiciones iguales.
  • Diff compare - calcular diferencias por caso y por métricas clave.
  • CI gate - bloquear o permitir release según umbrales.

1. Fijar baseline y versión de dataset

PYTHON
regression_context = {
    "dataset_version": "golden-v1.4",
    "baseline_report": "reports/baseline-golden-v1.4.json",
    "model_version": "gpt-4o-2024-08-06",
}

baseline debe quedar ligado a una versión concreta de dataset, modelo y condiciones de ejecución.

2. Ejecutar candidate en las mismas condiciones

PYTHON
def run_candidate(agent, dataset, runtime_config):
    return run_eval_suite(
        agent=agent,
        dataset=dataset,
        timeout_sec=runtime_config["timeout_sec"],
        max_steps=runtime_config["max_steps"],
        tool_mocks=runtime_config["tool_mocks"],
    )

Sin condiciones iguales, diff se vuelve ruidoso rápido y pierde valor diagnóstico.

3. Calcular diff con umbrales de riesgo

PYTHON
def compare_summary(candidate, baseline):
    deltas = {
        "task_success_drop": baseline["task_success_rate"] - candidate["task_success_rate"],
        "latency_growth": candidate["p95_latency"] - baseline["p95_latency"],
        "cost_growth": candidate["avg_token_cost"] - baseline["avg_token_cost"],
    }
    return deltas

Los umbrales deben definirse explícitamente para que la decisión de release sea determinista.

4. Revisar casos, no solo summary

PYTHON
def critical_case_regressions(case_diffs):
    bad = []
    for diff in case_diffs:
        if diff["status"] == "regressed" and "critical" in diff["tags"]:
            bad.append(diff["case_id"])
    return bad

Aunque el summary se vea bien, caídas en casos críticos deben bloquear release.

5. Añadir regression gate en CI

PYTHON
deltas = compare_summary(candidate_summary, baseline_summary)
critical_failures = critical_case_regressions(case_diffs)

if deltas["task_success_drop"] > 0.03:
    fail("gate_failed:task_success_drop")
if deltas["latency_growth"] > 800:  # ms
    fail("gate_failed:latency_growth")
if critical_failures:
    fail(f"gate_failed:critical_cases:{critical_failures}")

Regression gate debe ser obligatorio para cambios que impactan modelo, prompts, herramientas o runtime.

Notas para QA y automatización

Los equipos de QA suelen ejecutar regression tras actualizar modelo o prompt para ver de inmediato el diff de comportamiento frente a baseline.

En práctica esto funciona como ejecución CI obligatoria para cambios de configuración model/prompt y como suite completa programada de regression para detectar degradaciones lentas.

Errores típicos

Sobrescritura automática de baseline

El equipo pierde un punto de comparación estable y el historial de regresiones se vuelve difuso.

Causa típica: baseline se actualiza automáticamente sin una decisión explícita.

Condiciones de ejecución distintas entre baseline y candidate

Se comparan ejecuciones con timeouts, modelo o mocks diferentes.

Causa típica: no existe runtime config fijo para regression.

Comparar solo métricas globales

El resultado promedio parece correcto, pero los casos críticos se degradan.

Causa típica: el reporte no incluye diff por caso.

Sin umbrales claros para CI gate

La decisión de release se toma "a ojo" y la señal de regression se pierde.

Causa típica: umbrales no fijados en reglas de CI.

Casos inestables en el set de regression

El mismo caso a veces pasa y a veces falla, y el equipo deja de confiar en el reporte.

Causa típica: escenarios flaky entraron al set principal sin estabilización.

Resumen

En resumen
  • Regression testing compara candidate y baseline sobre los mismos casos.
  • Un diff válido solo es posible con dataset y condiciones de runtime idénticos.
  • La decisión de release debe basarse en umbrales y casos críticos, no en impresión de summary.
  • Baseline debe versionarse con la misma disciplina que código y dataset.

FAQ

Q: ¿En qué se diferencia regression testing de eval harness?
A: Eval harness ejecuta una corrida estandarizada, y regression testing usa esa corrida para comparar candidate contra baseline.

Q: ¿Cuándo actualizar baseline?
A: Después de una release confirmada, cuando el equipo acepta explícitamente el nuevo comportamiento como referencia.

Q: ¿Qué suele bloquear una release en regression gate?
A: Degradación en casos críticos, caída de task_success_rate, aumento fuerte de latency o de token cost.

Q: ¿Bastan casos sintéticos para regression?
A: Para empezar sí, pero una señal más estable sale de combinar casos sintéticos con escenarios replay de producción.

Qué sigue

Después de configurar regression gate, conecta casos estables mediante Golden Datasets y corridas estandarizadas mediante Eval Harness. Para validar lógica local usa Unit Testing, y analiza incidentes con Replay and Debugging.

⏱️ 5 min de lecturaActualizado 13 de marzo de 2026Dificultad: ★★☆
Integrado: control en producciónOnceOnly
Guardrails para agentes con tool-calling
Lleva este patrón a producción con gobernanza:
  • Presupuestos (pasos / topes de gasto)
  • Permisos de herramientas (allowlist / blocklist)
  • Kill switch y parada por incidente
  • Idempotencia y dedupe
  • Audit logs y trazabilidad
Mención integrada: OnceOnly es una capa de control para sistemas de agentes en producción.
Autor

Esta documentación está curada y mantenida por ingenieros que despliegan agentes de IA en producción.

El contenido es asistido por IA, con responsabilidad editorial humana sobre la exactitud, la claridad y la relevancia en producción.

Los patrones y las recomendaciones se basan en post-mortems, modos de fallo e incidentes operativos en sistemas desplegados, incluido durante el desarrollo y la operación de infraestructura de gobernanza para agentes en OnceOnly.