Por que devo testar minhas aplicações

Diego Gonçalves Santos
Android Dev BR
Published in
4 min readMar 15, 2019

Quando o assunto é a escrita de testes em projetos, uma série de justificativas surgem para sua não implementação. Uns dirão que o cliente não vê valor em caso de projetos desenvolvidos para terceiros, outros que não há tempo disponível e em partes são pontos válidos.

Mas antes mesmo desses pontos, o maior desafio para os desenvolvedores é de entender porque devemos escrever testes de fato e convencerem a si próprios de que os testes vão agregar valor para eles no processo de desenvolvimento e manutenção de uma aplicação.

Por isso é importante que primeiramente tenhamos em mente quais os benefícios práticos que os testes trarão para nós antes de decidirmos se vale a pena ̶p̶e̶r̶d̶e̶r̶ investir tempo neles. Lembrando que ao contrário do que muitos pensam, uma boa cobertura de testes atinge positivamente muito mais os desenvolvedores do que os próprios clientes e não estamos falando de um mero número representativo de cobertura de testes, mas vamos entender isso melhor nos próximos parágrafos.

Testes Efetivos

Em primeiro lugar, para que possamos de fato sentir os impactos positivos dos testes em uma aplicação, precisamos garantir que eles são efetivos. Essa não é uma métrica fácil de se obter, não é apenas um número de porcentagem de número de linhas cobertas que vão trazer essa segurança. Ao fazer essa análise, o principal ponto que o desenvolvedor deve analisar, é se os testes validam que no mínimo o que chamamos de “fluxo feliz”, ou seja o fluxo principal de uma funcionalidade, funciona como esperado, pois isso te garante que se algo der errado os testes vão te alertar sobre isso rapidamente.

Feito isso podemos verificar quais as vantagens de uma boa suíte de testes. Quando cobrimos ao menos os fluxos principais de uma aplicação, podemos assegurar um funcionamento mínimo do software e a cada nova modificação feita, você consegue verificar se isso segue válido sem que alguém precise manualmente testar cada uma das funcionalidades, o que na prática significa mais confiança para fazer refactorings.

Uma grande vantagem de uma suíte de testes eficiente, é a identificação de efeitos colaterais de alterações e a garantia de errar rápido e corrigir rápido. Rodando os testes com frequência, se alguma modificação que você está implementando impacta alguma outra, você saberá rapidamente e poderá corrigir muito antes da entrega final, evitando problemas de conflitos, bugs, etc.

Testes te ajudando a identificar falhas de implementação

Outro ponto interessante da implementação de testes, é que quando você os escreve depois da funcionalidade, o que nem sempre é a melhor opção existindo também a opção de usar TDD, muitas vezes você acaba percebendo alguns “furos” na sua implementação que você não tinha percebido durante o desenvolvimento da funcionalidade inicialmente.

Isso pode acontecer principalmente se seus testes cobrem um pouco mais do que simplesmente o fluxo principal, mas também cobre cenários como erros nas respostas do servidor ou entradas inválidas do usuário, garantindo que seu software performa bem mesmo em cenários fora do esperado.

Testes ajudam na organização do projeto

Para que uma aplicação seja “testável”, é necessário que ela seja bem estruturada e suas camadas sejam bem definidas e desacopladas. Portanto ao construir uma aplicação pensando em testá-la, você acaba se preocupando mais com a sua organização e então de forma indireta os testes acabam também melhorando a forma como você desenvolve seus sistemas.

Evite recursões

É importante também que sempre que um novo cenário de bug é descoberto e resolvido, que a suíte de testes garanta que a falha segue resolvida. Portanto sempre que solucionar um bug, desenvolva um teste que valide o fluxo que era falho, para certificar que ele segue funcionando e que a solução foi realmente válida. Bugs que ressurgem a cada nova versão de uma aplicação são muito comuns e causam grande frustração aos usuários então assegurar proteção contra recursão é essencial!

Testes ajudam na documentação do projeto

Um último ponto que não é inicialmente a função dos testes mas em que eles podem ser úteis é em questão de documentação. Quando bem escritos, para um desenvolvedor que acaba de começar a trabalhar em um projeto, os testes podem dizer muito sobre como a aplicação funciona, poupando bastante tempo de leitura de código até que o desenvolvedor ganhe contexto de projeto.

Bom, essas são algumas das vantagens que tenho encontrado ao utilizar o poder dos testes a meu favor e espero ter te despertado no mínimo a curiosidade de tentar iniciar a escrita de testes nos seus próximos desenvolvimentos. Acredito que será uma experiência bastante produtiva! Até a próxima!

--

--

Diego Gonçalves Santos
Android Dev BR

Engenheiro de Software @Dextra_digital, escritor, palestrante, entusiasta de tecnologia e esportes.