Nem teste manual, nem automatizado: Teste.

Baker Street Tests
7 min readMar 27, 2023

Existe há muito tempo termos que dividem o entendimento e a forma de lidar com testes: testes manuais e testes automatizados. As perguntas que poderiam se seguir seriam: há uma hierarquia entre essas técnicas? Há diferenças entre essas duas técnicas? Qual é mais apropriada/melhor?

Mas na verdade o que deveria ser questionado é: Existe de fato teste manual e teste automatizado? E apesar da resposta estar no próprio título, vou me aprofundar no assunto ao decorrer do texto.

O estopim

Recentemente, conversando com um colega de profissão que tem um conhecimento aprofundado sobre algumas ferramentas/linguagens de automação, demonstrei certa preocupação com uma onda que vem se instaurando, em especial depois da pandemia, de e-learnings. Alguns desses cursos ministrados por pessoas com pouquíssima experiência e conhecimento da área. Minha preocupação inicial era que, nestes cursos, para que possam ser vendidos, as pessoas geralmente demonstram muita confiança para que os outros confiem nela, na promessa de uma verdade incontestável e um método infalível que resolverá todas suas dúvidas e seus problemas. Será que nesse processo muita coisa equivocada não é ensinada como verdade absoluta, atrapalhando a compreensão das pessoas mais que as auxiliando?

A resposta dele foi o que despertou em mim a vontade de escrever esse artigo: “Em um curso sobre testes automatizados isso me preocuparia mais, mas em um curso sobre testes manuais isso não me gera tanta preocupação”.

Eu entendo completamente o que ele quis dizer com isso, mas acho que há aí, nessa resposta, material para muita, muita coisa, que vou tentar falar aqui sem fazer com que esse artigo se pareça com uma dissertação de mestrado.

Primeiramente, vou tentar explicar de forma muito básica o que o senso comum entende por testes manuais e automatizados: Os automatizados seriam validações, checagens feitas a partir de scripts programados, para rodar sistematicamente em um servidor de automação, como o Jenkins. Os testes manuais seriam as checagens e verificações realizadas sem esses mecanismos.

Eu não pretendo entrar em detalhes aqui sobre técnicas de teste, nem sobre a diferença de um teste exploratório de um teste scriptado porque esses assuntos merecem artigos a parte.

Aqui, pretendo responder duas perguntas: “O que é teste?” e “De fato existe teste automatizado e manual?”.

O que é teste?

Aqui, obviamente vou dar um minúsculo ponta pé inicial na discussão, que não vai abranger tudo o que deve ser discutido sobre o assunto, nem de perto.

Devemos inicialmente diferenciar teste como um todo de checagem e isso é absolutamente importante para entendermos a pergunta que vai se seguir.

Testar é um importante processo de avaliação, um processo de muita demanda cognitiva, senso crítico, intelecto social de aprendizagem através da experiência, experimentação e exploração. Uma maneira mais completa de se falar sobre testes de software é dizer que:

“Testar é adquirir competências, motivações e credibilidade para criar as condições necessárias para avaliar um produto aprendendo com ele através de experiências, explorações e experimentações, onde inclui, questionar, estudar, modelar, observar e ter inferências. Nos testes também está incluso o ato de operar um sistema por seu algoritmo a fim de checar algumas informações sobre ele. Tudo isso para que seja possível ajudar os clientes a tomarem decisões mais assertivas com informações sobre seus riscos.”

Avaliação é uma palavra importante aqui, vamos voltar a ela mais tarde.

Checar é sobre validar, sobre verificar se algo desejado está como deveria, através de algoritmos ou não, exigindo muito menos das habilidades citadas acima.

Validação é outra palavra-chave aqui.

Na possibilidade de não ter ficado claro há ainda algo que eu possa acrescentar: eu me baseei em alguns esboços de James Bach, fazendo desenhos (seriam eles manuais ou automatizados já que não usei o midjourney e sim o paint, que não deixa de ser uma ferramenta computacional?) para ajudar na explicação:

Diagrama baseado em esboços de James Bach

O circulo verde é representado pelo conjunto de atividades que envolve o processo de testar, o circulo tracejado em seu interior representa as atividades que poderiam envolver automações: analise de logs, checagem de resultado, geração de dados, etc. Muito se confunde achando que somente essa parte é testes, o que é plausível de automação. E ai vem a confusão sobre testes manuais, diz-se então que teste manual é realizar o mesmo processo que seria automatizado mas sem a automação, inventam o termo manual para diferenciar esses dois processos.

