Pular para o conteúdo

Verificação, testes e avaliação: construir confiança em escala

Confiança se constrói com evidências de origens independentes, não com uma explicação convincente.

⏱ 8 minCapítulo 7 / 18

7.1Duas coisas a avaliar

O software — e o processo que o produziu

Uma execução pode gerar uma mudança correta depois de muitas tentativas e horas de supervisão: o resultado vale, o processo tem um problema. Outra pode ser rápida, elegante e errada. Testes do software e avaliações do sistema de agentes se complementam. [F20]

01

O software produzido

Atende aos requisitos e preserva propriedades importantes.

Avaliado com

Testes, contratos, medições, observação em produção.

02

O processo com agentes

Resolve tarefas de forma consistente, com custo e intervenção aceitáveis.

Avaliado com

Evals: tarefas, tentativas, trajetórias e estados finais — em múltiplas execuções.

7.2O oráculo de correção

De onde vem seu critério de “correto”?

Um oráculo decide se um resultado está correto: uma regra, um contrato, uma restrição de dados, um comportamento de referência ou uma avaliação humana estruturada. Se implementação e testes vêm da mesma interpretação incompleta, ambos concordam — e ambos falham no requisito real.

Situação

Um endpoint de exportação só deve incluir dados do cliente autenticado. O agente escreveu o endpoint e pergunta qual teste acrescentar.

Qual teste dá a evidência mais forte?

← Experimente

Qual erro relevante passaria despercebido se esse teste fosse o único sinal de qualidade?

7.3Escolher a forma de evidência

Ajuste a evidência ao risco

Cada tipo de evidência detecta alguns erros e é cego a outros. As intensidades abaixo são uma síntese aplicada deste curso a partir do quadro de decisão do relatório — adapte ao seu domínio.

Escolha um risco. As evidências que realmente o detectam sobem para o topo.

Exercite o banco real com barreiras; mocks não mostram bloqueios. Uma versão deliberadamente vulnerável prova que o teste detecta o defeito.

Testes de integração e contrato

Sinal forte

Dependem de ambientes e versões representativos.

Testes de ponta a ponta

Parcial

Execução cara e falhas intermitentes.

Testes baseados em propriedades

Parcial

A propriedade escolhida precisa representar a regra correta.

Testes de mutação

Parcial

Custo e interpretação exigem seleção cuidadosa.

Medição de carga e perfil

Parcial

O cenário deve representar a carga relevante.

Observação em implantação gradual

Parcial

Detecta após alguma exposição; requer contenção.

Tipos e análise estática

Improvável

Não demonstra intenção de produto nem todas as propriedades de execução.

Testes unitários

Improvável

Podem perder relações entre componentes.

Testes diferenciais

Improvável

A referência pode ter erros ou semântica diferente.

7.4A economia dos testes

Escrever testes ficou barato. Executá-los e confiar neles, não.

Você ainda paga execução, falhas intermitentes e ambientes. Amplie evidência onde ela reduz risco ou trabalho humano — mais testes de contrato, casos adversos e jornadas críticas — mantendo feedback rápido e interpretável.

7.5A revisão humana muda de distribuição

Automatizar — ou manter julgamento humano?

Para reduzir revisão manual de forma sustentável, saiba quais defeitos seus mecanismos detectam, acompanhe o que escapa e mantenha capacidade de recuperação. Classifique estas atividades de revisão.

A revisão humana muda de distribuição

1 / 6 · Pontuação 0

Estilo de código e convenções de formatação.

7.6Avaliar seu fluxo com IA

Uma suíte pequena vale mais que um benchmark grande

Comece com tarefas reais representativas: correção localizada, mudança entre módulos, investigação, alteração de interface, migração e requisito ambíguo.

Ciclo de avaliação

Passo 1 / 6

Selecionar tarefas reais

Escolha tarefas representativas, inclusive as que já falharam. Reserve algumas para não adaptar o processo a elas.

Uma única demonstração favorável é ponto de partida para investigação — não uma conclusão.

Pontos-chave

  1. 1

    Avalie o software e também o processo com agentes que o produziu.

  2. 2

    Saiba de onde vem seu oráculo; a independência mais forte vem de evidências com origens diferentes.

  3. 3

    Escolha a evidência pelo risco: integração com banco real para corridas, cenários com dois clientes para autorização, carga para latência.

  4. 4

    Desloque a revisão humana para requisitos, fronteiras de confiança e mudanças com evidência fraca; automatize o mecânico.

Verifique seu entendimento

Pergunta 1 de 3

Implementação e testes foram gerados a partir do mesmo ticket ambíguo. Qual o risco?

Ler a seção completa do relatório originalO texto integral — com todas as fontes e nuances.

7.1. Duas coisas diferentes precisam ser avaliadas

O software produzido precisa atender aos requisitos e preservar propriedades importantes. O processo com agentes precisa resolver tarefas de forma consistente, com custo e intervenção aceitáveis.

Uma execução pode gerar uma mudança correta depois de muitas tentativas e horas de supervisão. Isso valida aquele resultado, mas deixa um problema no processo. Outra execução pode ser rápida e elegante e produzir uma alteração errada. Por isso, testes do software e avaliações do sistema de agentes se complementam.

O guia de evals da Anthropic distingue tarefa, tentativa, trajetória e estado final, e recomenda avaliar o conjunto formado por modelo e harness. Também ressalta a necessidade de múltiplas execuções e de calibrar avaliadores baseados em modelos. F20

