Skip to main content

Command Palette

Search for a command to run...

Passar nos testes não é suficiente

O que o benchmark SWE-Gate revelou sobre agentes de código

Updated
8 min readView as Markdown
Passar nos testes não é suficiente
A
Engenheiro de Software Sênior e Arquiteto de Soluções com mais de 20 anos de experiência construindo sistemas distribuídos e de alta criticidade. Autor da série de livros "Engenharia de Software Assistida por IA". Escrevo sobre arquitetura de software, ecossistema .NET, engenharia de contexto, MCP e como utilizar agentes de IA para criar sistemas robustos. 📚 Livros na Amazon: https://www.amazon.com.br/stores/author/B0H7VR7VS3/allbooks ---------------- Senior Software Engineer & Solution Architect with over 20 years of experience building scalable, distributed systems. Author of "Engenharia de Software Assistida por IA". Writing about modern software architecture, .NET, context engineering, MCP, and AI-assisted development. 📚 Books on Amazon: https://www.amazon.com.br/stores/author/B0H7VR7VS3/allbooks

Agentes de código têm avançado rápido na capacidade de gerar patches que passam em testes funcionais.

Mas passar nos testes não significa que, magicamente, a implementação está pronta para ser aceita em um Pull Request ao repositório ou que está pronta para passar nos critérios de esteira de implantação em produção (CI/CD).

É o que mostra o benchmark SWE-Gate, apresentado em setembro de 2026 no arXiv (SWE-Gate: Passing Functional Tests Is Not Enough for Software Engineering Agents).

Os pesquisadores construíram 303 instâncias de reparo em nível de repositório, baseadas em 75 projetos open-source em Python. Além dos testes funcionais, eles incluíram restrições de revisão extraídas de comentários reais de Pull Requests.


O Resultado

Entre 644 reparos que passaram nos testes funcionais, 221 falharam nas restrições de revisão.

Isso representa uma taxa de falha oculta (Hidden Failure Rate) de 34,3%.

Ou seja: o agente resolveu o problema do ponto de vista dos testes, mas ainda violou critérios que revisores humanos normalmente exigem — padrões do projeto, limites arquiteturais, estilo, restrições implícitas ou decisões de design.


O que os dados mostram

Modelo Testes Funcionais Passaram Falhas Ocultas Taxa de Falha Oculta
GPT-5.5 227 67 29,5%
GPT-5.4-mini 187 67 35,8%
DeepSeek-V4-Flash 202 72 35,6%
GPT-4o-mini 28 15 53,6%
Total 644 221 34,3%

As restrições que mais causam falhas são:

  • Generalização de escopo: 46,3% – 63,0% de falha

  • Limpeza de ciclo de vida de recursos: 53,8% – 62,5% de falha

  • Escape de codificação: 51,1% – 55,9% de falha


Quais mudanças este estudo nos mostra

Avaliar agentes apenas por "passou nos testes" cria uma falsa sensação de que tudo está pronto. Em ambientes reais, a aceitação de uma mudança depende também de:

  • Conformidade com o estilo e as convenções do repositório

  • Respeito a decisões arquiteturais já existentes

  • Ausência de efeitos colaterais não cobertos pelos testes

  • Alinhamento com restrições que nem sempre estão escritas de forma explícita

A distância entre "funciona" e "está aceitável" continua sendo um dos pontos de atenção mais importantes para quem usa agentes em produção.


O que Fazer vs. O que Não Fazer

🚫 O que NÃO Fazer

  1. Não confunda "passou nos testes" com "está pronto para o merge"
    Exemplo do que não fazer: "O agente corrigiu o bug. Os testes passaram. Pode subir."
    O que acontece realmente: O estudo mostra que 34,3% dos patches que passam em testes funcionais falham em restrições de revisão. O código "funciona", mas viola padrões do projeto, limites arquiteturais ou convenções que revisores humanos exigem.
    Ação correta: Trate o pipeline verde como um sinal, não como uma decisão de release. Adicione verificações de restrições de revisão ao processo.

  2. Não ignore as restrições implícitas
    Exemplo do que não fazer: "O código funciona. Os detalhes de estilo e convenção não importam."
    O que acontece realmente: As restrições que mais causam falhas ocultas são generalização de escopo (46–63%), limpeza de recursos (54–63%) e escape de codificação (51–56%). São exatamente as áreas onde testes funcionais nunca apontam problema, mas revisores humanos sempre apontam.
    Ação correta: Documente e verifique restrições de revisão separadamente. Elas são parte da especificação, não detalhes opcionais.

  3. Não assuma que modelos mais capazes resolvem o problema
    Exemplo do que não fazer: "Vamos usar o modelo mais avançado. Ele vai acertar tudo."
    O que acontece realmente: Mesmo o GPT-5.5, o mais capaz avaliado, teve 29,5% de falhas ocultas — quase um terço dos patches que passaram em testes funcionais falharam em restrições de revisão.
    Ação correta: A capacidade do modelo não substitui a verificação de restrições. Você precisa de um gate separado para isso.

  4. Não escreva prompts vagos
    Exemplo do que não fazer: "Corrija este bug."
    O que acontece realmente: O agente resolve o problema do ponto de vista funcional, mas ignora restrições que não foram explicitadas. O patch pode ser rejeitado na revisão.
    Ação correta: Especifique as restrições de revisão no Contexto Técnico (Prompt). Informar as restrições explicitamente aumenta a taxa de sucesso conjunto.

  5. Não dependa apenas de revisão humana para pegar violações
    Exemplo do que não fazer: "Deixa o revisor humano pegar esses detalhes."
    O que acontece realmente: Em volumes altos de código gerado, a revisão humana satura. O tempo de revisão de PRs aumenta 91% e o tamanho médio dos PRs aumenta 154%. O revisor não consegue inspecionar linha a linha em escala.
    Ação correta: Use guardrails executáveis — testes de restrição que rodam automaticamente.

