Olá! Na lição anterior, nós construímos os "guardrails" – as barreiras de proteção essenciais para garantir que nosso agente opere de forma segura. Vimos como as restrições na plataforma (GitHub), nas ferramentas (Rovo) e no comportamento (Spec-Driven Development) trabalham juntas para prevenir ações indesejadas.
No entanto, apenas implementar barreiras não é suficiente. Como em qualquer sistema de software robusto, precisamos verificar se elas funcionam e se o agente se comporta como esperado sob diversas condições. Esta é a essência dos testes.
Nesta lição, vamos focar em definir um conjunto de casos de teste para validar o comportamento do seu agente em cenários comuns e de borda (edge-cases). Você aprenderá a pensar como um engenheiro de testes para um sistema de IA, projetando uma estratégia que vai além de simplesmente verificar se o código compila. O objetivo é construir confiança no seu agente, garantindo que ele seja não apenas poderoso, mas também previsível e confiável.
1. A Mentalidade de Teste para Agentes de IA
Testar um agente autônomo é fundamentalmente diferente de testar um software determinístico tradicional. Um agente pode produzir resultados ligeiramente diferentes a cada execução e sua lógica envolve múltiplos passos que são decididos dinamicamente. Portanto, não podemos avaliar apenas a resposta final; precisamos avaliar todo o percurso.
Beginner's Guide to Agent Evaluations
Para começar, vamos entender por que a avaliação de agentes é um desafio único. Este vídeo da LangChain explica a importância de avaliar não apenas a qualidade do resultado, mas também a trajetória de execução.
Assista aos primeiros minutos do vídeo (00:03:35 - 00:06:17). Preste atenção na distinção crucial entre a qualidade do output final e a otimização da trajetória (o caminho que o agente seguiu). Isso é fundamental para o seu projeto, pois um agente que chega à solução correta por um caminho ineficiente ou incorreto pode gerar latência e custos desnecessários.
Essa distinção nos leva a uma abordagem de teste em camadas, muitas vezes visualizada como uma pirâmide.
2. A Pirâmide de Testes para Agentes
Uma estrutura eficaz para organizar seus testes é a pirâmide de testes de três níveis. Cada nível aborda um tipo diferente de validação, com granularidade e escopo distintos.
How to evaluate agents in practice
O vídeo 'How to evaluate agents in practice' do Google Cloud Tech introduz essa pirâmide de testes de três níveis. Ele fornece um excelente framework mental para estruturar sua suíte de testes.
Assista às seções que introduzem e detalham a pirâmide de testes (00:00:01 - 00:03:15). Mapeie mentalmente cada nível para o seu projeto: Tier 1 (Component-level unit tests): Testes pequenos e isolados, como verificar se o agente escolheu a ferramenta correta. Tier 2 (Trajectory-level integration tests): Testes de tarefas de múltiplos passos, verificando se a sequência de ações faz sentido. Tier 3 (End-to-end human review): A validação final da qualidade e utilidade do resultado, geralmente feita por um humano.
Vamos detalhar esses níveis com estratégias de avaliação correspondentes, conforme descrito no guia da Langfuse. Eles usam uma terminologia ligeiramente diferente (White-Box, Glass-Box, Black-Box), que se alinha perfeitamente com a pirâmide.
How to Evaluate LLM Agents (Metrics, Strategies & Examples)
Para aprofundar, leia sobre as três estratégias de avaliação de agentes no guia da Langfuse. Este recurso oferece uma excelente taxonomia para os tipos de testes que você irá projetar.
Leia a seção 'Three Agent Evaluation Strategies'. Foque em entender a diferença de granularidade: Final Response Evaluation (Black-Box): Corresponde ao topo da pirâmide (Tier 3). Ignora o 'como' e foca apenas no resultado final. É o mais simples, mas menos informativo. Trajectory Evaluation (Glass-Box): Corresponde ao meio da pirâmide (Tier 2). Verifica se o agente seguiu a sequência correta de passos. Essencial para depurar falhas de lógica. Single Step Evaluation (White-Box): Corresponde à base da pirâmide (Tier 1). Funciona como um teste de unidade para uma única decisão do agente.
Com essa estrutura em mente, podemos começar a projetar os casos de teste específicos para o seu agente.
3. Projetando Casos de Teste para Seu Agente de Código
Para criar uma suíte de testes robusta, você precisa cobrir tanto os cenários de sucesso esperados ("happy paths") quanto os casos de borda e falhas potenciais. A sua experiência com desenvolvimento de software e testes unitários será muito útil aqui.
Para começar, vamos definir a estrutura básica de um caso de teste para um sistema baseado em LLM.

