Os testes possuem um papel vital no desenvolvimento de sistemas, garantindo a integridade e qualidade dos produtos ou serviços entregues aos usuários. Na realização de testes manuais, muitas vezes pequenos problemas simples passam despercebidos e são enviados para a produção, o que pode acarretar na quebra de confiança do cliente com o serviço fornecido.
Por isso, os testes automatizados são tão importantes, serão eles que vão colaborar para termos maiores garantias sobre a integridade, segurança, identificação de bugs, erros de sintaxe/lógica e problemas na interface. Pense, qual seria a complexidade de aplicar uma melhoria em um código com muitas de regras de negócio, certamente a chance de uma dessas regras ser impactada é alta, sem testes para assegurar a sua perfeita execução se torna um trabalho lento e custoso.
Há três tipos de testes que vale a pena você conhecer e se aprofundar:
Testes Unitários
Os testes unitários como o próprio nome já se refere consiste em validar a menor fração de um código. No caso das linguagens funcionais esse teste é extremamente útil, conceitualmente o teste precisa funcionar isoladamente, ou seja, cada teste escrito será destinado exclusivamente a cobrir uma certa parte do código, e deve ser auto suficiente para ser executado rápido e isolado.
O principal objetivo desse tipo de teste é fornecer rapidamente informações ao desenvolvedor sobre a implementação do seu código, por isso não é utilizado nenhuma operação I/O. Quaisquer que forem as operações de entrada e saída não são incluídas durante o processo (Banco de dados, arquivos, rede etc).
Mas como eu vou testar a listagem de dados dessa forma? Usando Objeto Mock, que são dados em memória utilizados para simular comportamentos esperados de forma controlada. Os testes unitários irão garantir que menos bugs escapem, o resultado disso será mais tempo para o desenvolvedor escrever código que gere valor.
Testes de Integração
Como visto anteriormente, o teste unitário é responsável por validar as menores frações de um sistema. Agora, o teste de integração serve para unir essas unidades de código.
Conceitualmente, no teste de integração são validados contextos maiores, onde envolvemos a interoperabilidade entre as aplicações.
O objetivo desse teste é fazer a junção dos testes unitários para que eles validem um contexto comum. Pense na hipótese: um trabalho em rede com dois times de desenvolvimento, um deles desenvolvem as API ‘s com os serviços e o outro desenvolve uma interface Web. O teste de integração entra nesse cenário como método para assegurar que os dois trabalham juntos sem falhas.
Teste E2E
Um teste E2E, ou End-to-End, é um método de teste utilizado para testar o fluxo da aplicação, como por exemplo um processo de autenticação, sucesso em um redirecionamento a partir de um link clicado, a validação de um formulário, se o pagamento de um produto foi confirmado. Seu intuito é replicar cenários reais feitos pelos usuários e, então, assegurar que o processo estará funcionando sem falhas quando disponível ao usuário final.
O teste E2E se assemelha com o conceito dos famosos testes de aceitação, que validam através de Users Stories se os pedidos que o cliente fez estão sendo entregues.
Uma ótima ferramenta como dica para se aprofundar é o Robot, ele é um framework de automatização de testes e é amplamente utilizado. Com uma curva de aprendizagem baixa, atende muito bem esse tipo de testes. O Robot pode ser utilizado em aplicações web, mobile e até em requisições para API’s.
Referências:
O que é teste de unidade? Digité, 2022. Disponível em: https://www.digite.com/pt-br/agile/testes-unitarios/#:~:text=O%20teste%20unit%C3%A1rio%20consiste%20em,em%20l%C3%ADnguas%20processuais%20e%20funcionais . Acesso em: 03/02/2022