Heurísticas de teste de software: o que são e seus benefícios.

Uma poderosa ferramenta para guiar os testes exploratórios de sua aplicação.

Gabriel Santos
Revista eQAlizando (antiga Revista TSPI)
4 min readApr 19, 2020

--

O que são heurísticas?

Heurísticas são processos que ocorrem naturalmente na mente do ser humano. Elas ajudam a solucionar problemas e tomar decisões em condições de incerteza, substituindo a forma complexa de fazer algo, por outra mais simples e ainda assim trazendo resultados satisfatórios.

Neste artigo, Amos Tversky e Daniel Kahneman, estudiosos de psicologia, definem as heurísticas como:

“Princípios que reduzem as tarefas complexas de avaliar probabilidades e prever valores para operações de julgamento mais simples.”

Trocando em miúdos, heurísticas são atalhos mentais.

Heurísticas e o contexto de teste de software

Para profissionais que testam aplicações, as heurísticas são utilizadas em sessões de testes exploratórios, onde funcionam como um guia que auxiliam o testador a não esquecer de pontos-chave que precisam ser exercitados. Deve-se levar em consideração que a utilização de heurísticas não cobre totalmente todos os pontos que precisam ser testados, porém torna o processo de testes exploratórios mais estruturado, previsível e assertivo.

As heurísticas geralmente são construídas através de mnemônicos, como no exemplo a seguir, da heurística CHIQUE do Júlio de Lima:

  • Campos obrigatórios;
  • Habilitar/Desabilitar formulários;
  • Interrupção da ação;
  • Quebra de fluxos;
  • Usabilidade dos menus;
  • Estouro de campos.

O acrônimo da heurística é formado pela inicial de cada característica do sistema que precisa ser exercitada. Então quando é necessário testar uma nova funcionalidade que envolva estes pontos é mais fácil lembrar do nome da heurística do que de todos estes aspectos de uma só vez.

Além da utilização de mnemônicos, as heurísticas também podem ser construídas na forma de checklists e “cheat sheets” (folha de dicas). Elisabeth Hendrickson e outros pesquisadores descreveram algumas das heurísticas que eles utilizam em um cheat sheet, que você pode conferir aqui.

Heurísticas popularmente conhecidas

Profissionais do mundo todo já trabalham com heurísticas há alguns anos e algumas delas são bem conhecidas dentro da comunidade. Citarei algumas logo abaixo:

  1. Goldilocks - Elizabeth Hendrickson

Essa heurística tem como referência a fábula britânica “Goldilocks and the Three Bears” e foca em testes de campos da aplicação utilizando o conceito de “muito pequeno, muito grande e do tamanho certo”. Podemos realizar testes em um campo de e-mail e não colocar valor nenhum no campo (muito pequeno), colocar um e-mail estratosfericamente grande (muito grande), colocar um e-mail correto (do tamanho certo) e verificar como a aplicação se comporta.

Elizabeth trata dessa heurística e de outras em seu livro, “Explore it”!

2. CRUD - James Martin

James Martin foi o responsável por propagar o conceito de CRUD em seu livro publicado em 1980 “Managing the Data-base Environment”. Descobri que o acrônimo também é uma heurística lendo o post do Conor Fitzgerald, em seu blog pessoal. Os termos Create, Read, Update e Delete podem ser exercitados, por exemplo, em testes que verificam a consistência dos dados em uma loja de e-commerce:

  • Criar um produto;
  • Pesquisar o produto criado ou observar se ele aparece na lista de produtos cadastrados;
  • Alterar algum dado desse produto e verificar se a alteração foi feita;
  • Excluir esse produto e verificar se a exclusão foi feita.

Heurísticas personalizadas

Atualmente trabalho na Huggy, uma plataforma que tem como objetivo melhorar a relação entre as organizações e seus clientes através de canais de comunicação e automação de conversas. Estava realizando testes exploratórios na integração de um desses canais e sentindo que, mesmo exercitando bastante a aplicação, os testes que tinha realizado não eram suficientes para liberar esta integração.

Estou fazendo um curso do Júlio de Lima, o TSPI e em um dos módulos ele apresenta o conceito de heurísticas. Então decidi criar uma heurística personalizada que atendesse a minha necessidade: exercitar com confiabilidade a integração de canais. Eis que surgiu a heurística PAMMDA!

  • Parâmetros do sistema: envolve exercitar os parâmetros do sistema no canal;
  • API: envolve testar os recursos da API relacionados ao canal;
  • Manipulação de chats: envolve a manipulação de chats do canal, pela plataforma;
  • Mensagens: envolve enviar com sucesso os vários tipos de mensagem suportadas pelo canal;
  • Desempenho: envolve testar o tempo entre troca de mensagens da origem até o destino;
  • Automação: envolve testar os recursos de automação da plataforma no canal.

Essa heurística tem ampla cobertura de testes dentro do contexto que atuo, pois garante que boa parte do sistema seja exercitada. Os resultados foram muito positivos, pois tive noção dos pontos chave que precisam ser testados, de aumentar a confiabilidade do teste e de diminuir o tempo necessário para sessões de teste exploratório.

As heurísticas são atalhos mentais poderosos que podem auxiliar bastante na atividade de testes, se aplicados corretamente. Caso alguma heurística conhecida não funcione no cenário que você trabalha, pode-se utilizar outras ou adaptar as já conhecidas e as possibilidades de personalização dependem de sua criatividade!

Você pode encontrar várias outras heurísticas popularmente conhecidas neste artigo, do Richard Bradshaw e da Sarah Deery, além de referências para vários outros profissionais que também atuam com esta ferramenta. Considero a leitura válida, pois me baseei nesse artigo para escrever este aqui.

Se vocês utilizam também esta estratégia, coloquem nos comentários. Ficarei feliz em ajudar e discutir o tema com vocês! #hugs

Referências

--

--