A importância da automação dos testes de software

Letícia Silva
Único
Published in
3 min readJun 15, 2021
Fonte: unsplash

Os softwares estão cada vez mais presentes em nossas vidas. Além de trazerem eficiência para o negócio das empresas, cada vez mais os usuários interagem com os softwares no dia a dia.

Os principais desafios são evitar que os usuários tenham erros e experiências desagradáveis ao usar o software e disponibilizar funcionalidades rapidamente sem comprometer a qualidade.

Tradicionalmente, o teste era um trabalho manual realizado ao disponibilizar o software em ambiente de teste, através da interface de usuário era validado se algo estava quebrado. Testar todas as funcionalidades do software pode ser demorado, repetitivo e propenso a falhas na validação.

Os processos de publicação do software tendem a ser realizados repetidamente à medida que o time cresce ou a frequência nas entregas aumenta, tornando inviável realizá-los manualmente, sem comprometer a produtividade do time na entrega de um software funcional. Automatizar esses processos é o único caminho a seguir.

Com a entrega contínua você usa um pipeline para automatizar o build, os testes e o deployment do software nos ambientes.

Acredito que faz sentido codificar um conjunto de testes que serão facilmente executados na base de código, com o objetivo de evitar bugs e disponibilizar uma versão em produção.

Os principais tipos de testes automatizados:

  • teste end-to-end: a validação é realizada através da interface do usuário (UI), simulando o que o usuário faria no software.
  • teste de integração: valida se partes isoladas do código funcionam em conjunto conforme esperado.
  • teste unitário: valida partes isoladas do software. A equipe deve conversar sobre o que faz sentido no nível de unidade (método, classe ou objeto).

Os testes end-to-end dependem de ferramentas como, por exemplo, Selenium para gravar os cenários de teste. Os testes end-to-end são os mais caros para escrever e demorados para executar. Os testes de integração, evitam a dependência da UI, em aplicações web que correspondem a testar a camada de API. O teste unitário é o de mais baixo nível, pode facilitar a identificação de bugs e é o mais recomendado do ponto de vista de agilidade e custo.

Automatizar os testes repetitivos traz uma grande mudança na vida dos desenvolvedores. Se você realiza uma grande alteração no código ou refatoração, imagine validar manualmente os cenários que lembrar, parece bem arriscado, se tiver testes automatizados a execução ocorre em pouco tempo e possibilita saber se o software está funcionando corretamente ou se algo deve ser ajustado antes da publicação.

Ao automatizar os testes você provavelmente encontrará oportunidades de refatoração de código e correção de bugs. Deixe seu código melhor do que encontrou, afinal é responsabilidade do desenvolvedor a melhoria contínua.

Aqui na unico, no primeiro trimestre de 2021 tivemos um lockdown de engenharia para nos concentrarmos em qualidade e eliminação de débitos técnicos, adicionamos testes unitários e de integração em nossa pipeline de CI/CD e vimos na prática os testes travando problemas que poderiam causar incidentes em produção.

Espero que a leitura tenha sido útil.

Até mais 😉!

Leituras Adicionais

Testing Guide - Martin Fowler
Clean Code: The Boy Scoute Rule
Engenharia em lockdown

Letícia Silva é desenvolvedora na unico.

--

--