Outro diagrama baseado em esboços de James Bach

Na verdade o que acontece quando falamos em testes é uma parceria, uma colaboração entre o ser humano e a máquina. Ainda assim é possível dizer que o uso de ferramentas é apenas uma pequena parte do que significa e é importante sobre testar, como é possível ver na relação do primeiro diagrama, entre o circulo verde e o circulo menor, tracejado.

Voltando as palavras que destaquei, avaliação e validação são palavras parecidas, mas não são sinônimos, na verdade, são palavras completamente diferentes. Validação é sinônimo de verificação enquanto avaliação vem do processo de encontrar valia em algo.

Valia não é uma palavra que usamos com frequência e talvez para alguns possa remeter unicamente ao conceito de “mais valia” de Karl Marx. Nesse caso podemos usar um sinônimo: valor. Avaliar é encontrar o valor de algo.

Vou tentar me explicar melhor usando um exemplo prático:

Quando um pai de primeira viagem abre o quarto do seu neném para olhar se ele está dormindo, isso a princípio envolve um processo de checagem/verificação:

— O neném está de olhos fechados? s/n

—O neném está respirando? s/n

— O neném está deitado? s/n

Caso alguma das respostas acima for não, há uma probabilidade que o neném não esteja dormindo, exigindo uma nova gama de verificações.

Avaliar, nesse exemplo, seria fazer uma analise crítica desse neném que dorme:

Será que ele não esta dormindo por muito mais horas que de costume? Caso esteja, será que isso pode significar algum problema na qualidade do seu sono ou de saúde?

Caso esteja dormindo em um horário diferente do de costume, isso pode atrapalhar seu sono no horário habitual? É possível fazer algo para evitar que ele durma novamente nesse horário?

A posição que o neném dorme parece ergonômica e confortável? É uma posição que possa evitar o refluxo?

Há algo que possa ser feito em relação a iluminação do quarto, forma do berço, textura do colchão ou qualquer outra variação que permita que o neném possa ter uma noite melhor de sono?

A localização do quarto e acústica da casa permite que possa facilmente ser percebido caso o neném acorde ou tenha algum problema?

Tendo minimamente entendido a diferença entre validação e avaliação, de testes como um todo e de checagem por si só, podemos então seguir para a segunda pergunta.

De fato existe teste automatizado e manual?

Michael Bolton genialmente fez um comparativo que me agrada muito: Se digo a alguém que sou músico, eu jamais ouviria a pergunta: “Musica manual ou automatizada?” Mesmo que a música tenha sido remasterizada, passado por auto tune, correções do volume dos instrumentos e use um piano elétrico com samples automatizados, ninguém jamais chamaria essa música de automatizada, porque se é entendido que música é algo que vai muito além das ferramentas que foram utilizadas para fazê-la.

Estando claro do que se trata testar e tendo entendido a comparação acima, é fácil responder a pergunta dizendo que, não, não existe teste manual e nem teste automatizado. O que se existe é teste.

Mesmo com chatGPTs é impossível para uma máquina fazer uma análise crítica de valor adequada e consciente. Podemos fazer checagens com ou sem automatizações de outputs, sim, podemos utilizar automações ou não para criações de mocks e dockers, para criações de relatórios e gráficos, de logs ou o que for. Mas nada disso é teste como um todo, e sim pequenas partes que podem compor o teste. As variações de teste pode ser exploratório, experiencial, interativo, instrumental, etc. (formas de avaliar e testar que não entrarei em detalhes agora), mas não manual nem automatizado, um processo cognitivo e social.

Poderíamos dizer então que existem checagens automatizadas e manuais, e esse termo me soa bem mais aceitável. Mas ainda assim sobre isso tenho minhas questões, porque o output (resultado) dessa checagem de fato pode ser gerado automaticamente ou não, mas as checagens em si não são criadas automaticamente. É sempre necessário ter uma pessoa avaliando os critérios de aceitação, os parâmetros e métricas desejados do sistema dentre muitas outras coisas para se criar um código que vá gerar esses outputs, é necessário uma pessoa para atualizar esse código eventualmente e assim por diante.

Conclusão

Voltando para a minha questão inicial, aquela que gerou a reflexão, deixo minha opinião: Se for para aprender técnicas de checagem com outputs sem dependência de uma linguagem de programação ou automação, acredito estar bem ser ensinado por alguém com menor experiência. Mas aprender o que é teste de forma equivocada pode ser bastante problemático.

--

--