Quer saber como melhorar a qualidade de seus projetos e trazer mais segurança e agilidade para os seus testes? A solução são os testes automatizados!
O que são testes automatizados
Um teste automatizado nada mais é do que um “teste comum”, que você mesmo poderia fazer em seu projeto, mas que utilizando de programação conseguimos automatizar todo o processo, ganhando em eficiência, segurança e agilidade.
Pense da seguinte forma:
- Se você precisa testar uma função X, que faz uma soma
a + b
, e você sabe que1 + 2
é igual a3
, crie uma função Y, que chame a função Y passando como parâmetrosa = 1
eb = 2
e compare se o resultado é realmente3
. - Se você precisa testar um botão, que ao clicar apareça um modal, crie uma função que entre na página, clique no botão e confira se um novo elemento modal está sendo exibido da página
- Se você precisa conferir o desempenho de seu sistema, e uma página não pode demorar mais de 5 segundos para exibir o conteúdo, crie uma função que acesse essa página e faça uma contagem do tempo que levou
Perceba que estes testes, podem sido feitos facilmente por um “humano”, em um processo bastante natural. A ideia por trás de um teste automatizado é incluir um software que faça este trabalho para você.
Porque fazer testes automatizados
A automação de testes vem para poupar trabalho e economizar tempo.
Em um sistema real, estes mesmos testes devem ser feitos várias e várias vezes, a cada vez que um novo recurso é implementado, a cada vez que a versão é atualizada e em diversas outras situações. Ter um “humano” fazendo estes testes é bastante cansativo e uma tarefa bem monótoma, além de levar bastante tempo.
Mas se você tem um computador por trás destes testes, eles serão feitos em uma velocidade muito maior e com um esforço muito menor, não importando quantas vezes este teste será realizado. Ter um processo automatizado também garante uma segurança e uma menor chance de erros em seu projeto.
Como é um teste automatizado
Existem diferentes ferramentas que você pode utilizar em seu teste a depender do teste que será feito e da linguagem de programação que será usada.
Bibliotecas bastante comuns para desenvolvimento de testes automatizados são o Selenium ou o Playwrigt, focadas em testes “end-to-end” —quando você testa de ponta a ponta a sua aplicação, inclusive elementos no frontend com cliques, exibição de componentes, etc. Outra bastante comum, essa para testes unitários —quando você testa apenas o próprio código de uma função, é o Jest.
Com o Jest, ou em qualquer outro teste unitário, a ideia é sempre criar um contexto de teste, que simula um caso que você já conhece o resultado que deve ser retornado. Podemos apresentar nosso cenário de teste: “Sendo utilizada a função de soma, quando os parametros forem 1
e 2
, é esperado que o valor seja igual a 3
”. E este mesmo contexto, é aplicado em código:
// Definição da função de soma
const sum = (a, b) => {
return a + b;
};
// Contexto para testes unitários
describe('Sendo utilizada a função de soma', () => {
test('quando os parametros forem 1 e 2', () => {
expect(sum(1, 2)).toBe(3);
});
});
Com o seguinte resultado:
PASS ./index.test.js
Sendo utilizada a função de soma
✓ quando os parametros forem 1 e 2 (2 ms)
Diferentes cenários de testes são criados testando cada situação possível de uso para cada função do seu código. Assim, com um único comando como npm run test
você tem toda a sua aplicação testada.
Testes unitários como este podem ser incluídos diretamente no código da sua aplicação, e na maioria dos frameworks, este já é um recurso nativo.
Testes automatizados na prática
Na prática, costumamos incluir estes testes como rotinas dentro do fluxo do nosso novo software: uma mudança no código? Rode a rotina de testes e confira que nenhum pedaço de código foi quebrado no caminho; uma nova demanda? Rode a rotina de testes e confira que a performance não foi afetada.
Existem até metodologias, como o Test Driven Development, a qual é “construir o teste, antes de desenvolver”. Você desenvolve com base no próprio teste a ser realizado. É uma prática bem interessante, que iremos abordar em artigos futuros.
Mas não se engane se você acha que testes automatizados excluem o trabalho de testers e analistas de QA: um bom teste, mesmo que automatizado, é muito mais do que algo técnico, um bom teste é sempre aquele feito por alguém que entende o processo, prevê falhas e sabe o que e onde testar.
Em nossos projetos na devGo, vamos tentar sempre trabalhar com testes automatizados. Confiram nosso canal no Discord e se inscrevam em nossa newsletter para acompanhar nossos próximos conteúdos.