Uma jornada de descobertas e aprendizado com testes exploratórios

Conheça as técnicas de testes exploratórios e aplique como um profissional

Amanda Ruiz
Revista eQAlizando (antiga Revista TSPI)
6 min readMay 23, 2023

--

Desenho com mulher usando binóculos e homem usando luneta, ilustrando os testes exploratórios
Fonte da imagem: Haley

Na sua trajetória, provavelmente você foi desafiado a testar um software desconhecido e com base no que aprendeu, utilizando softwares similares, deve ter desenhado um caminho a ser explorado. Durante o percurso deve ter tomado notas sobre o que encontrou e aprendeu sobre o software. Este é o ciclo que compõe os testes exploratórios, você desenha e executa os testes com base na sua experiência, interpreta os resultados e aprende no processo.

Para James Bach e Michael Bolton, precursores do termo testes exploratórios, testar é um processo de avaliar um produto, aprendendo sobre ele através de exploração e experimentação, o que inclui questionamento, estudo, modelagem, observação, inferência, verificação de saída, etc.

Testes exploratórios possuem uma natureza empírica e criativa, porém você pode fazer o uso de técnicas para orientar seus testes. Vamos discuti-las a seguir.

Hipótese

O pesquisador Lee Copeland propôs testes com base na criação de uma hipótese. O ciclo é bem prático, a partir da hipótese criada são planejados os cenários de teste para comprovar se ela é verdadeira ou não; e ao executar os testes você analisa os resultados encontrados com base na hipótese. É importante lembrar que estamos usando cenários de testes que não possuem entradas e saídas definidas, permitindo a pessoa que testa ter liberdade para explorar o cenário proposto. Você poderia criar a seguinte hipótese para um software web moderno onde geralmente há muitas camadas de elementos, cada qual com o seu propósito com por exemplo:

Hipótese 1: O menu superior do software web moderno deve ser apresentado à frente de todos os outros elementos flutuantes na tela de dashboard.

Cenário 1: Realizar scroll na tela com menus flutuantes em foco.

Histórico de Falhas

Quando as falhas que ocorreram no software são conhecidas, pode-se utilizar a técnica de testes exploratórios com base no histórico de falhas. É comum que falhas encontradas durante o desenvolvimento de software sejam registradas em uma ferramenta de gestão de bugs, servindo como base para a realização de novos testes como por exemplo:

O código-fonte do software X está sendo melhorado pelo time de desenvolvedores e é de conhecimento do(a) QA que o software X possui um histórico de falhas crítico no cálculo da funcionalidade Y; ciente desse histórico, o(a) QA utilizando o mesmo raciocínio de quando a falha foi identificada anteriormente, ele(a) explora os módulos do software X validando se existem outras falhas similares, dessa forma mitigando que a mesma falha ou similares ocorram novamente.

Heurísticas

Desenho com mulher com uma ideia na cabeça, ilustrando os mnemonicos das heurísticas
Fonte: Storyset

A pessoa que testa pode aprimorar seus testes exploratórios tornando-os mais estruturados com o uso de heurísticas. Trata-se de processos cognitivos que ajudam a encontrar respostas em condições de incerteza. Seus modelos são concisos e fundamentados a partir de princípios de como testar um software em um contexto específico.

Para melhor compreensão do uso desta técnica vou exemplificar a heurística criada pela Karen Nicole Johnson para testes de regressão, que é composta por 6 características e forma o mnemônico RCRCRC.

[R]ecent

  • Foram criadas novas funcionalidades no software?
  • Foram adicionadas novas áreas no código?
  • Quais testes devo executar para mitigar riscos nas alterações novas?

[C]ore

  • Quais funcionalidades são essenciais neste software e devem permanecer funcionando?
  • Quais testes devo executar para mitigar impactos nas funcionalidades essenciais?

[R]isk

  • Quais áreas do software e/ou do código apresentam maior vulnerabilidade a riscos?

[C]onfiguration

  • Qual parte do código depende de configuração de ambiente?
  • Quais testes devo executar com base em ambiente?

[R]epaired

  • Qual parte do código foi alterada pela correção do defeito?
  • Essa correção impacta em outras partes do código?
  • Essa correção impacta em outras funcionalidades do software?
  • Quais testes devo realizar com base nos defeitos corrigidos?

[C]hronic

  • Quais partes do código e/ou funcionalidades possuem histórico de falhas?
  • Quais testes exploratórios deve realizar com base no histórico de falhas?

Oráculos

O uso das heurísticas nos ajuda a entendermos o que testar, já com o uso de princípios heurísticos de um oráculo podemos identificar possíveis inconsistências no software. James Bach, junto com Michael Bolton, criaram um conjunto de princípios de oráculo que formam o mnemônico (F)EW HICCUPPS. Cada letra representa a letra inicial de um dos princípios: Familiarity, Explainability, World, History, Image, Comparable Products, Claims, User’s Desires, Product, Purpose, Statutes.

Memorizar e praticar esses princípios pode ajudar você a otimizar a forma de reconhecer inconsistências e dar mais credibilidade a seu relatório de incidentes ou sessão, ao relacionar a inconsistência encontrada com o princípio do oráculo, exemplo:

Ao executar um teste exploratório guiado pelo princípio heurístico Statutes (Estatutos) você espera que o software seja consistente com uma lei e/ou regulamento. Os princípios do oráculo direcionam o seu teste e ajudam a encontrar comportamentos distintos do esperado e também a descreve-los de maneira concisa.

Testes Baseados em Sessão

Desenho com homem sentado na frente de uma ampulheta grande, ele está usando um notebook, ilustrando os testes com sessão
Fonte: Storyset

E para finalizar temos os testes baseados em sessão, criados por Jon e James Bach, com o objetivo de tornar testes exploratórios mais amigáveis para a gestão de projetos. Essa metodologia é composta por uma sessão, um charter e um relatório.

A sessão é o tempo definido para a execução dos testes, conhecida também como timebox, sendo recomendado de 45 até 90 minutos.
Os charters são criados para documentar os testes; a seguir conheça o modelo de charter proposto pela pesquisadora Elizabeth Hendrickson:

Explore uma funcionalidade, um módulo
Com o uso de uma técnica, uma ferramenta
Para descobrir (Quais informações espero encontrar?)

Durante a execução do charter você pode anotar os resultados identificados no relatório de sessão, que contêm informações sobre o charter como:

  • Horário de início da sessão;
  • Quem realizou o teste;
  • Tempo dedicado para finalizar cada etapa (execução, investigação, configuração, charter e oportunidade);
  • Imagens da tela adicionadas para evidenciar a inconsistência;
  • Criação de bugs;
  • Registro de dúvidas para serem verificadas após finalizar a sessão.

Este artigo foi criado com o propósito de compartilhar com a comunidade o que tenho aprendido e praticado nas mentorias do Júlio de Lima e em tantas outras leituras complementares de referências da área de testes de software.

Lembre-se que nenhuma técnica de testes exploratórios é completa por si só, por este motivo você pode combinar diferentes técnicas para obter melhores resultados como por exemplo: usar duas heurísticas durante uma sessão, usar o modelo de charter enquanto explora o software com base em uma hipótese ou histórico de falhas.

Espero que as técnicas de testes exploratórios apresentadas aqui demonstrem o valor de sua aplicação no seu dia a dia.

Referências

#exploratorytesting

--

--