← Voltar ao curso
Nível 3 — Automação e escala · Módulo 3.4 — Verificando trabalho não supervisionado

3.4.3 · Testes como portão e a segunda opinião

4 min de vídeo TEC BASIS

Objetivo: ao final, o consultor transforma verificação em portão automático com stop hook, sabe como o Claude se autocorrige a partir de uma falha devolvida, e aplica a segunda opinião fria a entregável que importa.

O que você precisa levar desta aula

  1. Um stop hook que roda os testes e sai com exit 2 recusa o encerramento e devolve a falha ao Claude — que se corrige sozinho, sem você pedir. É verificação que cobra por você quando você não está na sala.
  2. As camadas olham para coisas diferentes e não se substituem: auto mode cobre perigo, stop hook de teste cobre regressão, PostToolUse pega problema a cada edição, e em headless o portão é o resultado JSON + exit code.
  3. A segunda opinião fria (aula 2.7.3) pega uma falha que nenhum teste pega: o que nunca esteve certo e passou porque quem construiu racionalizou no caminho. Em spec e proposta, é a única camada disponível.

O portão de saída

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          { "type": "command", "command": "./.claude/scripts/portao-teste.sh" }
        ]
      }
    ]
  }
}
#!/usr/bin/env bash
# Recusa o encerramento se o teste de regressão falhar.
# ATENÇÃO: só exit 2 bloqueia. exit 1 NÃO bloqueia (aula 3.2.4).
if ! npm run test:regressao --silent; then
  echo "Teste de regressão falhou. Corrija antes de encerrar." >&2
  exit 2
fi
exit 0

O ciclo que isso produz, sem intervenção humana:

  1. O Claude conclui que terminou e tenta encerrar
  2. O hook Stop roda os testes
  3. Falhou → exit 2 → o stderr volta para o Claude como contexto
  4. O Claude lê a falha, corrige e tenta encerrar de novo
  5. Passou → exit 0 → a sessão encerra

O passo 4 é o que diferencia isto de um alerta. Não é um aviso para você ler amanhã — é uma cobrança que o Claude atende agora.

As camadas, e o que cada uma cobre

Camada Cobre Não cobre
Classificador do auto mode Ação perigosa (produção, force push, vazamento) Se o resultado está correto
PostToolUse com lint e type-check Erro sintático e de tipo, a cada edição Lógica errada que compila
Stop hook com teste Regressão — o que funcionava e parou O que nunca funcionou, e cenário sem teste
Verificação por JSON + exit code (headless) Falha detectável pelo pipeline Resultado plausível mas errado
Segunda opinião fria (subagente sem histórico) O que nunca esteve certo e foi racionalizado Nada automático — exige uma rodada a mais

Nenhuma linha dessa tabela é redundante com outra. É por isso que "os testes passaram" não encerra a conversa.

O que teste não pega, em contexto SAP

A aula 2.8.T2 já listou para ABAP: comportamento de user exit ou BAdI sem teste unitário, autorização, integração com sistema externo indisponível em ambiente de teste. Some a isso o que não é código:

Entregável Existe teste de regressão? O que verifica
Objeto CAP/Fiori Sim Suíte de teste + stop hook
Programa ABAP Parcialmente Teste unitário onde existe + revisão no ADT
Spec funcional Não Revisão humana + segunda opinião fria
Status report, proposta Não Segunda opinião fria + julgamento do PM (aulas 2.8.P1 e P2)
Documentação de landscape Não Tarefa agendada de comparação (aula 2.8.B3)

Para as três últimas linhas, a segunda opinião fria é a verificação — não é um extra. Não existe portão automático para uma regra de alçada escrita errada.

A segunda opinião fria, aplicada

O mecanismo é o da aula 2.7.3: um subagente sem histórico do processo revisa o entregável. Ele não sabe quais alternativas foram descartadas nem quais dúvidas foram resolvidas por cansaço, e é justamente por isso que ele acha o que a sessão original deixou passar.

Aplique em: FS antes de entrar no fluxo de aprovação do cliente (2.8.F2), refatoração antes de sair de DEV (2.8.T2), material de comitê antes da reunião (2.8.P3), e qualquer resultado de execução desassistida que vá para o cliente.

