Iniciando testes de serviços com HTTParty e RSpec

Maximiliano Alves
4 min readDec 1, 2018

--

Quando pensamos em estratégias de testes automatizados, atualmente já pensamos em colocar uma boa parte desses testes em testes de serviço. Porém, junto disso também vem alguns contratempos, como: tempo para desenvolvimento, conhecimento da equipe, relatório do teste executado e integração contínua. Com isso, precisamos ter uma stack para o desenvolvimento dos testes de serviço que tenha um framework e linguagem com uma curva de aprendizado baixa e asserções confiáveis para a execução dos testes, e para obtermos isso, nada melhor do que usarmos Ruby como linguagem, HTTParty e RSpec como framework. Em seguida vou explicar como podemos fazer essa automação e rapidamente colocar para rodar.

O que é HTTParty?

É uma gem para Ruby para consumo de serviços rest facilmente, abaixo exemplos de um get e post em serviços utilizando httparty:

O que é RSpec?

Também é um gem Ruby para realizar a escrita dos cenários e as asserções para estes cenários. Segue exemplos de cenários com asserções.

Hands-on

**Para iniciar o tutorial é recomendável que você conheça o básico sobre requisições e também tenha o Ruby e o Bundler instalado em sua máquina.

Ruby: https://www.ruby-lang.org/pt/downloads/ .

Após instalar o Ruby executar o seguinte comando: gem bundler install.

Iniciando o projeto

Dentro da pasta raiz do seu projeto crie um arquivo com o nome de Gemfile com o seguinte conteúdo:

Após criar e salvar este arquivo, em seu terminal execute o comando bundle install.

Iniciando o RSpec

Já executamos o bundle install, então só precisamos executar o comando para iniciar o RSpec em seu terminal: rspec init

Após executar o comando, você vai ter a seguinte estrutura:

Rake para executar o RSpec

Vamos utilizar o rake para executar nossa task do RSpec, o Rake é um lib de utilitários para build muito utilizada no ruby. Para utilizarmos basta criar um arquivo na raiz do projeto chamado Rakefile. Esse arquivo deve conter as seguintes linhas:

Para o momento, o que nos importa é o 't.pattern', serve para buscar os padrões dos nossos cenários de testes e o 'verbose' que é para retornar um output mais detalhado.

Criação dos testes

A primeira coisa que precisamos configurar é o nosso url base do sistema. Para isso dentro do arquivo ‘spec/spec_helper.rb’ vamos adicionar as seguintes linhas.

No topo do arquivo, vamos requerer o acesso à lib httparty:

Após, uma linha acima do 'end' da configuração, vamos adicionar um before usando o ':all' para que ele seja executado uma vez antes de todos os testes e não em cada teste:

Podemos notar acima que configuramos nossa url base para um serviço que utilizaremos apenas para esses testes.

Cenário de teste request válida.

Para criar o cenário de teste vamos adicionar um arquivo com o nome de users_test.rb já que vamos testar o endpoint de usuários.

Novamente requisitamos o uso do httparty, após isso utilizamos o RSpec.describe para descrever qual parte vamos testar, e o it para descrever o que vamos fazer. Repare que na linha que temos a variável response, estamos fazendo nosso GET para a api de usuários e na linha de baixo estamos fazendo a validação do código de retorno da api, utilizando o response.code e assim já temos um teste para a api.

Cenário de teste de validação do contrato e tipagens de campos

Para complicar um pouco, fiz um exemplo em que eu faço uma validação nos campos conforme a documentação do contrato.

Conforme o cenário anterior a variável response tem o retorno da requisição para o endpoint ‘/users e abaixo disso realizo um for no corpo da requisição e para cada item faço a verificação de qual é o tipo dele. Com testes assim podemos muitas vezes prevenir alguns bugs de quebra de contrato que costumam acontecer.

E por fim para executar a automação basta estar na pasta raiz do projeto e executar o seguinte comando em seu terminal: rake spec que seus testes já vão ser executados.

Adicionando report em HTML do RSpec para o projeto

Para adicionarmos um report é bem fácil, basta ir até o nosso Rakefile e adicionarmos a seguinte linha:

Ao executar novamente vai ser criado uma pasta chamada reports e dentro dela um html, mais ou menos assim:

Conclusão

Chegamos ao final e se tudo deu certo nós já temos testes automatizados para seus serviços rodando e podendo facilmente ser integrado em seu CI.

Se quiser conferir o projeto inteiro é só acessar ele no Github: httparty_rspec.

E o mais importante, se tiver alguma dúvida, comenta no post, vamos conversar!

--

--

Maximiliano Alves

QA Lead, Software automation lover, musician and in love with automation for mobile projects.