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

<hr>
<h2>O Que é Exploratory Testing?</h2>

<p>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.</p>

<h3>Características Fundamentais</h3>

<figure class="wp-block-table"><table>
<tr><th>Aspecto</th><th>Scripted Testing</th><th>Exploratory Testing</th></tr>
<tr><td><strong>Planejamento</strong></td><td>Detalhado antes</td><td>Simultâneo</td></tr>
<tr><td><strong>Documentação</strong></td><td>Antes da execução</td><td>Durante e depois</td></tr>
<tr><td><strong>Abordagem</strong></td><td>Repetitiva</td><td>Adaptativa</td></tr>
<tr><td><strong>Criatividade</strong></td><td>Limitada</td><td>Alta</td></tr>
<tr><td><strong>Descoberta</strong></td><td>Busca por defeitos específicos</td><td>Busca por defeitos inesperados</td></tr>
<tr><td><strong>Melhor para</strong></td><td>Regressão, compliance</td><td>Novos features, UX</td></tr>
</table></figure>

<hr>
<h2>Por Que Exploratory Testing?</h2>

<h3>Quando ET Brilha</h3>

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

<pre><code>Exemplo 1: Nova tela de checkout<ol><li>O que fazer primeiro? → ET descobre fluxos</li>
<li>O que esperar? → ET revela expectativas reais</li>
<li>O que pode dar errado? → ET encontra edge cases</li>
</ol>
Exemplo 2: After refactoring<ol><li>Funciona como antes? → ET verifica comportamento</li>
<li>Há regressões? → ET busca inconsistências</li>
<li>Performance está ok? → ET sente delays</li>
</ol></code></pre>

<hr>
<h2>Técnicas de Exploratory Testing</h2>

<h3>1. Touring Methods (James Whittaker)</h3>

<h4>Feature Tour</h4>
<pre><code># Feature Tour
"Explore todas as funcionalidades do menu"

<p>Ações:<ol><li>Navegar por cada opção do menu</li><br><li>Ler tooltips e placeholders</li><br><li>Verificar consistência visual</li><br><li>Identificar funcionalidades duplicadas</li><br></ol></code></pre></p>

<h4>landmarks Tour</h4>
<pre><code># Landmarks Tour
"Identificar pontos de referência na aplicação"

<p>Registrar:<ol><li>Telas principais (landmarks)</li><br><li>Navegação entre elas</li><br><li>Back button funciona?</li><br><li>Breadcrumbs corretos?</li><br></ol></code></pre></p>

<p>####intellectual Tour<br><pre><code># Intellectual Tour<br>"Testar baseado em conhecimento do domínio"</p>

<p>Foco:<ol><li>Regras de negócio críticas</li><br><li>Casos de uso principais</li><br><li>Dados de fronteira</li><br><li>Estados inválidos</li><br></ol></code></pre></p>

<h3>2. CSIO (Clue, Specify, Implement, Operate)</h3>

<pre><code># CSIO Checklist

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

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

<p>I - Implement (Implementar)<br>└── Como testar?<br>    - Executar teste<br>    - Observar resultado<br>    - Documentar comportamento</p>

<p>O - Operate (Operar)<br>└── O que descobri?<br>    - Bug encontrado?<br>    - Comportamento inesperado?<br>    - Oportunidade de melhoria?<br></code></pre></p>

<h3>3. Session-Based Testing</h3>

<pre><code># Session-Based Testing

<h2>Estrutura</h2><ol><li>Sessão: 60-90 minutos</li>
<li>Charter: Objetivo claro</li>
<li>Debrief: Resumo ao final</li>
</ol>
<h2>Template de Charter</h2>
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

<h2>Session Log</h2>
<figure class="wp-block-table"><table>
<tr><th>Tempo</th><th>Ação</th><th>Observação</th></tr>
<tr><td>00:05</td><td>Adicionou 1 item</td><td>Ok</td></tr>
<tr><td>00:08</td><td>Adicionou item2</td><td>Total atualiza</td></tr>
<tr><td>00:12</td><td>Removeu item1</td><td>Total recalcula</td></tr>
<tr><td>00:15</td><td>Aplicou cupom</td><td>"CUPOM_VÁLIDO"</td></tr>
</table></figure>

<p></code></pre></p>

<hr>
<h2>Charter de Testing</h2>

<h3>Template de Charter</h3>

<pre><code># Charter de Testing

<h2>Identificação</h2><ol><li>Testador: [Nome]</li>
<li>Data: [Data]</li>
<li>Sistema: [Nome do sistema]</li>
<li>Versão: [Versão]</li>
</ol>
<h2>Objetivo</h2>
[Testar o quê?] - [Por quê?]