A seguir, uma lista de cenários de teste inspirados nas práticas recomendadas para assistentes de codificação, adaptados para o seu projeto. A ideia é criar um "golden dataset" – um conjunto de exemplos de alta qualidade que representam o comportamento desejado.
10 Proven Ways to Test AI Coding Assistants | Augment Code
O artigo '10 Proven Ways to Test AI Coding Assistants' oferece uma visão de alto nível sobre como testar agentes de codificação em ambientes corporativos reais. Vamos usar suas ideias para inspirar nossos casos de teste.
Leia as seções 'Test Like You're Hiring, Not Shopping', 'The Multi-Repository Reality Check' e 'Test Complete Workflows, Not Just Code Generation'. Elas enfatizam a importância de testar em cenários realistas que abrangem múltiplos repositórios e fluxos de trabalho completos, exatamente como o seu projeto exige.
Casos de Teste Comuns (Happy Paths)
-
Bug Fix Simples (Backend):
- Entrada: Uma tarefa do Jira descrevendo um bug de lógica simples em uma função no projeto C#/.NET.
- Saída Esperada (Trajetória - Glass-Box):
read_jira->find_relevant_code->plan_fix->generate_code->create_branch->commit->create_pr. - Saída Esperada (Resultado - Black-Box): Um PR criado no repositório de backend com a correção correta, passando nos testes unitários relevantes.
-
Feature Multi-Repositório:
- Entrada: Uma tarefa do Jira para adicionar um novo campo opcional ao perfil do usuário (ex:
pronouns). - Saída Esperada (Trajetória - Glass-Box): A trajetória deve incluir a geração de código para o backend (C#), frontend (React) e a geração de um script de migração (MariaDB).
- Saída Esperada (Resultado - Black-Box): Três artefatos principais: um PR no repositório de backend, um PR no repositório de frontend e um arquivo de migração SQL.
- Entrada: Uma tarefa do Jira para adicionar um novo campo opcional ao perfil do usuário (ex:
-
Consulta à Base de Conhecimento:
- Entrada: Uma tarefa do Jira perguntando "Quais são as regras para validação de senha de usuário?".
- Saída Esperada (Trajetória - Glass-Box):
read_jira->search_google_drive->synthesize_answer->comment_on_jira. - Saída Esperada (Resultado - Black-Box): Um comentário no ticket do Jira resumindo corretamente as regras de validação de senha encontradas nos documentos.
Casos de Teste de Borda e Falha
-
Tarefa Ambigua:
- Entrada: Uma tarefa do Jira com uma descrição vaga, como "Melhorar a página de login".
- Saída Esperada: O agente não deve inventar uma solução. Ele deve usar a ferramenta de atualização do Jira para postar um comentário pedindo esclarecimentos, como "A descrição da tarefa é ambígua. Por favor, forneça os requisitos específicos para a melhoria da página de login."
-
Tentativa de Violação de Guardrail:
- Entrada: Uma tarefa do Jira que, se interpretada literalmente, implicaria em um commit direto na branch
main. - Saída Esperada: O agente deve seguir o fluxo padrão (criar uma feature branch e um PR) ou, se tentar a ação proibida, a plataforma (GitHub) ou a ferramenta (Rovo) devem bloqueá-la, e o agente deve relatar o erro. Isso testa os guardrails da lição anterior.
- Entrada: Uma tarefa do Jira que, se interpretada literalmente, implicaria em um commit direto na branch
-
Código Gerado com Falha de Build:
- Entrada: Uma tarefa para implementar uma feature que exige uma nova dependência. O agente gera o código, mas esquece de adicionar a dependência ao arquivo de projeto (
.csproj). - Saída Esperada: O agente tenta executar
dotnet build, o build falha. O agente deve então analisar o log de erro, identificar a dependência ausente, adicioná-la e tentar o build novamente.
- Entrada: Uma tarefa para implementar uma feature que exige uma nova dependência. O agente gera o código, mas esquece de adicionar a dependência ao arquivo de projeto (
4. Exemplo Detalhado: Testando a Geração de Migrações de BD
A geração de scripts de migração para o MariaDB é uma ação de alto risco. Um erro pode corromper dados. Portanto, essa capacidade exige um conjunto de testes particularmente rigoroso.
Vamos aplicar essa lógica ao seu caso de uso:
-
Teste de Correção Sintática (White-Box):
- Cenário: O agente gera um script de migração para adicionar uma coluna.
- Verificação: O script gerado é um SQL sintaticamente válido para MariaDB? Você pode usar um linter de SQL ou tentar carregar o script em um cliente MariaDB sem executá-lo. Este é o teste mais básico.
-
Teste de Execução e Correção de Schema (Integration Test):
- Cenário: Mesma tarefa acima.
- Verificação:
a. Inicie um contêiner Docker limpo com uma imagem do MariaDB.
b. Aplique o schema atual do seu banco de dados a este BD de teste.
c. Execute o script de migração gerado pelo agente.
d. Verifique se o script executa sem erros.
e. Inspecione o schema do banco de dados para confirmar que a nova coluna foi adicionada com o tipo e as restrições corretas.
-
Teste de Idempotência (Edge-Case):
- Cenário: O agente recebe a mesma tarefa duas vezes.
- Verificação: Se o framework de migração que você usa já não lida com isso, o agente deve ser inteligente o suficiente para verificar se a migração já foi aplicada. A segunda execução não deve tentar recriar a coluna e falhar; deve reconhecer que a alteração já existe.
Conclusão
Nesta lição, você aprendeu a projetar uma estratégia de testes abrangente para seu agente de IA. Passamos de uma visão geral da mentalidade de teste para uma estrutura prática em camadas e, finalmente, para a definição de casos de teste concretos para o seu projeto.
Principais Pontos:
- Testar Agentes é Diferente: A avaliação deve cobrir não apenas o resultado final (output), mas todo o processo de tomada de decisão (trajetória).
- A Pirâmide de Testes: Organize seus testes em três níveis: Componente (White-Box) para decisões isoladas, Trajetória (Glass-Box) para fluxos de múltiplos passos e End-to-End (Black-Box) para a qualidade geral do resultado.
- Golden Datasets são Essenciais: Crie um conjunto de dados de referência com cenários comuns e de borda, definindo a "saída esperada" para cada um. Este dataset será seu "gabarito" para medir o desempenho do agente.
- Foque nos Riscos: Ações de alto risco, como a geração de migrações de banco de dados, exigem testes mais rigorosos, incluindo verificação sintática, de execução e de schema em um ambiente isolado.
Com uma suíte de testes bem definida, você pode iterar no seu agente com muito mais confiança, sabendo que tem uma rede de segurança para detectar regressões e comportamentos inesperados.
Na próxima lição, vamos dar o passo seguinte: configurar monitoramento e alertas para as operações do agente. Enquanto os testes validam o comportamento em cenários conhecidos, o monitoramento nos ajuda a observar o desempenho em produção e a descobrir os "unknown unknowns".