Você, que é um desenvolvedor, já escutou falar muito de testes certo?
O teste é uma realidade para o seu dia-a-dia?
Mas quais tipos de testes?
Se você utiliza testes unitários, teste de integração, testes de sistemas entre outro, muito bem, você está melhorando a qualidade do seu software e da sua saúde!
Os testes não devem ser encarados como simplesmente aquele momento que o desenvolvedor acessa o site, sistema ou aplicativo e navega de maneira rápida para ver se tem algo quebrado. Os testes vão muito além disso!
E acredite, encarar os testes como uma etapa do projeto pode mudar muito a sua entrega final do projeto!
Neste primeiro artigo de “Quando terminar eu testo aqui rapidinho!” vamos conhecer sobre o universo dos testes e para que eles servem realmente.
Primeiramente vamos a definição “O que é Teste de software?”
Teste é a verificação feita sobre um sistema ou parte dele para garantir que uma determinada entrada produza, sempre, uma saída esperada.
Ok entendi, então é só logar no sistema e ver se nada está quebrado e o teste está feito?
Não!!!
Existem muitos tipos de testes, vamos conhecer alguns:
- Teste unitário
- Teste de Integração
- Teste de Sistema
- Teste de Aceitação
- Teste Alfa
- Teste Beta
- Teste de Regressão
Caramba mas quantos tipos, não é frescura utilizar tudo isso?
De maneira nenhuma!
Entendendo cada tipo de teste, você verá o quão importante são e podem mudar no término do seu projeto.
O primeiro tipo de teste que vamos abordar são os Testes Unitários, é um tipo de teste criado pelo programador, e no início da minha vida com desenvolvimento, trabalhei em uma empresa que exigia que todos os programadores aplicassem os Testes Unitários, e para mim não fazia o menor sentido criar o teste unitário.
Antes de eu falar o meu motivo na época, vamos ver sua definição do teste unitário:
Testar a menor parte do seu sistema, uma função, um método ou uma classe.
Você isola um pedaço do seu código e o testa, independente se o resto do sistema já foi implementado.
Vamos traduzir e pensar juntos sobre Testes Unitários.
Teste unitário nada mais é que você informar para uma função (método ou classe), que inserindo um valor , o resultado será um outro valor também previamente determinado.
Ou seja
Criei uma função, determinei que vou passar um inteiro como parâmetro de entrada, e sei que sempre deverá sair um inteiro no parâmetro de saída.
E anos atrás eu me questionava.
Se eu sei que tipo de dado que precisa entrar para nunca dar erro, qual a finalidade de criar isso?
Vamos pensar com um exemplo.
Temos uma função em javascript que soma dois números.
function Soma (numero) {
return numero + 1
}
const meuNumero = Soma(2)
No exemplo acima ele irá retornar a soma de dois números, e quero sempre que retorne um número, ou seja, para o resultado do meu teste dar certo, não posso receber string, array, um objeto, somente números.
Você pode pensar como eu pensei anos atrás. “Basta obrigar sempre ser um inteiro o parâmetro de entrada que nunca vai dar erro! Vou perder tempo se criar um teste unitário!”.
E esse pensamento está completamente equivocado!
Pense em um cenário que essa função “Soma” foi criada, e com o tempo vieram customizações do sistema, novas implementações foram feitas, muitas pessoas fizeram pequenas modificações, você mesmo a alterou algumas vezes.
Será que depois de todas essas modificações, se rodarmos o Teste Unitário ele retornará um inteiro?
Existe uma grande possibilidade que não!
Se a função além de somar, começar registrar o nome de quem inseriu os dados, ou por algum motivo alguém colocar um array pra fazer algum cálculo maluco, e esse array armazenar dias... e depois de tudo isso alguma variável que armazenava o inteiro é reutilizada e acaba recendo uma string e no final a função retorna uma string!
Agora ficou claro para todos?
O testes unitários existem para garantir que com um determinado parâmetro de entrada, tenha um resultado esperado, mesmo que com o tempo esse sistema seja modificado.
Caso algum momento o retorno precisar mudar, então o teste precisará ser modificado também, mas ele irá respeitar a sua regra escolhida, assim garantindo o resultado esperado.
Existem muitas bibliotecas especificas para esses testes serem criados.
Temos um artigo utilizando a biblioteca mocha