# Exploratory Testing: A Arte de Testar Sem Roteiro

**Meta Description:** Aprenda exploratory testing: técnicas, charters, notas de teste e como combinar testes exploratórios com automação para cobertura completa.

---

## O Que é Exploratory Testing?

Exploratory Testing (ET) é uma abordagem de teste onde o testador simultaneamente aprende sobre o sistema, projeta testes e os executa. É o oposto de testes scriptados - em vez de seguir um roteiro fixo, o testador usa sua criatividade e experiência para explorar o software.

### Características Fundamentais

| Aspecto | Scripted Testing | Exploratory Testing |
|---------|-----------------|---------------------|
| **Planejamento** | Detalhado antes | Simultâneo |
| **Documentação** | Antes da execução | Durante e depois |
| **Abordagem** | Repetitiva | Adaptativa |
| **Criatividade** | Limitada | Alta |
| **Descoberta** | Busca por defeitos específicos | Busca por defeitos inesperados |
| **Melhor para** | Regressão, compliance | Novos features, UX |

---

## Por Que Exploratory Testing?

### Quando ET Brilha

- **Novos recursos** - Quando você não sabe o que esperar
- **UX testing** - Avaliar experiência do usuário
- **Complexidade** - Sistemas com muitas interações
- **Bugs difíceis** - Defeitos que scripts não capturam
- **Rapid feedback** - Quando tempo é curto
- **Decision making** - Determinar se está "pronto"

### Casos de Uso

```
Exemplo 1: Nova tela de checkout
- O que fazer primeiro? → ET descobre fluxos
- O que esperar? → ET revela expectativas reais
- O que pode dar errado? → ET encontra edge cases

Exemplo 2: After refactoring
- Funciona como antes? → ET verifica comportamento
- Há regressões? → ET busca inconsistências
- Performance está ok? → ET sente delays
```

---

## Técnicas de Exploratory Testing

### 1. Touring Methods (James Whittaker)

#### Feature Tour
```markdown
# Feature Tour
"Explore todas as funcionalidades do menu"

Ações:
- Navegar por cada opção do menu
- Ler tooltips e placeholders
- Verificar consistência visual
- Identificar funcionalidades duplicadas
```

#### landmarks Tour
```markdown
# Landmarks Tour
"Identificar pontos de referência na aplicação"

Registrar:
- Telas principais (landmarks)
- Navegação entre elas
- Back button funciona?
- Breadcrumbs corretos?
```

####intellectual Tour
```markdown
# Intellectual Tour
"Testar baseado em conhecimento do domínio"

Foco:
- Regras de negócio críticas
- Casos de uso principais
- Dados de fronteira
- Estados inválidos
```

### 2. CSIO (Clue, Specify, Implement, Operate)

```markdown
# CSIO Checklist

C - Clue (Pista)
└── O que me chamou a atenção?
    - Link com texto estranho
    - Campo com validação incomum
    - Performance lambatmática

S - Specify (Especificar)
└── O que testar?
    - Teste específico para a pista
    - Dados de teste necessários
    - Resultado esperado

I - Implement (Implementar)
└── Como testar?
    - Executar teste
    - Observar resultado
    - Documentar comportamento

O - Operate (Operar)
└── O que descobri?
    - Bug encontrado?
    - Comportamento inesperado?
    - Oportunidade de melhoria?
```

### 3. Session-Based Testing

```markdown
# Session-Based Testing

## Estrutura
- Sessão: 60-90 minutos
- Charter: Objetivo claro
- Debrief: Resumo ao final

## Template de Charter
Charter: Testar fluxo de checkout com múltiplos itens
===============================================
Cover: Checkout, carrinho, pagamento
Test: Adicionar itens, aplicar cupons, escolher frete
Oracle: Comportamento esperado de e-commerce

## Session Log
| Tempo | Ação | Observação |
|-------|------|------------|
| 00:05 | Adicionou 1 item | Ok |
| 00:08 | Adicionou item2 | Total atualiza |
| 00:12 | Removeu item1 | Total recalcula |
| 00:15 | Aplicou cupom | "CUPOM_VÁLIDO" |
```

---

## Charter de Testing

### Template de Charter

```markdown
# Charter de Testing

## Identificação
- Testador: [Nome]
- Data: [Data]
- Sistema: [Nome do sistema]
- Versão: [Versão]

## Objetivo
[Testar o quê?] - [Por quê?]

## Cobertura
- Funcionalidades a testar
- Áreas de foco

## Abordagem
- Técnicas a usar
- Dados de teste

## Oracle
- Como saber se está certo?
- Comportamento esperado

## Tempo Estimado
[ ] 30 min  [ ] 60 min  [ ] 90 min
```

### Exemplos de Charters

```markdown
## Charter 1: Fluxo de Login
Testar o fluxo de login completo incluindo:
- Login com credenciais válidas
- Login com credenciais inválidas
- Recuperação de senha
- Manter sessão ativa
- Logout

Abordagem: Use a técnica de percurso do usuário

## Charter 2: Upload de Arquivos
Explorar limites de upload de arquivos:
- Tipos de arquivo permitidos
- Tamanho máximo
- Nome com caracteres especiais
- Upload simultâneo
- Cancelamento de upload

## Charter 3: Relatórios
Verificar geração de relatórios:
- Filtros funcionam?
- Exportação para PDF/Excel
- Gráficos renderizam?
- Dados estão corretos?
- Performance com muitos dados?
```

---

## Ferramentas de Apoio

### Para Documentação

