Testes funcionais em APIs REST com a ferramenta Frisby.js — Parte 1

Luiz Eduardo Martins
Serasa
Published in
4 min readApr 8, 2019

--

Este post faz parte de uma série que eu e o Jonathan Henkels criamos para abordar testes funcionais em APIs REST com a ferramenta Frisby.js.

Muitas empresas utilizam arquiteturas baseadas em micro serviços e a demanda para testes de integração, APIs, principalmente REST está em alta e vem ganhando força. Fizemos uma pesquisa para buscar ferramentas que suportam e facilitam esse tipo de teste visando escalabilidade dos testes e da aplicação.

O resultado desta pesquisa foi a adoção do Frisby.js como ferramenta para este tipo de teste.

O que é o Frisby.js?

O Frisby.js é uma ferramenta fácil de utilizar e configurar, sua arquitetura é baseada em Node.js. Apesar de já existir faz algum tempo, é pouco difundida na comunidade em geral e este foi um dos fatores que nos motivou a escrever este post =).

A definição do criador da ferramenta é a seguinte:

Frisby.js comes loaded with many built-in tools for the most common things you need to test for to ensure your REST API is working as it should, and returning the correct properties, values, and types.

When you need something custom, Frisby.js also provides an easy way to customize and extend assertions to make your job easier, with less repetitive and tedious code.

Fonte: https://www.frisbyjs.com/

frisby.js on GitHub

Let’s do it

Instalação e criação do projeto

Antes de mais nada, garanta que você tem o Node.js instalado em seu ambiente:

node -v

Crie uma pasta, que será seu projeto de testes, em um diretório a sua escolha.

Agora realize a instalação do Frisby.js em seu ambiente de testes:

npm install frisby — save-dev

O Frisby também possui uma dependência do Jest para execução das rotinas. Para isso, instale o Jest em seu ambiente:

npm install jest — save-dev

Após a instalação de todas as dependências, crie uma subpasta chamada __tests__. Esta pasta é necessária para identificar o local onde seus scripts de testes estão, pois por padrão o Jest irá executar os arquivos ‘.js’ daqui.

Finalizando esta parte, você deverá ter algo parecido com isso:

Estrutura inicial do projeto

Fazendo uma requisição GET

Vamos utilizar como exemplo a API pública do Postman para realizarmos nossas requisições.

Vamos criar um novo arquivo dentro da pasta __tests__, chamado get_test_spec.js.

Como o endpoint testado usa protocolo HTTPS, precisamos incluir um require do mesmo em nosso teste, pois o Frisby.js por padrão não implementa as requisições com este protocolo. Com o agent configurado, basta inserir como um parâmetro da requisição para que ele seja interpretado corretamente.

Como na maioria dos testes aqui teremos um ponto de verificação dos resultados esperados. Uma das verificações que são importantes incluir, é a do código de retorno HTTP.

O .expect permite incluir verificações diversas após cada requisição. No exemplo acima, foi verificado:

  1. O status do retorno;
  2. Se os conteúdos estão no formato JSON e;
  3. Se a posição “args” do JSON contém as chaves foo1/foo2 com os valores bar1/bar2 respectivamente.

Maiores informações e exemplos de expects podem ser consultadas na própria documentação do Frisby.js.

Executando nossa stack

Para executar os testes vamos realizar uma pequena configuração no arquivo “package.json”, conforme imagem abaixo:

Configuração do script

Desta forma, para executarmos os testes basta digitar o comando “npm test” no terminal para que o Jest inicie o procedimento de execução. No final você deve visualizar uma mensagem mais ou menos assim:

Execução dos testes

Próximos passos

Este é o nosso primeiro artigo da série, mas já temos na manga mais três conteúdos para as próximas duas semanas.

São esses aqui:

Parte 2: Fazendo requisições POST e PUT

Parte 3: Testes aninhados (dependentes) e inspetores

Parte 4: Customizando relatórios de execução dos testes

Quer saber mais?

Queremos estreitar relações com as comunidades e profissionais de tecnologia que queiram trocar figurinhas.

Por enquanto, os comentários aqui do Medium são nosso canal de comunicação oficial. Deixa sua mensagem para que possamos interagir ou mande um e-mail para ecs_it@br.experian.com.

Temos várias vagas nas áreas de Negócios e TI! O que você acha de dar uma olhada lá? É só clicar nesse link.

Até breve…

Luiz Eduardo Martins e Jonathan Henkels — Serasa Consumidor

--

--