A primeira pergunta que um desenvolvedor pode se
fazer é: por que testar?
A resposta básica é:
para minimizar a chance de erros passarem por seus testes manuais, o que acaba
gerando mais perda de tempo lá na frente. E agilidade é um atributo fundamental
na programação. Outro ponto importante é que, quando criamos avaliações automatizadas,
também estamos de certa forma documentando nosso código.
Quais são os tipos de testes?
Há majoritariamente três
tipos sendo feitos no front-end. O
E-2-E (end-to-end ou ponta a ponta),
o unitário (o mais comum de todos) e o snapshot
(a comparação de fotos):
Unitário: Se constitui geralmente em verificar as funções do código e, em
alguns casos, como Vuejs, os componentes. Mesmo sendo um ótimo tipo de teste,
ele possui seus problemas como dificultar um pouco mais a refatoração de código
por criar uma situação onde ele também precisa ser alterado.
E-2-E: O e-2-e é necessário para garantir que o fluxo do programa está
funcionando. Ele simula um navegador e repete as ações passadas, refazendo,
assim, o fluxo e vendo se algo quebra. Uma desvantagem é a sua demora, pois
precisa simular o navegador e aguardar um tempo entre as ações. Outra é que
esse tipo de avaliação também pode dar falsos positivos. Um exemplo é: se
alguma API não der a resposta esperada, isso pode mudar o resultado sendo que
não seria culpa da sua aplicação.
Snapshot: Esta forma de verificação parte da comparação
entre fotos (ou snapshots). A
princípio, ele seria feito usando uma foto do visual do seu programa, mas, via
de regra, o que se faz é usar frameworks
como o Jest. Nesse caso, pega-se uma “foto” do código, ou seja, os valores do
que estaria sendo exibido, e se compara com a snapshot em questão, lembrando que ela tem de ser gerada primeiro.
Portanto, antes de rodá-lo pela primeira vez, é importante garantir que seu app
está do jeito que você deseja.
Observação: É possível
gerar novas “fotos” matrizes para o snapshot.
No entanto, se houver erro nessa “imagem” e ele não for reparado, o teste dará
falsos positivos e irá atrapalhar o desenvolvimento geral do aplicativo.
Quando testar?
Uma parte importante dos
testes automatizados é quando os realizar. Para isso, muitas pessoas sugerem
uma regra simples: se o tempo gasto gerando e mantendo o teste for maior do que
testar manualmente (considerando que você pegaria os bugs quase todos nas versões manuais), não vale a pena testar. Caso
contrário, eles são uma ótima forma de ajudar na documentação do código, de
torná-lo mais familiar, de diminuir possíveis dores de cabeça com avaliações
manuais e de ganhar tempo.
Referências:
YERBURGH, Edd. Testing Vue. js Applications. Manning
Publications, 2018.