✅ O que FAZER

  1. Adote um gate de duas dimensões
    O que fazer: Assim como o SWE-Gate faz, separe a avaliação em testes funcionais (o bug foi corrigido?) e testes de restrição (o patch respeita as convenções do projeto?).
    Resultado: Você identifica falhas ocultas antes que cheguem à revisão humana.

  2. Transforme restrições de revisão em testes executáveis
    O que fazer: Crie verificações automáticas para:

    • Generalização de escopo: o agente alterou apenas o que deveria?

    • Limpeza de recursos: handles, conexões e arquivos são fechados corretamente?

    • Escape de codificação: strings e caracteres especiais são tratados corretamente?

    • Schema: tipos e estruturas de dados são respeitados?
      Resultado: Restrições deixam de ser "boas práticas" e passam a ser verificações automáticas.

  3. Forneça restrições explicitamente no contexto
    Exemplo do que fazer: Em vez de "corrija este bug", use: "Corrija este bug mantendo compatibilidade retroativa, sem alterar contratos públicos e seguindo as convenções do projeto."
    Resultado: Informar restrições explicitamente aumenta a taxa de sucesso conjunto, embora possa tornar o agente mais conservador.

  4. Meça a taxa de falha oculta
    O que fazer: Monitore não apenas a taxa de sucesso funcional, mas também a taxa de falha oculta — patches que passam em testes mas falham em restrições.
    Resultado: Você sabe se está realmente convertendo geração em entrega aceitável.

  5. Trate o pipeline verde como sinal, não como decisão
    O que fazer: O pipeline verde prova que o comportamento esperado ocorreu; não prova que o patch respeita os limites (boundaries) do sistema.
    Resultado: Decisões de merge mais conscientes e menos risco de incidentes em produção.


Conclusão

A capacidade de gerar código que passa em testes aumentou. Porém, a capacidade de gerar mudanças que passem pela revisão humana e às restrições do projeto ainda está longe do ideal.

Para times que usam agentes no desenvolvimento de software, o critério de sucesso precisa ir além do verde no pipeline.

"Um patch que passa em testes funcionais mas viola as restrições do projeto é uma falha oculta. O pipeline verde é um sinal, não uma decisão de release. O critério de sucesso precisa incluir tanto 'funciona?' quanto 'é aceitável?'."


📚 Fontes da Pesquisa

  1. SWE-Gate: Passing Functional Tests Is Not Enough for Software Engineering Agents
    arXiv, setembro/2026 — He, X.; Wang, Y.; Liu, M.; Chen, J.; Zhang, H.; Li, G. (2026). arXiv:2609.04167. Benchmark de 303 instâncias de reparo em 75 repositórios Python. Separa testes funcionais de restrições de revisão. Entre 644 patches que passaram em testes funcionais, 221 falharam em restrições de revisão (34,3% de falha oculta).

📖 Leituras Recomendadas

Quem quiser aprofundar o tema de forma estruturada — supervisão, auditoria e governança de código gerado por IA — pode consultar a série Engenharia de Software Assistida por IA, em especial os volumes VI – Supervisão e Auditoria de Código Gerado por IA e VIII – Engenharia de Contexto e Governança de IA.

💡 Destaques:

  • 🏷️ Cupom de 30% OFF nos eBooks: LEIA30

  • 📖 Disponível também no Kindle Unlimited!

👉 Série eBook completa:

https://www.amazon.com.br/dp/B0HG6CNSQM

📖 Livros Físicos (capa comum):

🔗 Página do autor na Amazon:

https://www.amazon.com.br/stores/author/B0H7VR7VS3/allbooks


#EngenhariaDeSoftware #InteligenciaArtificial #IA #SoftwareEngineering #AIAgents #CodeReview

1 views