← Últimos artigos
💻 computer science

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

Este artigo apresenta o e-Otter++, um novo gerador de testes que supera o desafio de códigos ausentes ou incorretos em problemas de engenharia de software ao aproveitar o prompting heterogêneo e o feedback de execução para criar automaticamente testes de reprodução, alcançando uma taxa de falha-para-sucesso de estado da arte de 63% no benchmark TDD-Bench Verified.

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

Publicado 2026-01-26
📖 5 min de leitura🧠 Leitura aprofundada

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

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você é um detetive tentando resolver um mistério em uma biblioteca enorme e bagunçada (o código de um software). Um cliente (o desenvolvedor) vem até você e diz: "Algo está errado com este livro, mas não consigo explicar exatamente o quê, e não tenho um exemplo específico de onde o erro está acontecendo".

No mundo do software, isso é chamado de Problema de SWE (SWE Issue). Geralmente, para corrigir um bug, você precisa de um "teste de reprodução" — um script específico que diz: "Se você fizer X, a biblioteca deve travar". Isso prova que o bug existe. Mas, muitas vezes, esses scripts ainda não existem.

Este artigo apresenta uma nova ferramenta de detetive chamada e-Otter++. O trabalho dela é escrever automaticamente esse "script de travamento" (o teste) apenas lendo a descrição bagunçada do problema, antes mesmo que a correção real tenha sido escrita.

Aqui está como o e-Otter++ funciona, explicado através de analogias simples:

1. O Problema: O Detetive "Cego"

Normalmente, se você pedir a uma IA inteligente (um Large Language Model) para escrever um teste, ela tentará adivinhar. Se você perguntar uma vez, ela pode errar. Se você perguntar 10 vezes com as mesmas instruções exatas, ela pode apenas fornecer 10 versões ligeiramente diferentes do mesmo palpite errado. É como pedir a um amigo para descrever um filme que ele viu apenas uma vez; se você perguntar 10 vezes, ele pode apenas repetir o mesmo erro.

2. O Primeiro Truque: "Prompting Heterogêneo" (A Festa à Fantasia)

Para obter palpites melhores, o e-Otter++ não apenas faz a mesma pergunta à IA 10 vezes. Em vez disso, ele muda a forma como faz a pergunta, como se estivesse vestindo a IA com diferentes fantasias ou dando a ela diferentes perspectivas.

  • As "Máscaras": Imagine que a IA está olhando para um quebra-ceste. Às vezes, o e-Otter++ cobre partes do quebra-cabeça (o contexto do código) para que a IA tenha que adivinhar com menos informações. Outras vezes, mostra apenas peças específicas. Isso força a IA a olhar para o problema de forma diferente.
  • Os "Morphs" (Transformações): Imagine que o relatório do bug foi escrito com jargões confusos. O e-Otter++ pede à IA para reescrever o relatório em diferentes estilos:
    • O "Padronizador": Transforma uma nota bagunçada em um relatório formal e estruturado.
    • O "Simplificador": Remove jargões técnicos confusos para tornar a leitura fácil de entender.
    • O "Eliminador" (Dropper): Remove trechos de código específicos que possam ser enganosos (como dizer à IA para usar uma ferramenta que a biblioteca na verdade não possui).
    • O "Pré-Pensador": Pede à IA para adivinhar uma solução primeiro, e então usar esse palpite para escrever o teste.

Ao misturar essas "Máscaras" e "Morphs", o e-Otter++ gera um enorme e diverso conjunto de testes potenciais. É como pedir a 10 pessoas diferentes para descreverem uma cena de crime, mas dando a cada uma delas um conjunto diferente de pistas e uma maneira diferente de falar. Isso aumenta a chance de que pelo menos uma delas acerte.

3. O Segundo Truque: "Feedback de Execução" (O Teste de Campo)

Depois que a IA gera um teste, o e-Otter++ não confia apenas nela. Ele executa o teste no código antigo (a versão com bug).

  • O Objetivo: O teste deve falhar. Mas ele deve falhar pelo motivo certo.
  • O Problema: Às vezes, o teste falha devido a um erro bobo (como um erro de digitação), não por causa do bug real.
  • A Solução: O e-Otter++ possui um "Crítico" (outra IA) que analisa a falha. Se o teste falhou pelo motivo errado, o Crítico diz: "Não, esse não é o bug. Aqui está a linha específica que está errada, e aqui está algum código extra que você precisa observar". Então, o sistema reescreve o teste com essa nova informação. Ele mantém esse ciclo até que o teste falhe exatamente como a descrição do bug deveria prever.

4. O Terceiro Truque: O "Patch Surrogado" (O Conserto de Mentira)

Aqui está a parte mais difícil: Para saber se um teste é bom, ele precisa passar no código novo (a correção). Mas a correção ainda não existe! Como você escolhe o melhor teste?

O e-Otter++ usa um contorno inteligente:

  1. Ele pede a outro sistema de IA (chamado Agentless) para gerar vários consertos falsos (patches surrogados). Eles não são perfeitos, mas são próximos do ideal.
  2. Ele executa todos os testes candidatos contra esses consertos falsos.
  3. Se um teste passa no conserto falso, é provável que seja um bom teste.
  4. Finalmente, ele escolhe o único melhor teste com base em qual deles cobre as partes mais importantes do código.

Os Resultados: Um Grande Salto à Frente

O artigo testou este sistema em dois benchmarks principais (TDD-Bench e SWT-bench).

  • Melhor Anterior: Os sistemas de topo consegravam gerar um teste funcional cerca de 37% a 38% das vezes.
  • e-Otter++: Ao usar esses novos truques (mudar a forma como faz as perguntas e usar consertos falsos para filtrar as respostas), o e-Otter++ elevou a taxa de sucesso para 63% em um benchmark e 52,5% no outro.

Por Que Isso Importa

Os autores afirmam que isso ajuda de duas maneiras principais:

  1. Para Humanos: Automatiza a parte entediante do "Desenvolvimento Orientado a Testes" (escrever testes antes de corrigir bugs), tornando mais fácil para os desenvolvedores confirmarem bugs e corrigi-los.
  2. Para Agentes de IA: Muitos agentes de codificação por IA dependem desses testes para saber se corrigiram um bug. Ao fornecer melhores testes, o e-Otter++ ajuda outros agentes de IA a realizarem seus trabalhos melhor também.

Em resumo, o e-Otter++ é uma maneira mais inteligente, criativa e rigorosa de pedir à IA para escrever a "prova" de que um bug de software existe e que ele foi corrigido, sem precisar que um humano escreva essa prova primeiro.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →