Skill do QA Engineer para testes unitarios, integracao e E2E. Use quando precisar escrever testes, validar regressao, revisar cobertura, configurar estrategia de QA, ou evidenciar qualidade antes de release. Trigger em: "teste", "test", "QA", "Playwright", "Vitest", "Jest", "E2E", "coverage", "mock", "fixture", "regressao", "teste de integracao", "testing library".
76
67%
Does it follow best practices?
Impact
85%
1.16xAverage score across 3 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/05-qa-testing/SKILL.md⚠ Esta é a SKILL 05 (playbook de QA). Não confundir com o subagent
dev-team-kit-fv:test-engineer.
- Carregar este playbook:
Skill({ skill: "dev-team-kit-fv:05-qa-testing" })- Despachar subagent isolado (turno novo):
Agent({ subagent_type: "dev-team-kit-fv:test-engineer", ... })- Diferença:
policies/skills-vs-agents.md
O QA garante que o comportamento entregue continua correto antes de avancar no pipeline.
Inspiração: Birgitta Böckeler — "Mutation and structural testing are computational feedback sensors that have been underused in the past, but are now having a resurgence." Ver
docs/inspiration/harness-engineering.md.
Coverage normal mente: "80% das linhas têm pelo menos 1 teste passando por elas". Mas isso não diz se os testes detectam bugs. Testes ruins (asserções fracas, sem assertions) inflam coverage sem aumentar confiança.
Mutation testing detecta isso: ferramenta gera "mutações" no código (troca > por >=, deleta linha, inverte boolean) e roda os testes. Se os testes não falham após mutação, eles são fracos.
| Situação | Recomendação |
|---|---|
| Coverage > 60% mas bugs ainda escapam | ✅ Forte — sinal claro de testes fracos |
| Lógica complexa de negócio (cálculos, regras) | ✅ Forte — todo edge case importa |
| Greenfield, time aprendendo TDD | ✅ Médio — ensina a escrever assertions melhores |
| Prototype/spike throwaway | ❌ Skip — overhead > ganho |
| Coverage < 40% | ❌ Skip antes — coverage primeiro, mutation depois |
| CI lento (>10min) | 🟡 Cuidado — mutation roda em paralelo a coverage |
| Linguagem | Tool | Notas |
|---|---|---|
| JS/TS | Stryker Mutator | @stryker-mutator/core — config via stryker.config.json |
| Python | mutmut | pip install mutmut, simples |
| Python | Cosmic Ray | Mais sofisticado, configurável |
| Java | PIT (Pitest) | Padrão de mercado JVM |
| .NET | Stryker.NET | mesma família do JS |
| Rust | cargo-mutants | Maduro, integra com cargo |
| Go | go-mutesting | Menos popular mas funciona |
| Ruby | mutant | Tipo gold standard pra Ruby |
1. Tem coverage instalado? Se não, comece por isso (skill 05 normal flow)
2. Coverage > 60%? Se não, focar em coverage antes
3. Sim → adicione mutation tool ao package.json/equivalent
4. Roda primeiro full: `npx stryker run` (vai demorar)
5. Analisa "mutation score" — % de mutações detectadas
- >85%: excelente
- 70-85%: aceitável
- <70%: testes fracos — refactor priority
6. Identifica "survived mutants" (mutações não detectadas) — bug-equivalentes
7. Pra cada survived, escreva teste que mata o mutante
8. Plug no CI:
- Diário (não cada commit — caro)
- Threshold mínimo (não regression)Esta skill (05) deve automaticamente sugerir mutation testing quando detectar:
package.json com coverage > 60%pyproject.toml com pytest + coverageSugestão padrão:
"Coverage está em X% — bom suficiente pra adicionar mutation testing.
Roda uma vez:
<comando específico>
Mutation score < 70% indica testes fracos. Veja policies/quality-gates.md."Skill 37 (TDD) usa approved fixtures para behaviour harness gap. Skill 05 (esta) usa mutation testing para detectar testes fracos em código existente.
Complementares: TDD garante que testes sejam escritos certo desde o início. Mutation garante que testes continuem detectando bugs ao longo do tempo.
Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md, policies/quality-gates.md, policies/token-efficiency.md, policies/tool-safety.md, policies/evals.md e policies/verification-before-completion.md (gate obrigatório — toda claim "tests pass" precisa output verificável).
Para setups completos e exemplos longos, consultar docs/skill-guides/qa-testing.md apenas quando necessario.
Quando a validacao exigir browser real com navegacao e screenshots, esta skill pode configurar ou reutilizar Playwright MCP localmente.
Usar Playwright MCP quando a tarefa exigir:
Isso complementa os testes e2e formais e ajuda especialmente em verificacoes visuais ou exploratorias.
Windows mantém lock em arquivos SQLite WAL/SHM por alguns ms após db.close(). Cleanup síncrono em afterAll falha com EBUSY. Use retry diferido:
afterAll(() => {
db.close();
setTimeout(() => {
const tryUnlink = (p) => { try { if (fs.existsSync(p)) fs.unlinkSync(p); } catch {} };
[TEST_DB, TEST_DB + '-wal', TEST_DB + '-shm'].forEach(tryUnlink);
}, 200);
});Descoberto em eval-bench/Teste 2 (2026-05-23). Pattern não é Windows-only — também previne problema em CI Linux com discos lentos.
Para output estruturado e persona detalhada com tipos de cenário, coverage analysis e template de relatório, ver personas/test-engineer.md.
Entregar:
Codigo deve priorizar clareza. Comentarios so fazem sentido quando explicam contexto nao obvio, restricoes externas ou workarounds temporarios.
Se você reconhece um desses pensamentos, PARE e siga o processo. Ver policies/anti-rationalization.md.
| Racionalização | Realidade |
|---|---|
| "Vou adicionar testes depois" | Código sem teste é código que não funciona até prova em contrário |
| "É refactor, não muda comportamento" | Refactor sem teste é aposta. Testes provam que comportamento não mudou |
| "Coverage já está boa o suficiente" | Coverage mede linhas executadas, não cenários cobertos. Verifique edge cases |
| "Esse código é trivial demais pra testar" | Código trivial que quebra em produção causa vergonha desproporcional |
| "Mock resolve, não preciso de teste de integração" | Mock prova que seu mock funciona. Integração prova que o sistema funciona |
7577622
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.