<h2>Cobertura</h2><ol><li>Funcionalidades a testar</li>
<li>Áreas de foco</li>
</ol>
<h2>Abordagem</h2><ol><li>Técnicas a usar</li>
<li>Dados de teste</li>
</ol>
<h2>Oracle</h2><ol><li>Como saber se está certo?</li>
<li>Comportamento esperado</li>
</ol>
<h2>Tempo Estimado</h2>
[ ] 30 min  [ ] 60 min  [ ] 90 min
</code></pre>

<h3>Exemplos de Charters</h3>

<pre><code><h2>Charter 1: Fluxo de Login</h2>
Testar o fluxo de login completo incluindo:<ol><li>Login com credenciais válidas</li>
<li>Login com credenciais inválidas</li>
<li>Recuperação de senha</li>
<li>Manter sessão ativa</li>
<li>Logout</li>
</ol>
Abordagem: Use a técnica de percurso do usuário

<h2>Charter 2: Upload de Arquivos</h2>
Explorar limites de upload de arquivos:<ol><li>Tipos de arquivo permitidos</li>
<li>Tamanho máximo</li>
<li>Nome com caracteres especiais</li>
<li>Upload simultâneo</li>
<li>Cancelamento de upload</li>
</ol>
<h2>Charter 3: Relatórios</h2>
Verificar geração de relatórios:<ol><li>Filtros funcionam?</li>
<li>Exportação para PDF/Excel</li>
<li>Gráficos renderizam?</li>
<li>Dados estão corretos?</li>
<li>Performance com muitos dados?</li>
</ol></code></pre>

<hr>
<h2>Ferramentas de Apoio</h2>

<h3>Para Documentação</h3>

<figure class="wp-block-table"><table>
<tr><th>Ferramenta</th><th>Uso</th></tr>
<tr><td><strong>TestRail</strong></td><td>Gerenciamento de casos e notas</td></tr>
<tr><td><strong>qTest</strong></td><td>Exploratory testing module</td></tr>
<tr><td><strong>PractiTest</strong></td><td>Gerenciamento de testes</td></tr>
<tr><td><strong>Rapid Reporter</strong></td><td>Tomar notas rapidamente</td></tr>
<tr><td><strong>Trello</strong></td><td>Tracking de sessões</td></tr>
</table></figure>

<h3>Para Gravação</h3>

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

<p># Loom<br># - Gravar tela durante sessão<br># - Compartilhar com equipe<br># - Revisar depois<br></code></pre></p>

<hr>
<h2>Combinando ET com Automação</h2>

<h3>Estratégia Híbrida</h3>

<pre><code>┌─────────────────────────────────────────────┐
│                                             │
│   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              │
│                                             │
└─────────────────────────────────────────────┘
</code></pre>

<h3>Fluxo de Trabalho</h3>
<ol><li><strong>ET descobre bug</strong> → Automatizar para regressão</li>
<li><strong>ET valida fix</strong> → Executar teste automatizado</li>
<li><strong>ET explora novo feature</strong> → Criar charter</li>
<li><strong>ET identifica padrões</strong> → Criar testes automatizados</li>
</ol>
<h3>Exemplo: Bug Encontrado em ET</h3>

<pre><code># Bug Report - Exploratory Testing

<h2>Descoberta</h2>
Durante sessão exploratory no checkout, encontrei um bug:<ol><li>Usuário adiciona produto</li>
<li>Aplica cupom "DESCONTO10"</li>
<li>Remove o produto</li>
<li>Cupom ainda aparece aplicado!</li>
</ol>
<h2>Prioridade</h2>
Alta - Usuário pode ser cobrado incorretamente

<h2>Steps to Reproduce</h2><ol><li>Adicionar produto ao carrinho</li>
<li>Clicar em "Aplicar Cupom"</li>
<li>Inserir "DESCONTO10"</li>
<li>Clicar em "Remover" no produto</li>
<li>Observar que cupom permanece</li>
</ol>
<h2>Automação</h2>
Criar teste automatizado para prevenir regressão:

<p></code></pre>python<br>def test_cupom_removido_quando_produto_removido():<br>    # Setup<br>    checkout_page.add_product()<br>    checkout_page.apply_coupon("DESCONTO10")</p>

<p># Action<br>    checkout_page.remove_product()</p>

<p># Assert<br>    assert not checkout_page.has_coupon_applied()<br>    assert checkout_page.coupon_field_is_empty()<br><pre><code></code></pre></p>

<hr>
<h2>Matriz de Cobertura</h2>

<h3>Cobertura por Feature</h3>

