Skip to content
Back to skills

Qa Testar

ASecurity

Ponto de entrada do QA para testar uma tarefa com o Claude Code. Diagnostica em que situação a tarefa está (nova, bateria parada no meio, aguardando o dev, correção entregue para reteste, decisão pendente do PO, ciclo encerrado), resume o que o dev fez a partir do diff, monta o plano com piso de critérios e mapa de cobertura e conduz a execução no modo "QA executa, IA mede" - o QA age na tela, o Claude instrumenta, mede quando o QA diz "pode medir" e registra no plano e no documento de bugs. ...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 21, 2026
developmentjavascriptgojavashellbashnodegitapibackend

Works with

  • claude code
  • cursor
  • cli
  • api

Security analysis

A100/100

Pro scans all 13 files and shows the line behind each finding

Scanned October 21, 2026

npx -y skills add Bruno91dev/portfolio-qa --skill qa-testar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Qa Testar?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Qa Testar
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bruno91dev-qa-testar/badge)](https://www.skillsdirectory.com/skills/bruno91dev-qa-testar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: qa-testar
description: Ponto de entrada do QA para testar uma tarefa com o Claude Code. Diagnostica em que situação a tarefa está (nova, bateria parada no meio, aguardando o dev, correção entregue para reteste, decisão pendente do PO, ciclo encerrado), resume o que o dev fez a partir do diff, monta o plano com piso de critérios e mapa de cobertura e conduz a execução no modo "QA executa, IA mede" - o QA age na tela, o Claude instrumenta, mede quando o QA diz "pode medir" e registra no plano e no documento de bugs. Use quando o QA disser "vamos testar a tarefa X", "continua de onde paramos", "o que ficou pendente", "manda o passo a passo", "chegou correção para retestar" ou "em que ponto eu estava".
---

# Ciclo de teste: QA executa, IA mede

O QA executa na interface; o Claude prepara, mede e registra.

- **O Claude não dirige a interface para executar os casos**, salvo autorização explícita do QA
  ("pode executar você"), que vale para o caso ou o trecho autorizado e não se estende sozinha aos
  seguintes. Por quê: o teste vale pelo olhar humano (foco, cursor, mensagem que pisca) e pelo
  clique real; o Claude rende mais medindo o que o QA não vê.
- **Abrir a página e instrumentar é sempre do Claude**, antes do passo a passo. **O login é sempre
  do QA**: o Claude nunca digita senha.
- **A IA nunca altera o código do produto.** Lê, compara branches, sugere a correção; quem aplica é
  o dev. A trava (hook) que acompanha este pacote bloqueia escrita na pasta do código, mas a regra
  vale mesmo sem ela.

## Passo 0 — Configuração e regras (uma vez por sessão)

1. Ler no `CLAUDE.md` do projeto: **Pasta do código** (somente leitura), **Pasta de QA** (planos,
   bugs e evidências, fora da pasta do código), **Endereço da aplicação em teste**, **Branch base**
   e a convenção do nome da branch da tarefa. Faltando algum, perguntar ao QA uma vez e sugerir
   que ele acrescente ao `CLAUDE.md`.
2. Documentos da tarefa, sempre na Pasta de QA: `plano-<tarefa>.md`, `bugs-<tarefa>.md` e
   `evidencias/<tarefa>/`.
3. Ler **inteiros**, da pasta desta skill, `referencias/regras-do-plano.md` e
   `referencias/regras-do-bug.md`. Numa retomada dentro da mesma sessão, não ler de novo.

## Passo 1 — Diagnosticar a situação (obrigatório, antes de qualquer passo a passo)

Esta skill é a porta de entrada para **qualquer** momento da tarefa: primeira vez, retomada depois
de uma pausa, volta de correção. Nunca mandar o primeiro caso sem este passo: é ele que decide o
caminho.

### 1.1 Qual é a tarefa

- **Com número:** usar o informado.
- **Sem número** ("continua de onde paramos"): pegar o plano mexido por último na Pasta de QA,
  fazer o diagnóstico dele (só leitura) e **confirmar no fim**: "Era a tarefa X que você queria
  retomar?", citando as outras em andamento. Nada é gravado antes da confirmação.

### 1.2 O que existe localmente

Rodar o verificador do plano, que também mostra o **placar do ciclo atual** e o primeiro pendente:

```bash
node "<pasta desta skill>/scripts/verificar-plano.mjs" "<Pasta de QA>/plano-<tarefa>.md"
```

O placar a usar é o do ciclo atual, não a soma de todas as rodadas: o histórico somado não
representa o presente.

**Corte temporal para o item 1.3:** a data de abertura do ciclo atual (está no cabeçalho da seção de
reteste); sem reteste, a última atualização que o QA publicou na tarefa. Nunca a data de alteração
do arquivo sozinha. Por quê: qualquer edição local depois de um comentário do dev empurra essa data
para a frente e esconde a novidade.

### 1.3 O que mudou desde o corte

O QA traz da ferramenta de tarefas da equipe (ou cola na conversa) os comentários posteriores ao
corte: decisão do PO, dev informando correção. O Claude confere os commits da branch:

```bash
git -C "<Pasta do código>" fetch origin -q
git -C "<Pasta do código>" log --oneline --since="<data do corte>" origin/<branch-da-tarefa>
```

**As duas fontes precisam bater.** BUG dado como corrigido sem commit correspondente (ou commit sem
aviso do dev) não entra no ciclo: mostrar ao QA e perguntar antes de retestar.

### 1.4 Decidir o caminho

| Situação medida | Caminho |
|---|---|
| Sem plano | **Tarefa nova** → Passo 2 e Passo 3 |
| Plano sem nenhum caso executado | **Bateria não iniciada** → confirmar o escopo com o QA e ir ao Passo 4 |
| Ciclo atual com casos `⏳ Pendente` | **Bateria parada no meio** → continuar do primeiro pendente; reinstrumentar a página |
| `⏸️ Aguardando definição` e o PO respondeu | **Decisão do PO** → atualizar o caso e o placar; sem reteste |
| BUG dado como corrigido **e** commit novo | **Reteste** → seção nova no fim do plano (Passo 2) e Passo 3 |
| Só uma das duas fontes indica correção | **Divergência** → mostrar ao QA e perguntar; não retestar |
| BUGs abertos, sem correção nem commit | **Aguardando o dev** → mostrar o estado e parar |
| Ciclo atual sem nada aberto | **Ciclo encerrado** → oferecer a `validacao-final` e o Diário de Bordo |

Mais de uma situação ao mesmo tempo: tratar a do PO primeiro e depois abrir o reteste.

**Antes de seguir, mostrar ao QA, curto e nesta ordem:** onde paramos; placar do ciclo atual; o que
está aberto (CT, motivo e BUG, em tabela); novidades desde o corte; o caminho escolhido, com a
pergunta de confirmação. Não repetir o plano inteiro.

## Passo 2 — Fechar o escopo e escrever antes de executar

**Tarefa nova — análise antes de escrever qualquer caso:**

1. Ler a tarefa inteira: descrição, **critérios de aceite**, **roteiro de teste do dev**,
   comentários e anexos.
2. Ler o diff da branch contra a base, **pelas referências remotas** (a cópia local pode estar em
   outra branch):
   ```bash
   git -C "<Pasta do código>" diff --stat origin/<base>...origin/<branch-da-tarefa>
   git -C "<Pasta do código>" diff origin/<base>...origin/<branch-da-tarefa> -- <arquivo>
   ```
   Conferir que o diff veio inteiro: se a saída trouxer marca de corte ("+N more", "truncated"),
   algum filtro resumiu a saída; ler de novo sem ele antes de concluir qualquer coisa.
3. Cruzar o que foi pedido, o que foi alterado e **quem mais usa o código alterado**
   (`git -C "<Pasta do código>" grep -n "<nome>" origin/<branch-da-tarefa>`). Código de uso amplo
   pede regressão nos consumidores.
4. Pelo que o diff toca, acrescentar: **filtro criado ou alterado** → par de prova (uma opção que
   traz registros e uma que traz a lista vazia, conferindo a condição enviada); **mudança no que se
   vê** (estilo, layout, estrutura do template) → caso visual com a skill `validacao-visual`.
5. Montar a **proposta de escopo** pelas regras do plano: o **piso** (todo critério de aceite e
   todo item do roteiro do dev), o que a análise de risco **acrescenta**, a tabela
   `|CT|O que testa|Papel|Por que fica|`, a lista "O que fica fora" com o motivo e o **mapa de
   cobertura** com o CT previsto para cada trecho alterado.
6. **Gravar o plano só com o ok do QA**, no modelo `modelos/plano-de-teste.md` desta pasta.

**Nunca montar o plano só pela descrição da tarefa.**

**Reteste:** seção nova no fim do plano, `### N. Reteste - Ciclo X (dd/mm/aaaa)`, sem tocar nas
rodadas anteriores; subitens da seção em `####`. Na mesma hora, atualizar o **Status da Correção**
de cada BUG com o que o dev informou e o commit.

**Depois de gravar**, rodar o verificador do plano e corrigir todo ERRO antes do primeiro passo a
passo. Ele confere tabelas, IDs, status, âncora do pendente, numeração, piso, mapa e seções.

## Passo 3 — Resumo didático do que o dev fez (junto com o escopo)

Antes do primeiro passo a passo, um resumo **curto**, na conversa, tirado do diff real:

- **Tarefa nova:** qual era o problema → o que o dev criou ou alterou (função, classe, arquivo) →
  por que isso resolve. Ex.: "O carrinho recusava cupom com produto em promoção. O dev passou a
  filtrar os itens em promoção em `aplicarCupom` antes do cálculo, então o desconto vale só para os
  demais."
- **Reteste:** um parágrafo curto por BUG dado como corrigido.
- Termo técnico ganha meia frase de explicação na hora ("validador = código que confere os dados
  antes de gravar").

Por quê: o QA entende a lógica da alteração, testa melhor e aprende o sistema por dentro.

## Passo 4 — Abrir e instrumentar a página (uma vez por sessão e depois de todo F5)

**Aplicação web:** o Claude abre o Endereço da aplicação no navegador que ele controla e injeta
`scripts/instrumentar.js` (pasta desta skill) pela ferramenta de executar JavaScript. Ele cria:

- `window.__reqLog` — verbo, endereço, corpo, status e resposta de erro de cada chamada ao backend;
- `window.__msgLog` — toasts, diálogos e mensagens de erro de campo, no mesmo relógio do `__reqLog`.

Reinjetar sempre que o QA der F5 ou a página navegar por endereço. Confirmar que ficou ativo
**antes** de o QA agir. Se o retorno vier na tela de login, pedir que o QA entre e conferir de novo.

**Ramo alterado sem rastro** (tratamento de erro, valor padrão, nulo): mandar ao QA arquivo e linha
para criar um *logpoint* no DevTools (Sources → botão direito no número da linha → *Add logpoint*)
com a mensagem `'[CB] <arquivo>:<linha> <ramo>'`. O logpoint escreve no console sem parar a execução
e sem alterar o código.

**Aplicação desktop ou só backend:** não há página para instrumentar. Mede-se pelo log da aplicação,
por breakpoints, pelo log do serviço, pela resposta da API e pelo banco de teste (somente leitura).

## Passo 5 — Mandar o passo a passo

Um caso por vez, numerado e curto. Incluir o que só o olho humano percebe (cursor, foco, diálogo que
aparece e some) e pedir que o QA relate isso junto com o "pode medir".

**Antes de mandar, conferir o que o passo cita.** Erro no passo a passo (botão com outro nome, aba
que não aparece naquele estado) foi o defeito que mais se repetiu quando os ciclos foram medidos.

- **Web:** no DOM da tela aberta, conferir que cada aba, botão, campo e coluna citados existem e
  estão visíveis nesse estado. Tela ainda não aberta se confere no código da branch (template,
  arquivo de tradução, rotas), nunca navegando na aba do QA: navegar derruba a instrumentação.
- **Desktop:** conferir o rótulo exato e a aba do controle no arquivo de layout da tela, na branch
  da tarefa (`git -C "<Pasta do código>" show origin/<branch>:<arquivo>`).
- **Premissa:** caso que depende de configuração, permissão ou chave tem o estado conferido antes.
- **Nomes concretos:** tela, produto, cliente e usuário pelo nome da massa, nunca "um produto
  qualquer".

Se o caso prevê F5 no meio, medir **antes** dele: o recarregamento apaga o log.

## Passo 6 — Medir (uma vez por caso, quando o QA diz "pode medir")

Do mais barato ao mais caro:

1. estado do formulário pelas ferramentas de desenvolvimento do framework (valor real, alterado,
   válido, controles inválidos);
2. `__reqLog` e `__msgLog`;
3. banco de teste, quando o caso trata de dado gravado (somente leitura);
4. console do navegador, sempre com filtro e limite; logpoints com o filtro `\[CB\]`;
5. DOM, só quando o dado não estiver no formulário.

Em cada medição, anotar quais trechos do mapa o caso executou e o que provou isso: vai para a
coluna **Prova de execução**.

**Não tirar captura de tela para medir.** A exceção é a evidência de BUG: todo BUG que puder ser
provado numa imagem ganha a imagem ao ser registrado, pela skill `evidencia-bug`. Caso visual vai
para a skill `validacao-visual`, recortada ao escopo do caso.

### Caminho real antes de simulação

Primeiro o caminho que o usuário percorre de verdade. Simulação (forçar falha, inserir dado direto
no banco, desviar requisição) só quando o caminho real é impossível ou proibitivo, e sempre com a
pergunta **"isso prova 100% ou deixa brecha?"** dita ao QA, junto com o que a indução prova e o que
fica de fora. Por quê: dado criado por fora pode ter forma que a tela nunca produziria, e o teste
passa a provar outra coisa.

- **Forçar falha do backend:** desviar a requisição para um endereço inexistente, avisar o QA que é
  indução e declarar a ressalva no registro do caso. Só o F5 remove o desvio por completo.
- **Envio forçado que grava** (pelo console, com a sessão do QA): reler o registro imediatamente
  antes, numa chamada anterior e nunca em paralelo, e conferir se a aba do QA está no mesmo
  registro. Por quê: uma gravação em lote paralela já apagou o que o QA tinha acabado de salvar.

## Passo 7 — Registrar na hora, antes do caso seguinte

Gravar o resultado sem carregar o plano inteiro no contexto:

```bash
node "<pasta desta skill>/scripts/registrar-caso.mjs" --plano "<Pasta de QA>/plano-<tarefa>.md" \
  --ancora "<trecho final e único do Resultado Esperado>" \
  --obtido "<o que aconteceu, no passado>" --status aprovado
```

| Status | Quando |
|---|---|
| `✅ Aprovado` | executado e conforme o esperado |
| `⚠️ Aprovado com ressalva` | funciona, com defeito de baixo impacto (gera BUG) |
| `❌ Reprovado` | não atende ao esperado (gera BUG) |
| `⏸️ Aguardando definição` | depende de decisão do PO ou do negócio |
| `OK` | só o CT000 de tarefa que não é correção |
| `⏳ Pendente` | ainda não executado (âncora do `registrar-caso.mjs`) |

No mesmo registro:

- trocar o `⏳` da **Prova de execução** no mapa pelo que provou que o trecho rodou; trecho que devia
  rodar e não deixou rastro vira `Sem prova de execução: <motivo>`;
- atualizar **Resultados e Conclusão** (ou o fecho da seção de reteste);
- risco resolvido nos **Pontos de Atenção** fica riscado e marcado *Resolvido no CT0XX*;
- caso de reteste: atualizar o **Status da Correção** do BUG com o resultado (modelo em
  `referencias/regras-do-bug.md`);
- caso novo no meio da execução entra logo abaixo do relacionado, com renumeração dos seguintes e
  das referências; o verificador acusa repetição, ordem e lacuna.

Para mudar um caso já preenchido: localizar a linha com busca, ler só aquele trecho e editar.

**BUG:** escrever pelas regras de `referencias/regras-do-bug.md` e pelo modelo `modelos/bugs.md`;
depois, sempre:

```bash
node "<pasta desta skill>/scripts/verificar-bug.mjs" "<Pasta de QA>/bugs-<tarefa>.md"
```

## Fechar o ciclo

1. `verificar-plano.mjs "<plano>" --fim-ciclo`: dá ERRO se sobrar caso pendente ou `⏳` no mapa.
   Trecho `Inalcançável` ou `Sem prova de execução` entra no resumo como ponto a levar ao dev.
2. Oferecer a skill `validacao-final`:
   - ciclo sem nada em aberto → antes de a tarefa ir para produção;
   - ciclo que devolve a tarefa com correção **pontual** → **antes de devolver**, para o dev
     receber os BUGs e os achados num único retorno (a tarefa não fica indo e vindo);
   - correção **estrutural** (vai reescrever o fluxo) → depois dela; a análise envelheceria.

### Diário de Bordo (na conversa, para o QA copiar)

- Título `Diário de Bordo – dd/mm/aaaa`; poucos parágrafos curtos, sem listas nem tabelas.
- Impessoal e em voz passiva ("Realizados os testes...", "foi identificado...").
- Sem detalhe técnico; BUG só pelo ID. Ordem: o que o ciclo testou → o que foi encontrado → desfecho.
- Só ganha nome o que ficou pendente.

> Diário de Bordo – 14/05/2026
>
> Realizados os testes referentes às correções dos bugs reportados no ciclo anterior.
>
> Durante as validações, foi identificado que o BUG-002 não foi corrigido por completo: o desconto
> passou a ser mantido no cartão de crédito, mas não no boleto. O comportamento foi registrado no
> BUG-004.
>
> Diante do apontamento, a tarefa foi retornada para correção.

## Cuidado ao gravar Markdown

Não gravar `.md` com trechos de código por comando de shell (`echo`, `bash -c`): o shell interpreta
o que está entre crases e apaga pedaços do texto. Usar a ferramenta de escrita de arquivo.

Files in this skill

  • SKILL.md15.7 KB
  • exemplos/bugs-que-falham.md1.7 KB
  • exemplos/bugs-que-passam.md2 KB
  • exemplos/plano-que-falha.md2.5 KB
  • exemplos/plano-que-passa.md4.2 KB
  • modelos/bugs.md1.3 KB
  • modelos/plano-de-teste.md1.4 KB
  • referencias/regras-do-bug.md8 KB
  • referencias/regras-do-plano.md9.5 KB
  • scripts/instrumentar.js4.3 KB
  • scripts/registrar-caso.mjs3.4 KB
  • scripts/verificar-bug.mjs10.5 KB
  • scripts/verificar-plano.mjs9.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.