← Últimos artículos
💻 computer science

Heterogeneous Prompting and Execution Feedback for SWE Issue Test Generation and Selection

Este artículo presenta e-Otter++, un generador de pruebas novedoso que supera el desafío del código faltante o incorrecto en problemas de ingeniería de software mediante el aprovechamiento de la inducción heterogénea y la retroalimentación de ejecución para crear automáticamente pruebas de reproducción, logrando una tasa de estado de arte del 63% de fallo-a-paso en el benchmark TDD-Bench Verified.

Autores originales: Toufique Ahmed, Jatin Ganhotra, Avraham Shinnar, Martin Hirzel

Publicado 2026-01-26
📖 5 min de lectura🧠 Análisis profundo

Autores originales: Toufique Ahmed, Jatin Ganhotra, Avraham Shinnar, Martin Hirzel

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina que eres un detective tratando de resolver un misterio en una biblioteca enorme y desordenada (el código de software). Un cliente (el desarrollador) se acerca a ti y dice: "Algo anda mal con este libro, pero no puedo explicar exactamente qué, y no tengo un ejemplo específico de cuándo ocurre el error".

En el mundo del software, esto se llama un Problema de SWE (SWE Issue). Usualmente, para arreglar un error, necesitas una "prueba de reproducción" (reproduction test): un script específico que diga: "Si haces X, la librería debería fallar". Esto demuestra que el error existe. Pero a menudo, estos scripts aún no existen.

Este artículo presenta una nueva herramienta de detective llamada e-Otter++. Su trabajo es escribir automáticamente ese "script de fallo" (la prueba) leyendo simplemente la descripción desordenada del problema, incluso antes de que el arreglo real haya sido escrito.

Así es como funciona e-Otter++, explicado mediante analogías simples:

1. El Problema: El Detective "Ciego"

Normalmente, si le pides a una IA inteligente (un Modelo de Lenguaje Grande o LLM) que escriba una prueba, esta intentará adivinar. Si se lo pides una vez, podría equivocarse. Si se lo pides 10 veces con las mismas instrucciones exactas, es posible que solo te dé 10 versiones ligeramente diferentes de la misma suposición errónea. Es como pedirle a un amigo que describa una película que vio solo una vez; si se lo pides 10 veces, es probable que simplemente repita el mismo error.

2. El Primer Truco: "Prompting Heterogéneo" (La Fiesta de Disfraces)

Para obtener mejores suposiciones, e-Otter++ no solo le hace a la IA la misma pregunta 10 veces. En su lugar, cambia la forma en que hace la pregunta, como si pusiera a la IA en diferentes disfraces o le diera diferentes perspectivas.

  • Las "Máscaras": Imagina que la IA está mirando un rompecabezas. A veces, e-Otter++ cubre partes del rompecabezas (el contexto del código) para que la IA tenga que adivinar basándose en menos información. Otras veces, muestra solo piezas específicas. Esto la obliga a mirar el problema de una manera distinta.
  • Las "Metamorfosis" (Morphs): Imagina que el reporte del error está escrito con jerga confusa. e-Otter++ le pide a la IA que reescriba el reporte en diferentes estilos:
    • El "Estandarizador": Convierte una nota desordenada en un reporte formal y estructurado.
    • El "Simplificador": Elimina la jerga técnica confusa para que sea fácil de entender.
    • El "Eliminador" (Dropper): Elimina fragmentos de código específicos que podrían ser engañosos (como decirle a la IA que use una herramienta que la librería en realidad no tiene).
    • El "Pre-Pensador": Le pide a la IA que primero adivine una solución, y luego use esa suposición para escribir la prueba.

Al mezclar estas "Máscaras" y "Metamorfosis", e-Otter++ genera un grupo enorme y diverso de pruebas potenciales. Es como pedirle a 10 personas diferentes que describan la escena de un crimen, pero dándole a cada una un conjunto diferente de pistas y una forma distinta de hablar. Esto aumenta las posibilidades de que al menos una de ellas acierte.

3. El Segundo Truco: "Retroalimentación de Ejecución" (La Prueba de Funcionamiento)

Una vez que la IA genera una prueba, e-Otter++ no confía ciegamente en ella. Ejecuta la prueba en el código antiguo (la versión con el error).

  • El Objetivo: La prueba debe fallar. Pero debe fallar por la razón correcta.
  • El Problema: A veces la prueba falla debido a un error tonto (como un error tipográfico), no por el error real.
  • La Solución: e-Otter++ tiene un "Crítico" (otra IA) que observa el fallo. Si la prueba falló por la razón equivocada, el Crítico dice: "No, ese no es el error. Aquí está la línea específica que está mal, y aquí hay algo de código adicional que necesitas observar". Luego, el sistema reescribe la prueba con esta nueva información. Continúa este ciclo hasta que la prueba falle exactamente como dice la descripción del error.

4. El Tercer Truco: El "Parche Subrogado" (El Arreglo de Mentira)

Aquí está la parte más difícil: Para saber si una prueba es buena, necesita pasar en el código nuevo (el arreglo). ¡Pero el arreglo aún no existe! ¿Cómo puedes elegir la mejor prueba?

e-Otder++ utiliza un ingenioso método alternativo:

  1. Le pide a otro sistema de IA (llamado Agentless) que genere un montón de arreglos falsos (parches subrogados). Estos no son perfectos, pero se acercan.
  2. Ejecuta todas las pruebas candidatas contra estos arreglos falsos.
  3. Si una prueba pasa en el arreglo falso, es probable que sea una buena prueba.
  4. Finalmente, elige la única mejor prueba basándose en cuál cubre las partes más importantes del código.

Los Resultados: Un Gran Salto Adelante

El artículo probó este sistema en dos bancos de pruebas principales (TDD-Bench y SWT-bench).

  • El Mejor Anterior: Los sistemas anteriores podían generar una prueba funcional aproximadamente el 37% al 38% de las veces.
  • e-Otter++: Al usar estos nuevos trucos (cambiar la forma en que se hacen las preguntas y usar arreglos falsos para filtrar las respuestas), e-Otter++ elevó la tasa de éxito al 63% en un banco de pruebas y al 52.5% en el otro.

Por qué esto es importante

Los autores dicen que esto ayuda de dos maneras principales:

  1. Para los Humanos: Automatiza la parte aburrida del "Desarrollo Guiado por Pruebas" (escribir pruebas antes de arreglar errores), facilitando que los desarrolladores confirmen errores y los solucionen.
  2. Para los Agentes de IA: Muchos agentes de codificación por IA dependen de estas pruebas para saber si han arreglado un error. Al proporcionar mejores pruebas, e-Otter++ ayuda a que otros agentes de IA hagan su trabajo mejor también.

En resumen, e-Otter++ es una forma más inteligente, creativa y rigurosa de pedirle a la IA que escriba la "prueba" de que un error de software existe y ha sido corregido, sin necesidad de que un humano escriba esa prueba primero.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →