Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering para programación, Unidad 7 — Prompts para testing, 7.2 — Verificación del código generado ·

Falsos positivos

Falsos positivos

Introducción

En la etapa de testing, es crucial distinguir entre errores reales y falsos positivos. Un falso positivo ocurre cuando un test falla por una razón que no corresponde a un error en el código, lo cual puede llevarnos a desperdiciar tiempo innecesariamente en investigaciones y correcciones. Es importante tener en cuenta que los modelos de lenguaje (LLMs) pueden generar código con errores menores o subjetivos que podrían ser interpretados como falsos positivos. Aprender a detectar y manejar estos falsos positivos es fundamental para un desarrollo eficiente.

Explicación principal con ejemplos

Cuando se generan pruebas por LLM, puede suceder que algunas condiciones específicas o casos límite no sean cubiertos adecuadamente. Por ejemplo:

def divide(a, b):
    return a / b

# Prueba generada por LLM:
def test_divide():
    assert divide(10, 2) == 5
    assert divide(9, 3) == 3
    assert divide(8.5, 4.25) == 2
    # Falso positivo: el siguiente caso debería ser considerado como una condición especial
    assert divide(0, 0) == 1

En este ejemplo, la prueba assert divide(0, 0) == 1 es un falso positivo. El caso en que dos números se dividen entre cero no tiene resultado definido y generalmente genera una excepción o error. Sin embargo, el LLM ha generado esa línea de código sin considerar esa condición especial.

Errores típicos / trampas

  1. Condicionales sin manejo adecuado: El LLM puede generar pruebas que no tienen en cuenta condiciones especiales como divisiones entre cero o operaciones con datos nulos.
  2. Casos límite no cubiertos: Los casos extremos, como valores máximos y mínimos permitidos por el sistema, pueden ser omitidos en las pruebas generadas.
  3. Ejecución inesperada de código: El LLM puede generar pruebas que involucran ejemplos de ejecuciones inusuales o imprevistas del programa.

Checklist accionable

  1. Revisar condiciones especiales: Verificar si el test considera todas las posibles excepciones, como divisiones entre cero, operaciones con datos nulos y valores extremos.
  2. Incluir casos límite: Asegurar que se cubren todos los casos límites, tanto en valores máximos como mínimos permitidos por la aplicación.
  3. Ejecutar pruebas manualmente: Hacer pruebas manuales para verificar las condiciones específicas y excepciones no cubiertas por el test automático.
  4. Comparar con documentación oficial: Comparar los tests generados con la documentación oficial del sistema, buscando coincidencias en posibles comportamientos inesperados.
  5. Revisar logs de error: Analizar los logs de error para identificar cualquier excepción no capturada por las pruebas.

Cierre

Los falsos positivos pueden ser una gran distracción durante el proceso de desarrollo y testing, especialmente cuando se utilizan modelos de lenguaje para generar tests. Es fundamental aprender a detectar estos errores y asegurarse de que nuestras pruebas son precisas y útiles.

Siguientes pasos

  1. Estudiar más sobre falsos positivos: Comprender mejor el concepto y cómo evitarlos puede mejorar significativamente la eficiencia del desarrollo.
  2. Practicar con diferentes LLMs: Experimentar con varios modelos de lenguaje para generar pruebas y aprender a identificar los errores comunes.
  3. Participar en comunidades: Unirte a comunidades online o locales donde se discute sobre el uso de IA en desarrollo, lo que puede ayudarte a obtener nuevas perspectivas e ideas.

Asegúrate de revisar cada test cuidadosamente para garantizar que esté libre de falsos positivos y sea efectivo.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).