PT | EN

REST Assured: o que é e como colocar em prática

Por 09/03/2021 08/05/2024 4 minutos

No último encontro da Comunidade de Prática de Qualidade de Software, compartilhei com os colegas meus conhecimentos sobre REST Assured, uma biblioteca que permite testar serviços Rest em Java. Ela provê uma maneira de criar chamadas HTTP sendo executada em conjunto com o framework JUnit, que permite estruturar os testes.

Enquanto utilizamos o JUnit para definir os métodos de teste, através da anotação @Test, o REST Assured efetua chamadas HTTP, obtém o retorno do serviço e realiza validações a partir da resposta. Neste artigo, explicamos como utilizar tal biblioteca, na prática.

O que testar e como testar?

A estrutura do REST Assured trabalha no formato de BDD (Behavior Driven Development), ele faz chamadas para o serviço utilizando a sintaxe given, when e then. No given passamos as pré-condições como, por exemplo, token de autenticação e body; no when efetuamos a chamada para o método a ser testado, passando parâmetros quando forem necessários; e o then tem como função trabalhar com os retornos da requisição, extraindo respostas e efetuando assertivas.

Quando falamos em testes de serviços, os itens básicos para validação são o status code, body (onde podemos validar mensagens e valores de atributos), autenticação, permissões de acesso, content type, entre outras. Cada contexto terá diferentes cenários a serem testados, mas utilizaremos como base esses itens para validação. Tais validações podem ser realizadas por meio de recursos do JUnit como o AssertEquals(), por exemplo, ou com a biblioteca Hamcrest que oferece recursos que possibilitam escrever testes mais específicos.

REST Assured: primeiros passos

1. Adicionar as dependências do REST Assured e JUnit ao arquivo POM do projeto:

pp1_restassured

2. Criar a estrutura dos pacotes de teste: quando estamos aprendendo geralmente configuramos a URL base e passamos o payload dentro da mesma classe. Aqui, o exemplo demonstra uma estrutura em que dados, testes e utilidades estão em pacotes separados, o que torna os testes mais visíveis e organizados.

pp2_restassured

3. Fazer as importações estáticas: quando começamos a digitar os códigos do REST Assured, automaticamente a IDE irá sugerir os imports, mas através da documentação do REST Assured recomenda-se fazer as importações estáticas para um uso mais efetivo.

pp3_restassured

4. Criar a classe de configuração da URL base: podemos configurar a porta em que a API está rodando e o caminho base da API através dessa classe, que será posteriormente estendida para as classes de teste, tornando necessário informar apenas o endpoint em cada método de teste, uma vez que o caminho base já foi definido.

pp4_restassured

Iniciando os testes

1. Obtendo token: neste exemplo, estamos fazendo uma requisição onde o payload é enviado através do body ao fazer o post, o token será extraído e armazenado na variável tokenAdm. Neste método nenhum teste está sendo efetuado, apenas a extração do token para posterior utilização.

it1_restassured

2. Primeiro teste: no given(). estamos passando o token extraído anteriormente para obter autorização de cadastro e o payload está sendo passado diretamente no body. No when, estamos apenas chamando o endpoint a ser testado, porque a classe que contém o caminho base foi estendida. Por fim, no then(). o statusCode() está sendo validado.

it2_restassured

3. Passando os dados através de um Map na classe dados para posterior substituição do payload na classe de testes:

it3_restassured

4. Efetuando o mesmo teste do passo 2, porém recebendo no body o payload da classe Dados:

it4_restassured

5. Neste último exemplo, está sendo validada a chamada para um método GET. Além do statusCode(), está sendo verificado se o retorno da resposta contém os valores informados através do método containsString().

it5_restassured

Ao final da CoP de Qualidade de Software, Henrique Vieira ainda complementou que é possível extrair os responses nos formatos de objeto e JSON. Isso possibilita fazer as assertivas com base no response completo. Também explicou que o dataprovider pode montar o payload para obter testes repetitivos.

Foto do autor

Denise Mariane Viegas

Team Manager na SoftDesign, atua nos times como Gestora e Scrum Master. Cursa Análise e Desenvolvimento de Sistemas (IFRS) e possui as Certificações CTFL, CTFL - AT e CSM.

Posts relacionados

3 de julho de 2023

Como Coletar Insights de Performance Com Artillery 

    Qualidade e Testes
Saber mais

18 de maio de 2021

Cypress: passo a passo para começar a usar

    Qualidade e Testes
Saber mais

12 de novembro de 2020

Gatling na CoP de Qualidade de Software

    Qualidade e Testes
Saber mais

Quer saber mais sobre
Design, Estratégia e Tecnologia?