Teste unitário no Front-end, realmente faz diferença?

Bruno Benicio
Bowe
Published in
4 min readDec 1, 2020

Fala galera! Tudo bem? Hoje vamos falar um pouco sobre testes unitários e explicar de uma vez por todas os testes no Front-end e os porquês de realizá-los.

Introdução

Não importa quanto tempo você está no mundo de Front-end, você certamente já viu alguém discutindo esse assunto: “Afinal, pra que eu preciso fazer testes unitários?”.

Pois bem, nesse artigo eu vou tentar explicar alguns dos motivos pelos quais fazemos testes unitários na Bowe e vamos tentar, de uma vez por todas, trazer luz à essa incessante discussão!

O que são testes unitários

Tudo bem, nesse ponto certamente você conhece o que são testes unitários, mas pode ser que você seja um desavisado e acabou caindo aqui de paraquedas, por esse motivo, eu lhes digo: Testes unitários, são código que testam outras partes pequena do seu código, que você pode chamar de unidade, dado um comportamento ou entrada dessa unidade, você testa a regra de negócio ou saída dessa unidade.

Existem uma série de tipos de teste que podemos executar em software, a seguir eu falo um pouco mais sobre o que é a pirâmide de teste e porque você deveria começar com testes unitários.

Piramide de testes.

No desenvolvimento de software, temos esse conceito chamado de Pirâmide de testes, a ideia é que você comece por baixo na pirâmide e em seguida vá escalando os seus testes, porém quanto mais alto na pirâmide você está, mais lento e caro esses testes ficam e mais especializados também.

Pirâmide de testes

Tá, mas e dai? porque eu devo testar meu frontend?

Quem nunca ficou horas procurando um problema em um componente e simplesmente parecia impossível achar!

Ou até mesmo abriu um componente e se deparou com um componente de fazia milhões de coisas (Leia mais sobre Single Responsability Principle).

Uma grande verdade é que quanto mais você testa o seu código, mais vai precisando refatorar ele e percebendo a quantidade de mau cheiros de código que deixou durante o desenvolvimento, os testes te ajudam a manter um código limpo.

Outro ponto: Quem nunca subiu um problema pra produção que rodava muito bem localmente que atire a primeira pedra.

Testes unitários bem escritos nos ajudam a ser menos enganados por falsos positivos de funcionamento.

Junto com um processo bem feito de Integração Contínua, podemos automatizar nossos testes e só mandar código que passou nos testes pra produção, isso deveria ser o básico, mas sabemos que muitos não fazem.
Porém, o que é mais sensacional em frameworks e bibliotecas orientados a componentes, é a documentação. Se você nunca precisou ler os detalhes de implementação de um componente de 600 linhas pra saber como usar ele, você provavelmente tem um storybook ou Testes unitários.

Como os testes renderizam e testam comportamento e entrada e saída dos componentes do nosso sistema, eles são a melhor documentação da base de código que um dev pode ter, falamos tanto de componentes, como daquela pasta utils/helpers que sabemos que sua aplicação tem.

“Eu não tenho tempo pra escrever testes unitários”

Sim, você tem, só não sabe ainda.

Uma suíte de testes bem escrita leva certo tempo pra acontecer, dói pra aprender e certamente você testará um monte de coisa que não precisava, mas com certa maturidade de testes, você economiza não só o seu tempo, mas o tempo da sua operação inteira. Duvida?

Imagine aquele bug em produção, quando o usuário loga ele pode ser redirecionado para sua conta de administrador ou de usuário normal, você faz uma alteração e testa o login, abre o pull request, seu par aprova e pronto, código em produção, dever cumprido, certo?

Porém o suporte começa a receber chamados do seu cliente, dizendo que não está conseguindo logar no sistema.

Esse é você nesse momento

Depois de 1 hora de análise de umas duas pessoas, a equipe de suporte fala com seu scrum master, que gasta algum tempo pra passar pra equipe de desenvolvimento, você percebe que só testou um tipo de usuário. Você acabou de gastar dezenas de horas, não só suas (que agora vai ter que codificar novamente), mas de outras pessoas. Isso tudo poderia ser resolvido com um teste unitário, que verifica a role do usuário e testa o redirecionamento dele na plataforma.

Ao contrário do que se pensa, testes unitários(automatizados no geral), ajudam a economizar dinheiro e tempo.

Pessoal, encerro por aqui, vejo vocês na próxima e não esqueçam de testar seu código! ;)

Referências:

--

--