Testes Automatizados
A execução manual de testes é uma tarefa dolorosa. Quanto maior o tamanho da aplicação mais tempo dos desenvolvedores será tomado por esse passo. Além disso, os mesmos estão sujeitos a erros, já que o testador desatento pode acabar fazendo as coisas um pouco diferentes dessa vez do que na anterior (OULD, UNWIN, 2001).
Como descrito por Axelrod (2009), com testes automatizados é possível executar todos os níveis de teste sem a necessidade de intervenção humana, e com a certeza de que todos os casos de teste serão corretamente executados em todas as iterações. Sendo assim, também fica muito mais fácil realizar testes de regressão e garantir que a cada adição de código continue mantendo o correto funcionamento da aplicação, dificultando o aparecimento de bugs despercebidos (OULD, UNWIN, 2001).
Outra grande vantagem é a geração automática de relatórios de testes e métricas de cobertura, bem como indicadores evolutivos da base de código. Tudo isso sem a necessidade de investir mais tempo na equipe.
Principais tipos de testes
Testes de Unidade
Testam o comportamento da menor unidade de teste possível. Averiguando por exemplo se uma função dá a saída esperada para um conjunto pré-determinado de entradas. Normalmente constituem a maior parte da base de testes e se tornam requisito necessário para definir uma funcionalidade como pronta.
Testes de Integração
Feitos para testar se diferentes partes do sistema se integram corretamente. Pode testar por exemplo a interação da aplicação com o banco de dados ou a interação entre dois módulos diferentes do sistema.
Testes ponta-a-ponta
Testam um fluxo inteiro da aplicação. Normalmente interagem diretamente com os elementos da interface gráfica, simulando o comportamento do usuário, ao invés de chamar as partes do código.
Testes de Desempenho
Verificam como o software se comporta em um ambiente controlado, avaliando a sua capacidade de resposta em determinados cenários e configurações. Visando aferir seu limite de processamento de dados no seu melhor desempenho.
Pirâmide de Testes
Durante a execução de diferentes tipos de testes é necessário estabelecer uma ordem entre eles. Para tal, uma das possibilidades é a técnica da pirâmide. Essa técnica se constitui em executar primeiro os testes que são mais rápidos, facilitando a detecção de pequenos erros e diminuindo as chances de os testes mais demorados terem que ser executados muitas vezes para uma mesma funcionalidade (VOCKE, 2018). Sendo assim, usualmente a base da pirâmide é constituída pelos testes unitários, seguidos por testes de integração, ponta a ponta, e por fim os demais.
Referências Bibliográficas
- AXELROD, Arnon. Complete Guide to Test Automation. Apress, Israel, 2009.
- OULD, Martin A.; UNWIN, Charles. Testing in Software Development. 3. ed. Cambridge: Cambridge University Press, 2001.
- STOLBERG. Enabling Agile Testing through Continuous Integration. Washington: IEEE Agile Conference, 2009.
- VOCKE, Ham. The Practical Test Pyramid. Martin Fowler, 2018. Disponível em: The Practical Test Pyramid (martinfowler.com), Acesso em: 26 de jul. de 2021.