| Ferramenta | Uso |
|-----------|-----|
| **TestRail** | Gerenciamento de casos e notas |
| **qTest** | Exploratory testing module |
| **PractiTest** | Gerenciamento de testes |
| **Rapid Reporter** | Tomar notas rapidamente |
| **Trello** | Tracking de sessões |

### Para Gravação

```bash
# Rapid Reporter
# Ferramenta simples para Windows que:
# - Captura screenshots automaticamente
# - Log de ações com timestamps
# - Exportação para Excel/HTML

# Loom
# - Gravar tela durante sessão
# - Compartilhar com equipe
# - Revisar depois
```

---

## Combinando ET com Automação

### Estratégia Híbrida

```
┌─────────────────────────────────────────────┐
│                                             │
│   Exploratory Testing                        │
│   ├── Busca por bugs inesperados            │
│   ├── Avaliação de UX                      │
│   └── Context-aware testing                │
│                                             │
│           ↓                                 │
│                                             │
│   Automação de Testes                      │
│   ├── Regressão                            │
│   ├── Testes repetitivos                   │
│   └── Cobertura de edge cases              │
│                                             │
└─────────────────────────────────────────────┘
```

### Fluxo de Trabalho

1. **ET descobre bug** → Automatizar para regressão
2. **ET valida fix** → Executar teste automatizado
3. **ET explora novo feature** → Criar charter
4. **ET identifica padrões** → Criar testes automatizados

### Exemplo: Bug Encontrado em ET

```markdown
# Bug Report - Exploratory Testing

## Descoberta
Durante sessão exploratory no checkout, encontrei um bug:
- Usuário adiciona produto
- Aplica cupom "DESCONTO10"
- Remove o produto
- Cupom ainda aparece aplicado!

## Prioridade
Alta - Usuário pode ser cobrado incorretamente

## Steps to Reproduce
1. Adicionar produto ao carrinho
2. Clicar em "Aplicar Cupom"
3. Inserir "DESCONTO10"
4. Clicar em "Remover" no produto
5. Observar que cupom permanece

## Automação
Criar teste automatizado para prevenir regressão:

```python
def test_cupom_removido_quando_produto_removido():
    # Setup
    checkout_page.add_product()
    checkout_page.apply_coupon("DESCONTO10")
    
    # Action
    checkout_page.remove_product()
    
    # Assert
    assert not checkout_page.has_coupon_applied()
    assert checkout_page.coupon_field_is_empty()
```
```

---

## Matriz de Cobertura

### Cobertura por Feature

| Feature | ET | Automatizado | Cobertura Total |
|---------|----|-------------|----------------|
| Login | ✅ | ✅ | 100% |
| Cadastro | ✅ | ✅ | 100% |
| Checkout | ✅ | ⚠️ Parcial | 90% |
| Pagamento | ✅ | ✅ | 95% |
| Perfil | ⚠️ Parcial | ✅ | 85% |

### Cobertura por Risco

| Risco | Probabilidade | Impacto | ET Recomendado |
|-------|-------------|---------|----------------|
| Processamento de pagamento | Alta | Crítico | 2 horas |
| Cálculo de frete | Média | Alto | 1 hora |
| Upload de imagem | Baixa | Médio | 30 min |
| Notificações | Média | Médio | 30 min |

---

## Métricas de Exploratory Testing

### Session Metrics

```markdown
## Métricas de Sessão

1. Cobertura
   - Funcionalidades exploradas: X/Y
   - Tempo gasto por área

2. Eficiência
   - Bugs encontrados / hora
   - Defeitos críticos encontrados

3. Qualidade
   - Bugs duplicados
   - Bugs únicos válidos

4. Documentation
   - Notas tomadas
   - Screenshots capturados
   - Testes automatizados propostos
```

### Report Template

```markdown
# Relatório de Sessão ET

## Informações Gerais
- Data: [Data]
- Testador: [Nome]
- Duração: [X horas]
- Sistema: [Sistema]

## Resumo
[Brief description of what was tested and overall assessment]

## Cobertura
- Áreas exploradas: [List]
- Funcionalidades testadas: [Count]

## Defeitos Encontrados
| ID | Descrição | Severidade | Status |
|----|-----------|-----------|--------|
| BUG-001 | Cupom não removido | Alta | Aberto |
| BUG-002 | ... | ... | ... |

## Opportunidades de Automação
- [Teste 1] - Prioridade Alta
- [Teste 2] - Prioridade Média

## Avaliação Geral
- ✅ Sistema pronto para produção
- ⚠️ Sistema pronto com restrições
- ❌ Sistema NÃO pronto
```

---

## Conclusão

Exploratory Testing é uma habilidade essencial que complementa testes automatizados. Suas vantagens são:

1. **Flexibilidade** - Adapta-se a qualquer situação
2. **Criatividade** - Encontra bugs inesperados
3. **Eficiência** - Máximo de cobertura em pouco tempo
4. **Contexto** - Avalia experiência real do usuário
5. **Descoberta** - Identifica oportunidades de melhoria

---

### FAQ

**P: ET substitui testes automatizados?**  
R: Não. ET e automação são complementares. Use ET para descoberta, automação para regressão.

**P: Quanto tempo dedicar a ET?**  
R: Recomenda-se 20-30% do tempo de QA para ET em projetos maduros.

**P: Como documentar ET?**  
R: Use charters, session logs, screenshots e bug reports estruturados.

**P: ET funciona em agile?**  
R: Sim! ET é ideal para sprints curtos onde você precisa de feedback rápido.
