Testes exploratórios é uma abordagem à avaliação de software que integra o aprendizado sobre o programa que está sendo desenvolvido com planos para testes futuros. Testes exploratórios são às vezes referidos como testes ad hoc.
A codificação ONCE está completa, testes exploratórios ajudam os desenvolvedores a aprender mais sobre a funcionalidade de um programa e descobrir se os requisitos foram perdidos ou mal entendidos. Requisitos falhados podem se transformar em novas histórias de usuários, ou podem ser bugs que precisam ser corrigidos imediatamente.
Testers gerenciam o escopo dos testes exploratórios usando um conceito chamado charters. Cartas são declarações sobre quais aspectos do sistema devem ser testados. Ao contrário dos scripts, cartas de testes exploratórios deixam os passos reais do teste para o testador experiente e disciplinado. Por exemplo, enquanto um script pode dizer "Digite John Smith no campo Usuário e 1234 no campo Senha", uma carta pode simplesmente dizer "teste a funcionalidade de login"
Desenhar cartas para testes exploratórios é um dos aspectos mais difíceis dos testes exploratórios. É difícil saber quanto teste é suficiente, que aspectos do sistema precisam de mais cobertura ou quanto tempo um testador deve gastar examinando qualquer aspecto particular do sistema.