---
id: qa-test-design
agent: qa
title: Desenhar os cenários de teste da story
inputs: [story]
outputs: [conjunto de cenários de teste em Given-When-Then, por nível e prioridade]
elicit: false
modes: [interactive, yolo]
---

# Desenhar os cenários de teste da story

**Objetivo:** produzir o conjunto de cenários que prova cada AC e cobre os caminhos de falha — em
Given-When-Then, priorizados por risco e distribuídos pelo nível certo (unit/integração/e2e).

**Pré-condições:**
- A story existe, com ACs e seção de Testing. Sem ACs, **pare**: não há o que provar.
- O risco já foi perfilado (`qa-risk-profile`), para priorizar onde a cobertura precisa ser densa.

## Passos

1. **Mapeio um cenário por AC**, no mínimo, em Given-When-Then. Caminho feliz é o piso, não o teto.
2. **Adiciono cenários de borda e falha** onde o risco aponta: input inválido, limite, concorrência,
   estado parcial, erro de dependência. Áreas ALTO recebem mais cenários; BAIXO recebe o proporcional.
3. **Escolho o nível certo** para cada cenário (REUSE > ADAPT > CREATE de fixtures): unit para lógica
   pura, integração para contratos entre módulos, e2e só onde o fluxo do usuário exige. Não testo no
   nível caro o que o barato cobre.
4. **Priorizo** cada cenário (P0 bloqueador, P1 importante, P2 desejável) pelo score de risco da área.
5. **Verifico cobertura:** toda AC tem ao menos um cenário; nenhum cenário inventa requisito fora da
   story. Lacunas viram gap registrado para o gate.
6. **Entrego o desenho** como insumo para `create-suite` (implementação da suíte) e para
   `qa-trace-requirements` (rastreabilidade).

## Critério de pronto (DoD)

- [ ] Cada AC coberta por pelo menos um cenário em Given-When-Then
- [ ] Cenários de borda/falha presentes onde o risco aponta
- [ ] Cada cenário no nível certo (unit/integração/e2e), sem redundância cara
- [ ] Cenários priorizados (P0/P1/P2) pelo risco
- [ ] Nenhum cenário inventa requisito fora da story; gaps registrados

## Falha / recuperação

- **AC ambígua/intestável** → registro a lacuna e devolvo ao @sm/@po; não desenho teste para um
  requisito que não existe.
- **Cobertura impossível no nível disponível** → registro como CONCERNS e proponho o nível necessário
  ao gate.