7.2. Definir o oráculo de correção

Um oráculo é o critério usado para decidir se o resultado está correto. Pode ser uma regra matemática, um contrato, uma restrição de dados, um comportamento de referência ou uma avaliação humana estruturada.

O engenheiro deve identificar de onde vem esse critério. Se implementação e testes forem derivados da mesma interpretação incompleta, ambos podem concordar e falhar no requisito real. Solicitar uma segunda opinião a outro agente ajuda a explorar, mas a independência mais forte vem de evidências com origens diferentes.

Exemplo: um endpoint de exportação só deve incluir dados do cliente autenticado. Um teste que verifica “retornou um CSV” cobre uma propriedade muito pequena. Um cenário com dois clientes, dados semelhantes e tentativas de cruzar identificadores testa a fronteira de autorização que realmente importa.

Pergunta operacional: qual erro relevante passaria despercebido se esse teste fosse o único sinal de qualidade?

7.3. Escolher a forma de evidência

O quadro abaixo é uma proposta de decisão, a ser adaptada ao risco e ao domínio.

EvidênciaUso especialmente útilLimitação a reconhecer
Tipos e análise estáticaContratos estruturais, usos inválidos e certas classes de erroNão demonstram intenção de produto nem todas as propriedades de execução.
Testes unitáriosRegras locais, cálculos e casos de bordaPodem perder relações entre componentes.
Testes de integração e contratoBanco real, filas, APIs e fronteiras entre serviçosDependem de ambientes e versões representativos.
Testes de ponta a pontaJornadas essenciais e comportamento observávelPodem ter execução cara e falhas intermitentes.
Testes baseados em propriedadesInvariantes sobre muitas entradas e sequênciasA propriedade escolhida precisa representar a regra correta.
Testes diferenciaisComparação com uma implementação de referênciaA referência pode ter erros ou semântica diferente.
Testes de mutaçãoVerificar se mudanças incorretas são detectadasCusto e interpretação exigem seleção cuidadosa.
Medição de carga e perfil de execuçãoLatência, memória, contenção e capacidadeO cenário deve representar a carga relevante.
Observação em implantação gradualEfeito em condições reaisDetecta problemas depois de alguma exposição; requer contenção.

Propriedades e relações metamórficas podem ser particularmente úteis. Em uma transformação sem perdas, transformar e desfazer deve preservar o dado. Em uma busca, acrescentar um filtro conjuntivo ao mesmo conjunto, antes da paginação, não deve aumentar o conjunto de resultados. O valor vem da relação testada e de suas condições de validade.

7.4. A economia dos testes precisa ser reconsiderada

O manifesto observa que a redução do custo de escrever e manter testes pode alterar decisões anteriores sobre cobertura. A aplicação competente é reavaliar o custo total de cada estratégia.

Se gerar testes ficou barato, ainda é necessário pagar sua execução, investigar falhas intermitentes e manter ambientes. A equipe deve ampliar evidência onde isso reduz risco ou trabalho humano, preservando feedback rápido. Pode valer a pena produzir muito mais testes de contrato, casos adversos e jornadas críticas, desde que o resultado continue interpretável.

No experimento de compilador com agentes paralelos, Nicholas Carlini relata que seu trabalho se concentrou no ambiente, nos verificadores e no feedback; referências externas ajudaram a isolar problemas para execução independente. É uma experiência de capacidade, com limitações reconhecidas pelo autor, e ilustra o valor de boas condições de verificação. F22

7.5. A revisão humana muda de distribuição

Há espaço para automatizar verificações de estilo, políticas repetitivas, consistência local e muitas revisões rotineiras. O investimento humano deve migrar para requisitos, fronteiras de confiança, mudanças sem boa evidência e decisões com consequências maiores.

Isso permite estabelecer políticas por classe de alteração. Atualizar documentação ou realizar uma refatoração mecanicamente verificável pode exigir um fluxo diferente de modificar autorização ou remover dados. A aprovação deve corresponder ao risco e à qualidade dos controles disponíveis.

Para reduzir revisão manual de forma sustentável, a equipe precisa saber quais defeitos seus mecanismos detectam, acompanhar falhas que escapam e ter capacidade de recuperação. O objetivo prático é eliminar a necessidade de inspeção repetitiva em classes bem controladas e concentrar julgamento nas exceções.

7.6. Criar uma pequena suíte de avaliação do fluxo com IA

Uma proposta inicial é selecionar tarefas reais representativas: correção localizada, mudança que atravessa módulos, investigação, alteração de interface, migração e caso com requisito ambíguo. Não é necessário começar com um benchmark grande.

Registre para cada tarefa: estado inicial, resultado esperado, critérios de avaliação, versão do código, configuração do agente, tempo, custo e intervenções. Cada tentativa deve começar de um estado conhecido e restaurado, para evitar contaminação por dados, caches ou efeitos de uma execução anterior. Inclua tarefas que falharam anteriormente. Reserve alguns casos para avaliar mudanças sem adaptar o processo diretamente a eles.

Compare configurações em condições suficientemente semelhantes e repita execuções quando a variabilidade puder mudar a decisão. Meça resultado correto, custo, tempo humano, regressões e ações fora do escopo. Uma única demonstração favorável é um ponto de partida para investigação.

O sucesso narrado pelo agente deve ser confirmado no artefato ou estado pertinente: arquivo, testes, banco, aplicação ou implantação. O registro final precisa distinguir verificações executadas, verificações impossíveis e hipóteses ainda abertas.