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