Skill: Propor Plano de Teste de Funcionalidade
Objetivo
Criar um plano de teste que mapeia sistematicamente requisitos e restrições para testes concretos. Isso garante que cada requisito tenha verificação e orienta a implementação dos testes.
Quando Usar
- Existe um documento de design com Restrições Críticas
- Pronto para planejar a abordagem de teste antes da implementação
- Necessidade de documentar quais testes verificarão cada requisito
Pré-requisitos
- O conceito da funcionalidade existe em
./docs/features/NNNN-nome-da-funcionalidade/concept.md - Os requisitos existem em
./docs/features/NNNN-nome-da-funcionalidade/requirements.md - O design existe em
./docs/features/NNNN-nome-da-funcionalidade/design.md(contém Restrições Críticas)
Procedimento
1. Verificar se os Pré-requisitos Existem
ls ./docs/features/NNNN-nome-da-funcionalidade/concept.md
ls ./docs/features/NNNN-nome-da-funcionalidade/requirements.md
ls ./docs/features/NNNN-nome-da-funcionalidade/design.md
Se algum não existir, conclua essas etapas primeiro.
2. Extrair Requisitos e Restrições
Revise o requirements.md para todos os identificadores REQ-.
Revise o design.md para todas as Restrições Críticas CC-.
3. Criar o Arquivo de Plano de Teste
Crie ./docs/features/NNNN-nome-da-funcionalidade/test-plan.md com esta estrutura:
# Plano de Teste: Nome da Funcionalidade
## Visão Geral
Breve descrição da abordagem de teste.
## Tipos de Teste
- **Unitário**: Testa lógica interna isoladamente, mocks permitidos
- **Integração**: Toca recursos externos reais (sistema de arquivos, rede), SEM mocks
- **Não testável**: Não pode ser verificado por teste automatizado (explique por quê)
- **Fora do escopo**: Requer autenticação externa - documente mas não implemente
## Cobertura de Requisitos
| ID do Req | Tipo de Teste | Nome do Teste | Descrição |
|-----------|---------------|---------------|-----------|
| REQ-1 | unitario | test_xxx | O que verifica |
| REQ-2 | integracao | test_yyy | O que verifica |
| REQ-3 | nao-testavel | - | Por que não é testável |
| REQ-4 | fora-do-escopo| - | Por que está fora do escopo |
## Verificação de Restrições Críticas
| ID CC | Abordagem de Verificação | Nome(s) do(s) Teste(s) |
|-------|--------------------------|------------------------|
| CC-1 | Como a restrição é verificada | test_xxx |
## Requisitos de Teste de Integração
Para programas CLI, os testes de integração DEVEM:
- Exercitar o binário/comandos CLI reais que os usuários executam
- NÃO testar APIs internas diretamente
- Fazer o que o usuário/cliente realmente fará
## Notas de Implementação dos Testes
Quaisquer orientações específicas para implementar estes testes.
4. Mapear Cada Requisito
Para cada REQ-* no requirements.md:
-
Determine o tipo de teste:
- Unitário: Lógica interna, algoritmos, transformações de dados
- Integração: E/S de arquivo, chamadas de rede, comandos CLI, processos externos
- Não testável: Não pode ser automatizado (por exemplo, qualidade subjetiva, requer julgamento humano, inviável de configurar)
- Fora do escopo: Requer autenticação com sistemas externos (APIs em nuvem, registros com autenticação)
-
Nomeie o teste descritivamente (ex.:
test_analisa_config_valido) -
Escreva uma breve descrição do que ele verifica
5. Mapear Cada Restrição Crítica
Para cada CC-* no design.md:
- Descreva como a restrição será verificada
- Vincule ao(s) nome(s) específico(s) do(s) teste(s) que a impõe(m)
- Observe se a restrição requer revisão de código em vez de teste automatizado
6. Documentar a Abordagem de Teste CLI
Se a funcionalidade incluir comandos CLI:
- Testes de integração executam o binário real
- Capture stdout/stderr para verificação
- Teste fluxos de trabalho reais do usuário de ponta a ponta
- NÃO simule (mock) a camada CLI
7. Marcar Testes Fora do Escopo
Para testes que exigem autenticação externa:
- Documente o QUE seria testado
- Explique por que está fora do escopo
- Anote quaisquer etapas de verificação manual
Validação
# Verificar se o arquivo existe
ls ./docs/features/NNNN-nome-da-funcionalidade/test-plan.md
# Verificar se todos os requisitos estão cobertos
grep -c "REQ-" ./docs/features/NNNN-nome-da-funcionalidade/test-plan.md
grep -c "REQ-" ./docs/features/NNNN-nome-da-funcionalidade/requirements.md
# As contagens devem ser comparáveis
# Verificar se todas as restrições estão cobertas
grep -c "CC-" ./docs/features/NNNN-nome-da-funcionalidade/test-plan.md
grep -c "CC-" ./docs/features/NNNN-nome-da-funcionalidade/design.md
# As contagens devem ser comparáveis
Problemas Comuns
Cobertura ausente: Cada REQ-* e CC-* deve aparecer no plano de teste. Use os comandos grep de validação para verificar.
Tipo de teste errado: Testes unitários não devem tocar no sistema de arquivos/rede. Testes de integração não devem usar mocks.
Testar internos em vez de comportamento: Para ferramentas CLI, teste os comandos CLI que os usuários executam, não funções internas.
Descrições vagas: As descrições dos testes devem informar qual comportamento específico está sendo verificado.
Próximos Passos
Após criar o plano de teste:
- Revise a cobertura com as partes interessadas
- Prossiga para a skill
propor-plano-de-implementacaopara planejar a implementação - O plano de implementação deve referenciar o
test-plan.mdpara os requisitos de teste