Um dos principais desafios que os desenvolvedores enfrentam ao testar seus sistemas reside em casos de testes de engenharia que sejam bons o suficiente para revelar bugs. E embora nosso conhecimento sobre testes de software e geração automatizada de casos de teste já seja bastante significativo, na prática, os desenvolvedores ainda são os responsáveis pela engenharia manual dos casos de teste. Portanto, compreender os processos de pensamento e tomada de decisão dos desenvolvedores enquanto projetam casos de teste é uma etapa fundamental para tornar os desenvolvedores melhores no teste de software.

Neste artigo, observamos 13 desenvolvedores pensando em voz alta enquanto testam diferentes métodos de código aberto do mundo real e usamos essas observações para explicar como os desenvolvedores projetam casos de teste. Em seguida, desafiamos e aumentamos nossas principais descobertas entrevistando 72 desenvolvedores de software sobre suas práticas de teste.

Discutimos nossos resultados de três ângulos diferentes. Primeiro, propomos uma estrutura geral que explica como os desenvolvedores raciocinam sobre os testes. Em segundo lugar, propomos e descrevemos em detalhes as três diferentes estratégias abrangentes que os desenvolvedores aplicam durante os testes. Terceiro, comparamos e relacionamos as nossas observações com o corpo de conhecimento existente e propomos estudos futuros que possam avançar o nosso conhecimento sobre o tema.