Pirâmide de testes
Cada critério vai para a camada mais barata que consegue prová-lo. Antes de escrever, o agente justifica a camada.
E2E # poucos e caros: só jornadas Integração API e contrato Unitário # muitos e rápidos: regras e cálculos
AI-driven QA: como saber se o que o agente construiu está correto. Aula mão na massa, com a teoria entrando em blocos curtos antes de cada prática.
Gerar ficou barato. O gargalo agora é verificar.
Cada critério na camada mais barata que o prova.
Da spec aos casos de teste, com mapa de cobertura aprovado por um humano.
Seletor por papel, dado isolado, esperar estado e uma intenção por teste.
Playwright via MCP: ele vê a tela antes de escrever o teste.
Diagnóstico por causa, sem sleep nem retry cego.
Vídeo, trace e relatório por critério, ligados ao hash do commit.
Skills, subagente revisor e hook que barra espera fixa.
Suíte rodando a cada PR e todo bug de produção virando teste.
A maior parte é mão na massa. Cada bloco de teoria vem logo antes da prática que ele sustenta.
"Parece certo" e "funciona" não são a mesma coisa.
Base com muitos testes rápidos, topo só com jornadas.
Pedir testes à IA sem regra e achar os quatro defeitos.
Da spec aos casos, aprovados antes de qualquer código.
Ler o caso, explorar, escrever, rodar e ajustar.
Achar a causa e corrigir sem waitForTimeout.
Skills, subagente revisor, hook e o comando /qa-suite.
Azure Pipelines a cada PR e alerta virando teste.
Marque cada item conforme for fazendo. Se travar em algum, avise o instrutor antes do dia.
Cada critério vai para a camada mais barata que consegue prová-lo. Antes de escrever, o agente justifica a camada.
E2E # poucos e caros: só jornadas Integração API e contrato Unitário # muitos e rápidos: regras e cálculos
Primeiro se define o que "correto" significa. Nenhum código de teste antes de os casos estarem listados e aprovados por um humano.
C3 O CSV contém só as linhas do filtro CT-03 Exportar com filtro de período camada: E2E · critério: C3 esperado: só linhas de 01/10 a 15/10
Sem regra, a IA devolve testes que passam sem testar nada. Um teste que nunca falha não está testando nada.
✗ page.click('div:nth-child(3) > button') ✗ page.waitForTimeout(3000) ✗ expect(page).toBeTruthy() ✓ getByRole('button', { name: 'Exportar' }) ✓ await expect(toast).toBeVisible()
Lendo só o código, o agente adivinha o DOM. Navegando via MCP, ele usa o que o usuário realmente vê: papéis, rótulos e estados.
ler o caso → explorar → escrever → rodar → ajustar
# ajusta o teste, nunca o app
Teste que às vezes passa e às vezes falha. O diagnóstico é pelo trace, não com sleep.
timing → esperar o estado, não o tempo dado → cada teste cria o próprio ordem → remover dependência entre testes ambiente → fixar timezone, locale e viewport
O checklist para aceitar a entrega do agente. A tarefa só fecha com teste verde no commit atual.
01 Rastreável: aponta para um critério? 02 Falha quando deveria? 03 Está na camada certa? 04 Evidência no commit atual? 05 Um revisor independente concorda?