O que são testes automatizados

O que são testes automatizados

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 que 1 + 2 é igual a 3, crie uma função Y, que chame a função Y passando como parâmetros a = 1 e b = 2 e compare se o resultado é realmente 3.
  • 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.