Loading...Loading...
42

O que pensar para escrever testes de software e as principais dicas

By Pedro Ladeira

Last update at 04/09/2021

Agora que já sabemos o que é um teste de software, é necessário ter a mentalidade correta de como escrever testes para que eles sejam eficientes. Para isso, vamos passar pelos principais pontos da mentalidade de um tester e analisar as principais dicas para cada tipo.
Se você caiu nesse episódio de paraquedas, saiba que estamos no meio de uma série, a "14 Weeks of Code", na qual iremos estudar o assunto de testes por 14 semanas seguidas. Esse é o segundo episódio e você pode encontrar tudo organizado, clicando aqui

Eu devo testar o meu próprio código?

Para um teste de software ser considerado de qualidade, existem diversos fatores que podem influenciar nessa questão. Entretanto, o psicológico da pessoa que escreve os testes pode fazer uma grande diferença.
Por exemplo, já foi notado que quando um desenvolvedor testa o seu próprio código, ele possui um desempenho inferior quando há uma pessoa dedicada somente nesse quesito. Isso ocorre, pois:
  • É difícil encontrar erros naquilo que você mesmo criou;
  • É complicado pensar em maneiras de o que pode dar errado, quando se pensa, ao mesmo tempo, em o que o seu sistema deve fazer;
  • Em geral, desenvolvedores possuem uma mentalidade orientada a soluções, ao passo que os testers possuem uma mentalidade orientada a problemas;
  • Um tester não precisa saber com detalhes como aquele programa funciona por debaixo dos panos. É necessário, apenas, que ele vista o chapéu de usuário e passe por toda aplicação. É válido ressaltar que diversos desenvolvedores sequer usam aquilo que programam em seus trabalhos :(
De forma resumida, para ser um tester eficiente é necessário procurar maneiras de quebrar o código. A intenção é mostrar que aquilo não funcionou.

Como falar que encontrei um erro no código?

Ao mesmo tempo que você encontrou um erro, é necessário, também, que você tenha as devidas skills comunicativas para reportar aquilo que achou.
Um tester de software pode ser considerado, na maioria das vezes, o vilão da história, uma vez que só quebra os testes e não pensa na pessoa quem escreveu aquilo tudo.
Lembre-se que desenvolvedores são muito apegados naquilo que eles mesmos criam e o que eles não querem é ter alguém ali procurando erros e quebrando código.
Sendo assim, existem alguns pontos que merecem destaque para quando você for abordar um problema:
  • discuta o problema e não a pessoa
  • seja bem específico
  • tenha sempre os fatos e nada de suposições
  • foque no futuro, pois o passado já era
  • se comunique pelo bem comum do produto final
Quando o desenvolvedor e o tester se lembram que ambos desejam ver o sucesso do produto, a conversa se torna bem mais amigável. Lembre-se disso. 
Por outro lado, se você é um desenvolvedor, sinta-se feliz e honrado por ter alguém ali revendo seu código. Isso é uma ótima maneira de aprender com os outros e até com os seus próprios erros. No final, todos ganham experiência. Não seja aquele tipo de pessoa que fica com raiva por ter seu código quebrado por outra pessoa. Evolua.

Quais as melhores dicas para cada tipo de teste?

Como passamos por cada tipo de teste no episódio anterior, irei abordar aqui algumas dicas que podem ser bem aproveitadas em cada um.

Teste unitário

Esse tipo de teste é aquele que você testa o comportamento de um único método ou função. Dessa maneira, é interessante que:
  • Evite ruídos entre os testes, ou seja, tenha isolamento e esteja ciente que cada teste unitário é independente.
  • Para se certificar que seu método está isolado, use beforeEach e afterEach para limpar as variáveis globais, caso tenha criado. Fique tranquilo que ainda iremos ver essa sintaxe.
  • Seja bem detalhista ao escrever a descrição do seu teste. Por exemplo, se você espera receber o número 4 ao fornecer os números 3 e 1, ao testar uma função de soma, literalmente escreva: it("Should return the number 4, when providing the numbers 3 and 1").
  • Procure usar dados falsos para "mockar" dados externos. Como vimos anteriormente, seu teste é independente e, por esse motivo, não é permitido que tenha relação com servidores.

Teste de integração

Para relembrar, os testes de integração irão checar se os componentes conseguem funcionar em conjunto. Tendo isso mente, certifique-se de:
  • Não crie teste inútil. Na maioria das vezes, muitas coisas já estão sendo testadas no teste unitário. Não refaça isso, novamente, nos testes de integração.
  • Foque em testar se os componentes funcionam entre si.
  • Mais uma vez, foque em isolar o ambiente, usando dados falsos e sem relação com serviço externo.

Testes de ponta a ponta (end-to-end ou E2E)

Para revisar, esse tipo de teste é realizado com o propósito de avaliar a qualidade externa do produto, checando se o usuário passa por todo o fluxo de forma correta. Sendo assim, verifique-se de:
  • Valide apenas o fluxo desenhado do projeto, ou seja, cheque se o seu usuário consegue ir de A para B. A intenção aqui não é testar se algum método funciona, tendo em vista que você fez isso nos outros tipos de teste.

Conclusão

Para ser um ótimo tester de software, tenha em mente que você precisa ser rigoroso com o produto e gentil com os desenvolvedores.
Para conseguir produzir ainda mais conteúdos de qualidade, há a opção de você se tornar um membro pago deste canal. Assim, você não só estará ajudando na produção de conteúdo, mas também irá fazer com que isso chegue em ainda mais pessoas. Portanto, se você vê sentido no que falei, considere-se tornar um membro mensal ou anual.
Além disso, também há opção de você apoiar de formas mais pontuais com a compra de cafézinhos. Basta clicar no cafézinho que está bem a sua esquerda e escolher o valor que gostaria de contribuir. Saiba que qualquer ajuda é sempre muito bem-vinda :)
Se você chegou até aqui, não deixe de dar uma raquetada nesse texto. Assim, você mostra que gostou desse conteúdo e faz sentido continuar.
Se ainda não é um membro, se torne um agora para não perder os próximos conteúdos que irão te ajudar nessa jornada. Caso queira saber mais sobre o que falo neste canal, é só clicar aqui.
Por fim, não deixe de compartilhar esse texto com aquela pessoa que também vai gostar.
Ahhh e se quiser trocar qualquer ideia, pode me chamar no instagram.