PT | EN

REST Assured: o que é e como testar APIs REST em Java na prática

Por 09/03/2021 17/09/2024 11 minutos

Testes de API permitem identificar e corrigir erros antes que eles causem problemas. E é aí que consideramos o REST Assured uma ferramenta poderosa para a realização de testes automatizados em APIs REST.

Essa é uma excelente medida para garantir a qualidade de software, além de enriquecer a sua automação de testes por meio de experimentos mais fáceis e eficientes de serem executados.

Por isso, convidamos você a descobrir como essa ferramenta pode facilitar o processo de teste, aumentar a eficiência da sua equipe de desenvolvimento e, consequentemente, melhorar a qualidade das suas soluções!

O que é REST Assured?


REST Assured é uma biblioteca Java projetada para simplificar a automação de testes de APIs REST. Desenvolvida com foco na usabilidade e eficiência, a solução digital facilita o trabalho do desenvolvedor ao criar, executar e manter testes de API de maneira intuitiva e produtiva.

Em parte, isso se deve à sua estrutura, que segue o paradigma de Desenvolvimento Guiado por Comportamento (ou BDD — Behavior Driven Development) a partir de uma sintaxe clara, composta pelos comandos given, when e then.

  • Given: passamos as pré-condições como token de autenticação e body. Aqui, você precisa responder às perguntas: o que preciso enviar na requisição? O que esta API espera? Autenticação? Dados de cadastro?; 
  • When: efetuamos a chamada para o método a ser testado, passando parâmetros quando forem necessários. Em outras palavras, a chamada para a URL da API; 
  • Then: trabalha com os retornos da requisição, extraindo respostas que mostram se o retorno foi o esperado ou se aconteceu algum erro, com o código de status e o corpo da resposta, entre outros parâmetros.

Portanto, essa abordagem facilita a leitura e compreensão dos testes, tornando-os acessíveis tanto para Desenvolvedores, Analistas de Qualidade e outros membros da equipe como Team Managers.

Configuração do ambiente com REST Assured


Com o REST Assured, você terá um grande auxílio em testes automatizados de APIs REST. Mas, para isso, é necessária a inclusão das dependências da biblioteca no seu projeto, bem como a configuração inicial para garantir que tudo funcione corretamente. Vamos explorar essas etapas a seguir.

Leia também: Estratégias de testes de APIs

Configuração inicial


Veja, a seguir, quais são as principais configurações iniciais:

Dependências do projeto


Para adicionar o REST Assured ao seu projeto, você pode utilizar ferramentas de gerenciamento de dependências como o Maven, que simplificam o processo de incluir bibliotecas externas e garantem que todas as dependências necessárias sejam resolvidas automaticamente.

Para adicionar o REST Assured ao projeto, abra o arquivo pom.xml do seu projeto e insira-o dentro da tag <dependencies>, conforme a imagem abaixo para que o Maven baixe e inclua a ferramenta automaticamente.

Adicionar o REST Assured ao projeto
Importações estáticas REST assured

Em seguida, crie a estrutura dos pacotes de teste. Por aqui, quando estamos aprendendo, geralmente configuramos a URL base e passamos o payload dentro da mesma classe. 

Abaixo, o exemplo demonstra uma estrutura em que dados, testes e utilidades estão em pacotes separados, o que torna-os mais visíveis e organizados.

Organização do REST Assured

Dessa maneira, ao começarmos a digitar os códigos do REST Assured, automaticamente a IDE irá sugerir os imports. Mas por meio da documentação dessa biblioteca, já surgem recomendações para fazer as importações estáticas e manter um uso mais efetivo.

Por fim, vamos criar a classe de configuração da URL base. Para isso, podemos configurar a porta em que a API está rodando e o caminho base da API a partir dessa classe, que será posteriormente estendida para as classes de teste.

Com isso, é necessário informar apenas o endpoint em cada método de teste, uma vez que o caminho base já foi definido.

Exemplo de código REST assured

Veja, também, o exemplo de estrutura base para os métodos de testes:

Exemplo de teste REST assured

Esse exemplo demonstra como configurar o REST Assured para realizar um teste simples de verificação de código de status. E, assim, você pode expandir esses testes para incluir verificações mais complexas conforme necessário.

Como testar API com Java? Confira o tutorial para sair do zero e fazer seu primeiro teste


Nas imagens abaixo, vamos fazer uma requisição em que o payload é enviado através do body ao fazer o post. Assim, o token será extraído e armazenado na variável tokenAdm. 

Nesse método, nenhum teste está sendo efetuado: apenas a extração do token para posterior utilização.

Código given, when, then

Agora, o primeiro teste: no given(), passamos 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.

statusCode() exemplo

Em seguida, os dados passam através de um Map na classe dados para posterior substituição do payload na classe de testes:

REST assured API test

Na imagem abaixo, apenas vamos efetuar o mesmo teste do segundo passo de nosso exemplo. A diferença é que vamos receber no body o payload da classe Dados:

REST assured API

Já na ilustração abaixo, queremos validar 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().

método GET REST Assured

Melhores práticas de testes com Rest Assured


Veja, abaixo, nossas recomendações para que seus testes de API sejam bem-sucedidos:

Estruturação de testes


Também selecionamos algumas orientações práticas para organizar e estruturar testes de API de maneira eficiente:

  • Modularização: divida os testes em módulos com base nos diferentes endpoints ou funcionalidades da API;
  • Reutilização de código: utilize métodos e funções comuns para operações repetitivas, como autenticação e configuração;
  • Nomeação clara: nomeie-os de maneira descritiva para refletir claramente o que está sendo testado;
  • Isolamento de testes: garanta que cada teste seja independente e não dependa do estado de outros experimentos realizados;
  • Configuração e limpeza: utilize métodos de configuração (@Before ou @BeforeAll) e limpeza (@After ou @AfterAll) para preparar o ambiente de teste e limpá-lo após a execução.