<figure class="wp-block-table"><table>
<tr><th>Feature</th><th>ET</th><th>Automatizado</th><th>Cobertura Total</th></tr>
<tr><td>Login</td><td>✅</td><td>✅</td><td>100{6727d158e4474b0847515bd23a8ee4bebd5f1aac7a18bc968e51d8985dccb442}</td></tr>
<tr><td>Cadastro</td><td>✅</td><td>✅</td><td>100{6727d158e4474b0847515bd23a8ee4bebd5f1aac7a18bc968e51d8985dccb442}</td></tr>
<tr><td>Checkout</td><td>✅</td><td>⚠️ Parcial</td><td>90{6727d158e4474b0847515bd23a8ee4bebd5f1aac7a18bc968e51d8985dccb442}</td></tr>
<tr><td>Pagamento</td><td>✅</td><td>✅</td><td>95{6727d158e4474b0847515bd23a8ee4bebd5f1aac7a18bc968e51d8985dccb442}</td></tr>
<tr><td>Perfil</td><td>⚠️ Parcial</td><td>✅</td><td>85{6727d158e4474b0847515bd23a8ee4bebd5f1aac7a18bc968e51d8985dccb442}</td></tr>
</table></figure>

<h3>Cobertura por Risco</h3>

<figure class="wp-block-table"><table>
<tr><th>Risco</th><th>Probabilidade</th><th>Impacto</th><th>ET Recomendado</th></tr>
<tr><td>Processamento de pagamento</td><td>Alta</td><td>Crítico</td><td>2 horas</td></tr>
<tr><td>Cálculo de frete</td><td>Média</td><td>Alto</td><td>1 hora</td></tr>
<tr><td>Upload de imagem</td><td>Baixa</td><td>Médio</td><td>30 min</td></tr>
<tr><td>Notificações</td><td>Média</td><td>Médio</td><td>30 min</td></tr>
</table></figure>

<hr>
<h2>Métricas de Exploratory Testing</h2>

<h3>Session Metrics</h3>

<pre><code><h2>Métricas de Sessão</h2>
<ol><li>Cobertura</li>
</ol>   - Funcionalidades exploradas: X/Y
   - Tempo gasto por área
<ol><li>Eficiência</li>
</ol>   - Bugs encontrados / hora
   - Defeitos críticos encontrados
<ol><li>Qualidade</li>
</ol>   - Bugs duplicados
   - Bugs únicos válidos
<ol><li>Documentation</li>
</ol>   - Notas tomadas
   - Screenshots capturados
   - Testes automatizados propostos
</code></pre>

<h3>Report Template</h3>

<pre><code># Relatório de Sessão ET

<h2>Informações Gerais</h2><ol><li>Data: [Data]</li>
<li>Testador: [Nome]</li>
<li>Duração: [X horas]</li>
<li>Sistema: [Sistema]</li>
</ol>
<h2>Resumo</h2>
[Brief description of what was tested and overall assessment]

<h2>Cobertura</h2><ol><li>Áreas exploradas: [List]</li>
<li>Funcionalidades testadas: [Count]</li>
</ol>
<h2>Defeitos Encontrados</h2>
<figure class="wp-block-table"><table>
<tr><th>ID</th><th>Descrição</th><th>Severidade</th><th>Status</th></tr>
<tr><td>BUG-001</td><td>Cupom não removido</td><td>Alta</td><td>Aberto</td></tr>
<tr><td>BUG-002</td><td>...</td><td>...</td><td>...</td></tr>
</table></figure>

<h2>Opportunidades de Automação</h2><ol><li>[Teste 1] - Prioridade Alta</li>
<li>[Teste 2] - Prioridade Média</li>
</ol>
<h2>Avaliação Geral</h2><ol><li>✅ Sistema pronto para produção</li>
<li>⚠️ Sistema pronto com restrições</li>
<li>❌ Sistema NÃO pronto</li></ol></ul>
</code></pre>

<hr>
<h2>Conclusão</h2>

<p>Exploratory Testing é uma habilidade essencial que complementa testes automatizados. Suas vantagens são:<br><ol><li><strong>Flexibilidade</strong> - Adapta-se a qualquer situação</li><br><li><strong>Criatividade</strong> - Encontra bugs inesperados</li><br><li><strong>Eficiência</strong> - Máximo de cobertura em pouco tempo</li><br><li><strong>Contexto</strong> - Avalia experiência real do usuário</li><br><li><strong>Descoberta</strong> - Identifica oportunidades de melhoria</li><br></ol><br><hr><br><h3>FAQ</h3></p>

<p><strong>P: ET substitui testes automatizados?</strong>  <br>R: Não. ET e automação são complementares. Use ET para descoberta, automação para regressão.</p>

<p><strong>P: Quanto tempo dedicar a ET?</strong>  <br>R: Recomenda-se 20-30{6727d158e4474b0847515bd23a8ee4bebd5f1aac7a18bc968e51d8985dccb442} do tempo de QA para ET em projetos maduros.</p>

<p><strong>P: Como documentar ET?</strong>  <br>R: Use charters, session logs, screenshots e bug reports estruturados.</p>

<p><strong>P: ET funciona em agile?</strong>  <br>R: Sim! ET é ideal para sprints curtos onde você precisa de feedback rápido.</p>