# Teste Exploratório

Testagem exploratória é avaliar um produto aprendendo sobre ele através de exploração e experimentação, incluindo:

  • Questionamento;
  • Estudo;
  • Modelagem;
  • Observação;
  • Inferência;

Muitas vezes descrito como aprendizagem simultânea, design de teste e execução. Foco na descoberta, e dependa da orientação do testador indivual para descobrir eventuais defeitos que não são abrangidos com facilidade no escopo de outros testes.

# Por que usar testes exploratórios?

A maioria dos testes de qualidade de software usa uma abordagem estruturada, com casos de teste definidos segundo métricas como o histórico de usuários e parâmetros de engenharia de software, com uma projeção de cobertura adequada do ponto de vista técnico.

O que falta é cobertura para casos extremos, que são verificados no UAT e testados com base nas personas dos usuário. Já os testes Exploratórios são aleatórios, ou não estruturados, por natureza, e podem revelar bugs que não seriam descobertos nas modalidades estruturadas de testes.

A execução dos testes é implementada sem a criação de etapas formais, sendo, portanto, um precursor da automação.

Ajuda a formalizar as descobertas e fazer a documentação automática. Com o auxílio de feedback visual e ferramentas de teste colaborativo toda a equipe pode participar de testes exploratórios, permitindo uma rápida daptação às mudanças, promovendo um fluxo de trabalho ágil.

Além disso, o testador pode converter sequências de teste exploratório em scripts de testes funcionais, automatizando o processo.

Portanto, testes exploratórios aceleram a documentação, facilitam os testes unitários e ajudam a criar um ciclo de feedback instantâneo.

# Quando você deve usar testes exploratórios?

São adequados para cenários específicos, como quando alguem precisa aprender sobre um produto ou aplicativo com rapidez e fornecer feedback rápido. Eles ajudam a avaliar a qualidade sob a perspectiva do usuário.

Em muitos ciclos de software, uma iteração inicial é necessária quando as equipes não tem muito tempo para estruturar testes, testes exploratórios, são bastante úteis nesse cenário.

O teste exploratório garante que nenhum caso de falha crítica passe batido, garantindo a qualidade. Também auxiliam no processo de teste de unidade, podendo o tester documentar as etapas e usar essas informações para testar com maior amplitude em sprints posteriores.

É especialmente útil ao encontrar novos cenários de teste para aprimorar a cobertura.

# Quando não executar testes exploratórios?

As organizações devem ser capazes de atingir equilíbrio entre teste exploratório e com script. Sozinhos, os exploratórios não podem oferecer cobertura suficiente, sendo portanto, complementares aos com script em alguns casos.

Especialmente em testes regulamentados ou baseados em conformidade, que requerem o teste com script. Nestes casos, certas checklists e mandatos precisam ser seguidos por motivos legais, sendo preferível o teste com script.

Um exemplo são testes de acessibilidade que seguem protocolos legais, com padrões definidos que precisam ser aprovados.

# Importância dos testes exploratórios para CI/CD

// CI/CD: Continuous Integration/Continuous Delivery, método para entregar aplicações com frequência aos clientes. //

Testes exploratórios abrem os testes para todos, não apenas testadores treinados, assim, a revisão será mais rápida e eficiente, e poderá ser feita por pessoas além do tester tradicional.

Testes exploratórios complementam a estratégia de testes das equipes de QA, incluindo uma série de sessões de teste não documentadas para encontrar bugs ainda não descobertos.

Quando combinados com testes automatizados e outras práticas, aumentam a cobertura de testes, descobrindo casos extremo e adicionando, potencialmente, novos recursos e melhorias no produto.

Sem rigidez estrutural, estimulam a experimentação, a criatividade e a descoberta nas equipes.

A natureza quase instantânea de feedback ajuda a fechar lacunas entre testers e devs, mas acima de tudo, os resultados fornecem uma perspectiva orientada ao usuário e feedback para as equipes de devs.

O objetivo é complementar os testes tradicionais e localizar defeitos ocultos atrás do fluxo de trabalho tradicional.