Regra Wayon Repositório de projeto de cliente com suíte de teste roda com stop hook de teste ativo — e o hook usa exit 2, conferido na revisão de par (aula 3.2.4). Para entregável sem teste automático — spec, proposta, status report, documentação — a segunda opinião fria é obrigatória antes do envio ao cliente, e não é substituível por "os testes passaram", porque não há teste.

📖 Hooks — Stop e exit codes · A segunda opinião fria — módulo 2.7.3

Quiz — 4 questões

1.Seu stop hook roda o teste de regressão, ele falha, e o hook sai com exit 2. O que acontece em seguida?
  • a)O encerramento é recusado e o stderr volta para o Claude, que lê a falha e se corrige sozinho

    Correto. É o que transforma o hook de alerta em cobrança atendida na hora.

  • b)A sessão encerra e a falha fica registrada no log para você ler depois

    exit 2 recusa o encerramento; a falha não vai para o log esperando leitura futura.

  • c)A sessão encerra com status de erro, e é preciso reabrir para corrigir

    Não há encerramento com erro: o turno continua, e é essa continuidade que permite a autocorreção.

Ver resposta e por quê
a) Correto. É o que transforma o hook de alerta em cobrança atendida na hora.
b) exit 2 recusa o encerramento; a falha não vai para o log esperando leitura futura.
c) Não há encerramento com erro: o turno continua, e é essa continuidade que permite a autocorreção.
2.Um consultor argumenta que, com o stop hook de teste ativo, o auto mode se torna dispensável. Ele está certo?
  • a)Sim — se o teste passa, nenhuma ação perigosa pode ter acontecido

    Teste passar não diz nada sobre perigo: um force push ou um deploy em produção pode ocorrer com a suíte inteira verde.

  • b)Não — as duas camadas olham para coisas diferentes: auto mode cobre perigo, stop hook cobre regressão

    Correto. Nenhuma substitui a outra.

  • c)Sim, desde que a suíte de teste tenha cobertura acima de 80%

    Cobertura mede o quanto do código é exercitado, não se ações perigosas foram barradas.

Ver resposta e por quê
a) Teste passar não diz nada sobre perigo: um force push ou um deploy em produção pode ocorrer com a suíte inteira verde.
b) Correto. Nenhuma substitui a outra.
c) Cobertura mede o quanto do código é exercitado, não se ações perigosas foram barradas.
3.Uma spec funcional foi produzida com apoio do Claude e precisa ir para o fluxo de aprovação do cliente. Qual verificação se aplica?
  • a)Stop hook de teste, que é o portão padrão de qualquer entregável

    Não existe teste de regressão para uma spec — não há o que o portão execute.

  • b)PostToolUse com lint, para garantir a consistência do documento

    Lint pega erro sintático de código; regra de negócio errada num documento passa intacta.

  • c)Revisão humana e segunda opinião fria — para entregável sem teste automático, essa é a verificação, não um extra

    Correto. Não há portão automático para uma regra de alçada escrita errada.

Ver resposta e por quê
a) Não existe teste de regressão para uma spec — não há o que o portão execute.
b) Lint pega erro sintático de código; regra de negócio errada num documento passa intacta.
c) Correto. Não há portão automático para uma regra de alçada escrita errada.
4.Qual falha a segunda opinião fria pega e um teste de regressão não pega?
  • a)Algo que nunca esteve correto e passou porque quem construiu se convenceu no caminho

    Correto. Teste compara com o comportamento anterior; ele não questiona se a premissa estava certa desde o início.

  • b)Uma função que funcionava e parou de funcionar depois da refatoração

    Essa é exatamente a definição de regressão, que é o que o teste pega bem.

  • c)Um erro de sintaxe introduzido na última edição

    Isso o lint e o type-check do PostToolUse pegam antes, e mais barato.

Ver resposta e por quê
a) Correto. Teste compara com o comportamento anterior; ele não questiona se a premissa estava certa desde o início.
b) Essa é exatamente a definição de regressão, que é o que o teste pega bem.
c) Isso o lint e o type-check do PostToolUse pegam antes, e mais barato.