Se você não testa os softwares que cria por achar que isso atrasa o desenvolvimento, ou ainda: porque não gosta, ou até porque mesmo desconhece... esse post é para você! Se esse não é o seu caso, fique a vontade para compartilhar suas experiências nos comentários.
Venho programando a um tempo e fazia parte de um dos grupos citados acima. Eu desconhecia os testes e por isso não conseguia enxergar o valor de se testar o código. Claro, muitas vezes já tinha ouvido falar sobre, mas nada além disso.
Um tempo atrás me vi na seguinte situação: Um de meus clientes já possuía um sistema em produção. Este sistema funcionava de maneira diferente para cada tipo cliente, em outras palavras:
- O cliente A utiliza os módulos 1, 2 e 3.
- O cliente B utiliza os módulos 2, 3 e 4.
Algumas funcionalidades estão em funcionamento em um e em outro não. Bem, eu fui convidado para dar continuidade no sistema e dá-lhe commit! Começamos a desenvolver e subir atualizações, corrigir bugs, mais atualizações, quebra alguma coisa, correção, atualização... num ciclo eterno.
Programar para mim é uma paixão, e se você está lendo isso, provavelmente esse também é o seu caso. Portanto criar coisas novas, desenvolver uma ideia, tirar as coisas do papel e transformar em código é algo mágico! Por outro lado corrigir bugs, voltar a mexer em código que já havia sido finalizado é um pesadelo. Imagine criar uma nova funcionalidade num dia, daqui a dois dias ela está dando problema, você então corrige e daqui a uma semana volta a dar problema de novo.
É ai que se encaixam os testes de software! :D
Disse uma vez, em uma publicação, que muitas vezes nos vemos frustados tentando desenvolver coisas "do nosso jeito", quebramos a cabeça tentando reinventar a roda sendo que alguém já passou por algo parecido muitas e muitas vezes e já desenvolveu com base em estudo atrás de estudo, uma forma de resolver tal problema. Esse é o caso dos testes!
Quando comecei a pensar sobre o assunto fiz um curso do @cviniciussdias na Alura. Aliás, se quiserem 10% de desconto, vocês conseguem através do meu link: promocao/tadeubstar. Foi aí que comecei a entender o valor do teste.
Diversas pessoas já passaram pela mesma coisa que passamos todos os dias e viram que testar o código é algo importante. Logo: por que não testar o nosso código?
Vamos imaginar o seguinte cenário: pediram para que você desenvolvesse uma função em javascript que levasse em conta os seguintes requisitos:
- A função deve calcular o desconto para um usuário;
- Ela irá receber um usuário e um valor qualquer em float;
- Se o usuário for de nivel 1, ele não deve receber descontos;
- Se o usuário for de nível 2, deve receber 10% de desconto;
- Já se ele for de nível 3, deve receber 20% de desconto.
Bem, poderíamos fazer o seguinte:
function calculaDescontoParaUsuario(usuario, valor) {
if (usuario.nivel === 2) {
return valor * 0.10;
}
if (usuario.nivel === 3) {
return valor * 0.20;
}
return valor;
}
E para validar que tudo funciona, poderíamos criar um arquivo chamado: testa-calculo-de-desconto-do-usuario.js
.
const usuario = {
nivel: 0
};
const valor = 100;
// valida usuario de nível 1
usuario.nivel = 1;
if (calculaDescontoParaUsuario(usuario, valor) === 100) {
console.log('- Tudo certo com o nível 1 =D ')
} else {
console.log('- Ops! O valor está incorreto no nível 1 =/')
}
// valida usuario de nível 2
usuario.nivel = 2;
if (calculaDescontoParaUsuario(usuario, valor) === 90) {
console.log('- Tudo certo com o nível 2 =D ')
} else {
console.log('- Ops! O valor está incorreto no nível 2 =/')
}
// valida usuario de nível 3
usuario.nivel = 3;
if (calculaDescontoParaUsuario(usuario, valor) === 80) {
console.log('- Tudo certo com o nível 3 =D ')
} else {
console.log('- Ops! O valor está incorreto no nível 3 =/')
}
E dessa forma garantimos que todas as vezes que rodarmos o segundo script, nossa função irá retornar os valores corretos. Bem, isso foi só uma demostração, existem centenas de ferramentas de software e no próximo post iremos falar sobre elas!
Se você gostou deixe o seu like, ajuda muito! =D
Até o próximo post!
Top comments (0)