Engenheiro de QA
Estratégia de testes e cobertura.
O Engenheiro de QA é a persona que projeta, executa e evolui a estratégia de testes para todo o produto. Em um SDLC AI-nativo, o Engenheiro de QA opera um agente Test Strategist, um banco de slash prompts e um catálogo validado de MCPs — não um console de testes manual.
Resumo executivo
O Engenheiro de QA é dono da fase de Verificação. Seu trabalho é provar que o código entregue pelos Developers realmente satisfaz os requisitos EARS e os critérios de aceitação Given-When-Then fixados no SPECIFICATION.md. Em um SDLC AI-nativo, essa prova é produzida por um agente Test Strategist, quatro slash prompts, instruções com escopo e um pequeno conjunto de MCPs validados que alcançam Azure DevOps Test Plans, GitHub Actions e Playwright.
As saídas primárias são uma matriz de testes viva, uma suíte testada por mutação, um registro de flakes com causas-raiz e relatórios de lacunas de cobertura que retornam aos Developers como novas issues. O Engenheiro de QA não compete com Developers em testes unitários; ele orquestra o portfólio de verificação mais amplo: integração, contrato, ponta a ponta, resiliência e testes exploratórios apoiados por IA.
O Engenheiro de QA não substitui os testes unitários escritos pelo Developer; ele garante que a união de todas as camadas de verificação realmente demonstre que o produto cumpre seu contrato. Ele é o último defensor de princípios do invariante: nenhum comportamento não documentado chega à produção.
Papel e responsabilidades
Pense no Engenheiro de QA como um engenheiro de ensaios de voo. Os pilotos voam, os mecânicos constroem, mas alguém precisa projetar o plano de expansão de envelope que prove a aeronave segura em cada regime que ela vai enfrentar. Em um SDLC AI-nativo, o Engenheiro de QA é responsável pelo envelope de evidências automatizadas e exploratórias que permite ao time entregar todo dia com confiança.
Responsabilidades primárias:
- Traduzir cada requisito EARS em pelo menos um teste executável e um charter exploratório manual
- Ser dono da matriz de testes em todas as lanes: unitário, contrato, integração, ponta a ponta, performance e acessibilidade
- Executar testes de mutação em módulos críticos e encaminhar sobreviventes como issues
- Triar testes flaky em até 24 horas, nunca silenciá-los
- Manter os fixtures do Playwright MCP para cobertura ponta a ponta e visual
- Operar o agente Test Strategist e os prompts
/test-plan,/mutation-scan,/flake-triage,/coverage-gap - Publicar dashboards semanais de verificação a partir de dados do Azure Monitor e GitHub Actions
- Mentorar Developers em design de testes durante sessões em par e revisões de PR
Jobs to be done
- Como Engenheiro de QA, eu quero um plano de testes gerado para cada feature que se liga aos IDs da spec, para que nenhum critério de aceitação seja entregue sem verificação.
- Como Engenheiro de QA, eu quero scores de mutação por módulo, para que eu saiba onde as asserções são fracas antes que o incidente descubra.
- Como Engenheiro de QA, eu quero testes flaky triados em um dia útil, para que o sinal continue confiável.
- Como Engenheiro de QA, eu quero lacunas de cobertura encaminhadas como issues com testes sugeridos, para que Developers as fechem na mesma sprint.
- Como Engenheiro de QA, eu quero execuções do Playwright gravadas e indexadas, para que a análise pós-incidente seja uma consulta, não uma expedição arqueológica.
- Como Engenheiro de QA, eu quero a matriz de testes exportada para o Azure DevOps Test Plans, para que stakeholders não técnicos possam navegar pelas evidências de verificação.
- Como Engenheiro de QA, eu quero verificações de acessibilidade embutidas em cada execução ponta a ponta, para que regressões WCAG sejam capturadas no momento do merge.
- Como Engenheiro de QA, eu quero um resumo semanal postado no Microsoft Teams, para que toda a organização veja as linhas de tendência de qualidade do produto.
Dores antes do AI-nativo
- Testes ficam atrás das features. QA escreve testes depois que o código é entregue; o escopo se distorce e regressões vazam para o backlog.
- Amnésia de flakes. Testes flaky são colocados em quarentena e esquecidos. A mesma race condition ataca duas vezes por trimestre, e o time perde confiança em builds vermelhos.
- Teatro de cobertura. Cobertura de linha atinge 80 por cento enquanto branches críticas nunca são exercitadas; auditorias passam e incidentes continuam acontecendo.
- Trabalho exploratório não documentado. Charters vivem em cadernos; aprendizados nunca se tornam regressão automatizada, então o mesmo bug retorna em uma tela diferente.
- Handoffs perdem contexto. Developer corrige um bug, QA retesta, mas o cenário em falha que provou a correção não está anexado ao PR, deixando a regressão futura desprotegida.
- Sem dashboard compartilhado. O status de verificação vive em cinco ferramentas; a liderança não tem uma visão única e atualizada da qualidade do produto.
Fluxo diário AI-nativo
O Engenheiro de QA trabalha a partir do Visual Studio Code com GitHub Copilot e do terminal com Claude Code, invocando o agente Test Strategist ao longo do dia.
Setup da manhã
- Puxe
main, abra o repo no VS Code, deixe o Copilot Chat carregarAGENTS.mde as instruções com escopo.github/instructions/tests.instructions.md. - Rode
/test-plan --since=yesterdaypara escanear PRs merged e produzir um plano delta: quais novos requisitos EARS precisam de cobertura hoje. - Abra os dashboards do Azure DevOps Test Plans e GitHub Actions para revisar as execuções noturnas; enfileire candidatos a flake.
- Revise a saída do scan de mutação noturno postada no canal de Verificação no Microsoft Teams; fixe os três principais sobreviventes como prioridade do dia.
- Sincronize com o SRE de plantão sobre quaisquer incidentes de produção que devam alimentar um novo charter exploratório.
Execução no meio do dia
- Para cada PR de feature, invoque
/test-plancom a seção da spec vinculada. O Test Strategist propõe lanes ausentes e escreve esqueletos de testes. - Rode
/mutation-scannos módulos alterados nas últimas 24 horas. Sobreviventes se tornam issues tagueadasverification/weak-assertion. - Conduza sessões exploratórias com o Playwright MCP. Todo achado que reproduz se torna uma spec Playwright commitada.
- Pareie com o Developer em testes vermelhos; nunca aprove um PR onde um teste foi deletado sem uma substituição equivalente.
Revisão no fim da tarde
- Rode
/flake-triagecontra os logs diários do Actions. O agente agrupa falhas, propõe causas-raiz e abre issues com um dono sugerido para a correção. - Publique o dashboard de verificação: cobertura por módulo, score de mutação, taxa de flake, charters exploratórios abertos.
- Atualize a rastreabilidade do
SPECIFICATION.md: cada ID de requisito deve estar linkado a pelo menos um teste passando.
Primitivas recomendadas
Agente
| Agente | Arquivo | Propósito |
|---|---|---|
test-strategist | .github/agents/test-strategist.agent.md | Projeta planos de teste, executa scans de mutação, tria flakes, encaminha lacunas de cobertura |
O Test Strategist roda com claude-sonnet-4-6 e ferramentas read, grep, bash, edit. Extended thinking é habilitado apenas para análise de mutação.
Slash prompts
| Comando | Arquivo | Propósito |
|---|---|---|
/test-plan | .github/prompts/test-plan.prompt.md | Gerar ou atualizar o plano de testes para uma feature, linkado aos IDs EARS |
/mutation-scan | .github/prompts/mutation-scan.prompt.md | Executar testes de mutação em módulos alterados e encaminhar sobreviventes |
/flake-triage | .github/prompts/flake-triage.prompt.md | Agrupar execuções falhando no Actions, propor causas-raiz, abrir issues |
/coverage-gap | .github/prompts/coverage-gap.prompt.md | Mapear branches não testadas a seções específicas da spec e sugerir testes |
Instruções com escopo
Escopo (applyTo) | Arquivo | Propósito |
|---|---|---|
tests/**/* | .github/instructions/tests.instructions.md | Padrão AAA, fixtures determinísticos, sem sleeps ocultos |
tests/e2e/**/* | .github/instructions/playwright.instructions.md | Locators do Playwright, captura de trace, política de retry |
docs/specs/**/*.md | .github/instructions/traceability.instructions.md | Cada requisito linkado a pelo menos um ID de teste |
Hooks
pre-push: rodar a fast test lane; bloquear push em falhapost-merge: regenerar a matriz de testes e publicar no Azure DevOps Test Plansnightly: rodar o scan de mutação nos módulos alterados naquele diapre-release: enforçar score mínimo de mutação e limiares de cobertura de rastreabilidadeon-flake: abrir uma issue no GitHub automaticamente quando um teste falha duas vezes em sete dias
MCPs validados
| MCP | Propósito | Dono |
|---|---|---|
| GitHub MCP Server | Ler PRs, execuções do Actions, anotar issues | GitHub |
| Azure DevOps MCP Server | Sincronizar a matriz de testes no Azure DevOps Test Plans | Microsoft |
| Playwright MCP | Conduzir sessões exploratórias e execuções ponta a ponta gravadas | Microsoft |
| Azure MCP Server | Consultar Azure Monitor e Application Insights para telemetria de falhas | Microsoft |
| Microsoft Learn Docs MCP | Consultar orientações de teste atualizadas para serviços Azure em teste | Microsoft |
Exemplos reais
Exemplo 1: sobreviventes de mutação viram PRs
Rodar /mutation-scan src/billing/ retorna 7 sobreviventes em invoice-total.ts. O Test Strategist elabora 7 novos casos de teste e abre uma única issue intitulada verification/weak-assertion: billing invoice-total. Um Developer assume, escreve os testes, e o próximo scan de mutação retorna zero sobreviventes naquele módulo. O dashboard de KPI mostra o score de mutação do módulo subindo de 58 para 94 por cento.
Exemplo 2: triagem de flake encerra um bug de seis meses
/flake-triage agrupa 14 falhas em checkout.spec.ts da última semana e aponta para uma race entre um page.click do Playwright e uma revalidação de cache do Azure Front Door em andamento. O Test Strategist propõe uma correção: esperar pela resposta de rede específica, não por um timeout. A correção aterrissa como uma mudança de uma linha, o teste para de flakar e o KPI de Confiabilidade daquela suíte retorna a 99,8 por cento.
Exemplo 3: lacuna de cobertura encaminhada ao Developer
/coverage-gap inspeciona o último PR merged contra src/payments/refunds.ts e descobre que a branch partial_refund é inalcançável por qualquer teste atual. O Test Strategist abre uma issue com um Given-When-Then rascunhado, a linka ao requisito da spec REQ-PAY-044 e a atribui ao autor original. A issue é fechada na mesma sprint, e a matriz de rastreabilidade salta de 96 para 100 por cento no módulo de Pagamentos.
Anti-padrões
- Silenciar flakes com contagens de retry. Retries escondem o defeito; o incidente continua sendo entregue.
- Perseguir cobertura de linha. Branches e mutantes importam; linhas são número de vaidade.
- Packs de regressão manual. Toda regressão manual que encontra um bug deve se tornar um teste automatizado na mesma semana.
- Escrever testes após o merge. Trabalho de verificação feito após o merge perde alavancagem; projete testes junto com a spec.
- Ponta a ponta como única rede. Testes ponta a ponta são lentos e frágeis; empurre shift-left para as camadas de contrato e unitário.
- Fixtures sem dono. Fixtures compartilhados do Playwright sem um dono nomeado apodrecem silenciosamente; atribua um dono e revise a cada sprint.
- Tratar agentes como oráculo. O Test Strategist propõe; o Engenheiro de QA decide. Todo teste gerado por IA é revisado antes do merge.
KPIs e métricas de impacto
| Métrica | Linha base (manual) | Meta (agêntico) | Fonte |
|---|---|---|---|
| Taxa de escape (bugs encontrados pós-release) | 12 por release | < 2 por release | Application Insights, issues do GitHub |
| Score de mutação em módulos críticos | Desconhecido | > 85 por cento | Runner de mutação no GitHub Actions |
| Confiabilidade da suíte de testes | 88 por cento | > 99,5 por cento | Taxa de flake do Actions |
| Tempo de fechamento de lacuna de cobertura | 3 sprints | < 1 sprint | GitHub Projects |
| Requisitos com teste linkado | 55 por cento | 100 por cento | Verificação de rastreabilidade no CI |
| Violações de acessibilidade por release | 18 | 0 críticas | Execuções do Playwright axe |
| Tempo médio para triar um flake | 5 dias | < 24 horas | Logs do GitHub Actions |
Maturidade em quatro níveis
- L1 Manual: Casos de teste em planilha, sem testes de mutação, pasta de quarentena de flakes, sem agente. Verificação é gargalo após o code-complete.
- L2 Assistido: Autocomplete do Copilot dentro de specs do Playwright, matriz de testes em wiki, triagem manual de flakes, sessões exploratórias ad hoc.
- L3 Aumentado: Agente Test Strategist, quatro slash prompts, instruções com escopo, Playwright MCP conectado ao GitHub Actions, scans de mutação sob demanda.
- L4 Autônomo: Scan de mutação noturno com issues encaminhadas automaticamente, triagem de flakes fechando causas-raiz em 24 horas, rastreabilidade de requisitos a testes em 100 por cento, dashboard de verificação publicado diariamente no Microsoft Teams.
Integração com outras personas
- Do Business Analyst: requisitos EARS frescos com IDs únicos para rastreabilidade.
- Do Developer: PR merged com testes unitários passando e um link de spec declarado.
- Para o Developer: issues de lacuna de cobertura e sobreviventes de mutação com rascunhos de testes sugeridos.
- Do Software Architect: registro de risco arquitetural que informa lanes de teste de resiliência.
- Para o SRE: artefato de deploy verificado e synthetic probes atualizados.
- Para o Compliance Auditor: matriz de rastreabilidade linkando requisitos a evidências de execução de testes.
- Com o UAT Analyst: fixtures Playwright compartilhados entre testes de sistema e testes de aceitação.
Glossário
- Matriz de testes: a tabela viva mapeando requisitos a lanes de teste, donos e status.
- Score de mutação: percentual de falhas injetadas detectadas pela suíte de testes.
- Flake: um teste que passa e falha de forma não determinística em código inalterado.
- Charter exploratório: uma investigação com tempo limitado e missão declarada, não um script.
- Rastreabilidade: um link verificável de ID de requisito a ID de teste a PR.
- Lane de verificação: uma categoria de verificações automatizadas (unitário, contrato, integração, ponta a ponta, performance, acessibilidade, resiliência) com seu próprio SLA e runner.
- Taxa de escape: bugs descobertos em produção que deveriam ter sido capturados antes do release.
Referências
- Orientação de testes no Microsoft Learn — Azure DevOps Test Plans e estratégia
- Documentação de testes do GitHub Actions — Padrões de CI para verificação
- Playwright MCP — MCP mantido pela Microsoft para automação de navegador
- Testes de disponibilidade do Application Insights — Monitoramento sintético
- GitHub Copilot para geração de testes — Autoria de testes assistida por agente
- GitHub Advanced Security — Sinais de CodeQL e secret scanning alimentando o plano de testes
- Azure Load Testing — Lane de performance e resiliência
- Detecção inteligente do Azure Application Insights — Sinais de anomalia para charters exploratórios