A Importância dos Testes Automatizados no Desenvolvimento de Software

Chrystian Costa da Rosa
Bee Lab Academy
Published in
5 min readAug 22, 2018

“Estar ocupado nem sempre significa trabalho de verdade. O objetivo de todo trabalho é produção ou conquista, e para qualquer um desses objetivos deve haver previsão, sistematização, planejamento, inteligência e propósito honesto, assim como transpiração. Parecer estar fazendo não é fazer.”
— Thomas A. Edison, inventor.

Mais em menos Tempo.

Todo time de desenvolvimento de software testa suas aplicações, mas o software entregue sempre tem algum defeito. O time se esforça para pegar os bugs antes que o produto seja lançado, mas eles sempre insistem em aparecer em produção.

Veja bem, o teste de software manual é realizado por um “ser-humaninho” sentado por horas em frente ao seu computador, examinando cuidadosamente as telas da aplicação, experimentando várias combinações de uso, comparando os resultados com o comportamento esperado e registrando suas observações. Os testes manuais são repetidos frequentemente durante os ciclos de desenvolvimento para levantar um backlog de melhorias, alterações e correções. Com o passar do tempo isso se torna muito cansativo, os testes automatizados podem otimizar (e muito) esse processo, além de aumentar a eficácia e a cobertura de seus testes.

Mas por que automatizar?

Uma vez que os testes automatizados são criados, eles podem ser facilmente repetidos e podem executar tarefas que manualmente seriam impossíveis ou chatas de realizar; também evitam retrabalhos e perda de tempo, por isso a automação se tornou um componente essencial no processo de desenvolvimento.

Otimizando as tarefas.

No livro Agile Testing, de Lisa Crispin e Janet Gregory, são citadas as seguintes razões:

  • Teste manual é demorado;
  • Reduzir a probabilidade de erros das tarefas de teste;
  • Liberar tempo para fazer o trabalho da melhor forma;
  • Prover uma rede de segurança (se eu fizer uma mudança no código eu terei os testes que irão me avisar se algo quebrou);
  • Prover feedback cedo e frequente;
  • Os testes que direcionarão a codificação (utilizando técnicas como o TDD) podem fazer mais do que isso (ex.: se tornam testes de regressão);
  • Os testes provém documentação, aliás, são uma excelente documentação;
  • ROI, com o passar do tempo o esforço gasto na automação dos testes se paga.

Essa é uma prática que pode ser utilizada em qualquer metodologia e não demanda de um grande investimento financeiro, pois boa parte das ferramentas que auxiliam esses níveis de testes são softwares livres. Como por exemplo: o JUnit, framework para criação de testes unitários em Java; e o Selenium, framework composto de vários componentes, cada um assumindo um papel específico ao ajudar no desenvolvimento dos mais diversos tipos de testes automatizados.

VANTAGENS :)

Bem, vamos dar uma olhada em alguns benefícios do teste automatizado:

  • ROI ( Return On Investment)
    Vamos começar do começo: o investimento inicial. Isso pode ser um obstáculo para muitas empresas, mas está provado que o retorno desse investimento é garantido, mesmo que a longo prazo.
    Em vez de muitas pessoas fazendo testes manuais chatos repetidas vezes, agora só é necessário que elas se qualifiquem a automatizar e deixar que a mágica aconteça.
  • Reutilização
    Você não precisa de novos scripts o tempo todo, mesmo que a versão do sistema operacional no dispositivo seja alterada, permite refazer o teste exatamente da mesma forma, sem esquecer de qualquer passo.
  • Prevenção de bugs
    A automação ajuda a encontrar bugs nos estágios iniciais do desenvolvimento de software, reduzindo despesas e horas de trabalho para corrigir esses problemas também.
  • Confiabilidade
    O teste automatizado é mais confiável e muito mais rápido ao executar testes padronizados repetitivos que não podem ser ignorados, mas podem causar erros quando testados manualmente.
  • Simultaneidade
    Você pode testar mais dispositivos simultaneamente, resultando em relatórios detalhados comparativos gerados em menos tempo com exatamente os mesmos parâmetros, porque os mesmos scripts foram executados.
  • Cobertura
    Diversos tipos de testes podem ser executados automaticamente: unitários, regressão, integração, carga, estresse, entre outros. No qual as capacidades da aplicação, dos serviços e da infraestrutura operacional são testadas em seus limites, dando maior cobertura, o que não pode ser feito manualmente.
  • Volume
    O teste automatizado permite executar testes em milhares de dispositivos e navegadores. Testar todos eles manualmente seria impossível!
    No final, você terá um software de melhor qualidade, que será lançado mais cedo, com menos problemas e você terá usado menos recursos.
  • Feedback
    Através dos testes automatizados é possível obter um feedback contínuo e rápido, por exemplo, visualizar quais testes passaram e quais falharam, em qual passo do teste teve erro e qual o motivo. Muitas ferramentas oferecem gráficos e relatórios onde é fácil analisar os resultados da execução de uma suíte de teste.

DESVANTAGENS :(

Por mais que pareça um processo mágico e belo, existem desvantagens para testes automatizados também.
Existem muitas coisas que o teste automatizado não fará, entre elas: não encontrará problemas muito específicos que os usuários possam ter. O teste automatizado não verificará a usabilidade efetiva do design, por exemplo, se a localização dos botões é confortável ou quão fácil é usar o aplicativo. Isso ainda tem de ser feito manualmente.

Um outro problema que podemos encontrar na hora de automatizar é a falta de tempo, principalmente em equipes ágeis, nas primeiras vezes é complicado encaixar a automação dentro de uma sprint.

Ao escrever e executar os scripts, há apenas alguns cenários que estão sendo testados, não todos eles. O principal objetivo do teste automatizado é encontrar erros em operações simples, por exemplo, para entrar no aplicativo, criar novas contas ou enviar emails quando a senha for esquecida. Isso é o que os testes automatizados fazem.
Os aplicativos ainda devem ser testado manualmente, pois existem casos bem específicos em que os bugs aparecerão. Como sabemos, as máquinas são muito avançadas, mas não são super inteligentes (ainda!).

Conclusão

Para obter os melhores resultados, você precisará de uma combinação de ambos os tipos de testes: automatizados para casos de uso repetitivos e simples; e manuais para reproduzir bugs específicos, casos de uso complicados e para garantir a melhor experiência possível para o usuário.

Sendo assim, existem benefícios e desvantagens para ambos os tipos. Mas adotar os testes automatizados, certamente ajudará você a tornar seus testes mais eficientes, facilitará seus processos e aumentará significativamente a qualidade a sua aplicação.

Peace!

Chrystian Costa da Rosa.

________________________________________________________________

Referências:

Dftestes — Capítulo 8: Quando Automatizar?

What’s the Difference Between Automated Testing and Manual Testing?

CRISPIN, Lisa; GREGORY, Janet. Agile Testing: A Practical Guide for Testers and Agile Teams. 1 ed. Addison-Wesley Professional. 2009.

--

--