Manutenção de testes


Para a manutenção dos seus testes com REST Assured, temos mais estratégias para mantê-los atualizados com as mudanças na API, como:

  • Utilize scripts ou ferramentas para atualizar automaticamente os testes de acordo com as mudanças da API;
  • Mantenha a documentação dos testes e da API sempre atualizada para refletir as alterações adequadamente;
  • Execute testes de regressão regularmente para garantir que mudanças não afetem funcionalidades existentes. Além disso, faça revisões periódicas dos testes para identificar e remover trechos obsoletos ou redundantes;
  • Utilize integração contínua para executar testes automaticamente com cada alteração no código. Isso garante que os testes estejam em dia com as últimas mudanças na API.

Debugging


Agora, para identificar e corrigir bugs no software usando o REST Assured, recomendamos que você:

  • Adicione logs detalhados em pontos críticos do código de teste para rastrear o fluxo de execução e identificar problemas nas requisições e respostas da API;
  • Use ferramentas de depuração do seu ambiente de desenvolvimento integrado (IDE) como breakpoints e inspeção de variáveis para investigar o comportamento do código de teste e o tempo de execução;
  • Garanta que as mensagens de erro nos testes sejam claras e descritivas, facilitando a identificação de problemas específicos;
  • O óbvio também precisa ser dito: execute testes de API sempre em um ambiente local ou de desenvolvimento antes de implementá-los em produção;
  • Examine o stack trace fornecido por exceções nos testes para localizar exatamente onde ocorreu o bug.

Logs


Para conseguir monitorar os logs adequadamente, você deve se lembrar de:

  • Usar diferentes níveis de log (DEBUG, INFO, WARN, ERROR) nos testes para categorizar a importância das mensagens e facilitar a análise;
  • Incluir informações contextuais, como parâmetros de entrada, valores de retorno e identificadores de requisição;
  • Configurar a saída de log dos testes para diferentes destinos (arquivos, console, sistemas de monitoramento) de acordo com a necessidade do produto para facilitar o acesso e a análise dos logs e bugs;
  • Tenha critérios definidos ao adicionar logs nos testes para evitar sobrecarga de informações e manter a performance do sistema de testes;
  • Periodicamente, revise e limpe os logs antigos e irrelevantes gerados pelos testes de API para manter os registros gerenciáveis e úteis.

Vale a pena usar Cucumber em REST Assured?


Tanto o REST Assured quanto o Cucumber são frequentemente mencionados devido à sua abordagem BDD.

No entanto, é importante esclarecer que, apesar de suas semelhanças, eles são frameworks distintos

REST Assured, como vimos, é um framework que integra a sintaxe BDD diretamente em seu código para facilitar a realização de requisições e testes de APIs REST.

Ele utiliza os termos Given, When, Then para estruturar as requisições e validações de forma clara e organizada. Já o Cucumber é um framework que suporta o formato BDD, o que permite uma leitura de código mais eficaz e organizada, pois permite estruturar os testes de acordo com os cenários especificados.

REST Assured integrado com JUnit: entenda as vantagens


O código é composto por diferentes frameworks, e o REST Assured fornece um modelo para implementação de testes de backend no formato de microsserviços (APIs), o que possibilita fazer chamadas e validações para elas. Por sua vez, o JUnit agrega valor no momento de estruturar os testes e realizar assertivas.

Ou seja: proporciona anotações e métodos de asserção para criar, gerenciar e executar casos de teste (@test é uma anotação que diz para o código que aquele método é um método de teste, por exemplo).

Você pode fazer isso por meio da adição de dependências do REST Assured e do JUnit ao seu projeto — como explicamos anteriormente a partir da utilização do Maven.

Em seguida, defina a URL base da API e outras configurações necessárias antes de executar os testes — e, aí, vale utilizar as anotações do JUnit (@Test) para definir seus métodos de teste e a sintaxe BDD do REST Assured para fazer as requisições e validar as respostas. 

O que, consequentemente, vai permitir a automatização de testes de APIs REST de maneira eficiente, garantindo que elas funcionem conforme o esperado.

Conclusão


Testes de API são essenciais para garantir a qualidade e a funcionalidade das suas aplicações. E, com o REST Assured, você pode automatizar esses testes de forma eficiente, além de identificar e corrigir erros antes que eles causem problemas.

Essa é uma prática que melhora a qualidade do software e ainda facilita o trabalho do seu time de desenvolvimento. Se quiser aproveitar ao máximo essas vantagens, conheça os serviços de outsourcing da SoftDesign. 

Nossa equipe pode ajudar a implementar soluções muito mais eficientes, que podem elevar o padrão de qualidade das suas entregas, reduzir a quantidade de erros e o tempo necessário para o desenvolvimento de software. Descubra como podemos apoiar os seus produtos digitais com soluções de outsourcing!

Perguntas frequentes


Veja, a seguir, as respostas para as principais dúvidas sobre REST Assured.

O que é o REST Assured?

REST Assured é uma biblioteca Java que facilita a automação de testes de APIs REST, utilizando uma sintaxe BDD para criar e validar requisições e respostas.

Como testar API com Java?

Você pode testar APIs com Java utilizando bibliotecas como REST Assured para criar requisições e validar respostas, juntamente com JUnit para estruturar e automatizar os testes.

Como fazer testes em API REST?

Para testar uma API REST, configure as dependências no seu projeto, utilize REST Assured para criar requisições e validações e JUnit para estruturar e automatizar os testes.

Quer continuar aprendendo? Veja também:

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

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