Técnico

A importância dos testes

Todos os artigos, palestras e workshops sobre quaisquer assuntos deveriam começar pelo o que Simon Sinek chama de Golden Circle, do incrível video “Como grandes líderes inspiram ação” no TED, resumindo em poucas palavras, as pessoas não compram o que você faz e sim o por quê você faz.  Você deve estar se perguntando o quê eu quero dizer com isso e o que isso tem a ver com testes de software, esse é o primeiro artigo de uma coletânea que farei sobre testes, começando pela explicação do passo Why do Golden Circle e seus ganhos.

Criar uma cultura de testes é por muitas vezes um caminho difícil, doloroso e que por diversas vezes tropeçamos nos mesmos erros até conseguir chegar a resultados satisfatorios, por muitas vezes vi empresas tentando forçar esse conjunto de teorias e práticas aos seus desenvolvedores e sem resultado nenhum, os ganhos do teste por si só são valores agregados, ou seja, pouco visível a curto prazo e tem impacto na camada mais profunda de um projeto/produto a longo prazo, a priori um desenvolvedor o qual nunca ouviu se quer falar de testes, fica se perguntando se todo aquele tempo gasto desenvolvendo testes poderia ter sido gasto desenvolvendo features ou corrigindo bugs.

 

Poder dormir tranquilamente no final do dia

Não consigo lembrar do autor que escreveu essa frase, entretanto esse é um dos principais fatores para se ter um bom conjunto de testes, é comum nos deparamos com cenários em que features de projetos/produtos não possam falhar de maneira alguma, que geralmente são diretamente relacionadas ao core do business, e qualquer falha nessa parte do software pode ocasionar perdas financeiras grandes, escrever um conjunto de testes para o maior conjunto de de casos possíveis ajuda a evitar dores de cabeça e um bom sono no final do dia para o programador. Matematicamente falando é impossível prever erros humanos e sabemos que algum caso escapará da malha de testes, entretanto conseguimos garantir na maioria das vezes que um bug nunca mais volte após ser detectado através da implementação de um teste bem feito.

Imagine um cenário como o Paypal: a feature de pagamento aos fornecedores deve pagar exatamente o valor a qual o produto foi vendido, se não a empresa teria um prejuízo milionário.

Exemplos:

  • Escrever a feature de pagamento aos fornecedores
  • Refatorar a feature de pagamento aos fornecedores

 

Economizar seu tempo como desenvolvedor

Pense como um investimento, criar testes é como colocar dinheiro em uma poupança e após algum tempo retirar visando um lucro. Primeiramente, é difícil viver sem aquele dinheiro investido na poupança, existe o período de adaptação em que poderia ter gasto todo o dinheiro em coisas que desejamos, entretanto ao final do investimento percebemos que o lucro que temos agora é bem maior que o investido inicialmente.

Nessa analogia, escrever testes é gastar um pouco do seu tempo agora, visando colher frutos no futuro, evitando possíveis falhas que refletem no tempo perdido em refazer rotinas.

Melhorar a qualidade da entrega

Qualidade é uma palavra bem ampla, vamos contextualizar que no nosso exemplo, qualidade para um cliente é entregar versões novas de um software sem bugs em rotinas já existentes.

Cenário: Imagine que você escreveu a rotina de pagamento do Paypal sem teste algum, esse código vai para produção e constantemente há mudanças a fim de satisfazer novas regras do negócio. Detalhe: é preciso manter todas as rotinas já existentes funcionando.

Pergunta: Como garantir que esse novo release não quebre regras antigas por novas mudanças adicionadas ou alteradas na rotina de pagamento?

Um cenário como esse sem testes é impossível garantir alguma qualidade na rotina criada (unidade) e em todo o ecossistema já produzido (regressão), quanto maior a malha de testes em teste, menos problemas de regressões teremos, no caso que novas versões sejam feitas e que não causem nenhum ou ao menos o menor efeito colateral é a única solução, novas iterações sem testes causam erros progressivos, causando o que chamamos de retrabalho e constante infelicidade dos clientes.

Melhor profissional

Programar é um conjunto de conhecimentos acumulados transformados em linhas de código. Pode ser dito como analogia, escrever um roteiro, onde não é só pegar um papel e escrever o que pensa, é mais do que isso, quanto mais acontecimentos você viveu, livros que leu, filmes que assistiu, indiretamente mais refinado seu argumento fica. Isso também funciona com a programação, aprender a escrever melhor e com qualidade, seus testes vão influenciar diretamente em outras áreas das suas habilidades, um dos resultados diretos é a percepção de modularização em unidades, reduzindo o acoplamento dos modelos de dados.

 

1 Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Compartilhe isso: