Tutorial de Teste de API REST Assured

⚡ Resumo Inteligente

A REST Assured se estabelece como uma JavaBiblioteca de código aberto baseada em [nome da biblioteca/framework] que simplifica os testes de automação de APIs REST. O framework permite que engenheiros de qualidade validem respostas JSON complexas, cabeçalhos, códigos de status e tempos de resposta usando uma sintaxe limpa no estilo BDD com integração perfeita com o Maven.

  • ⚙️ Foundation Configuração: configurar Java, Eclipsee as dependências do Maven antes de escrever seu primeiro script de teste REST Assured.
  • 📐 Domínio da sintaxe: Aplique o padrão Dado-Quando-Então para expressar solicitações de API em um formato legível e adequado para negócios.
  • 🔍 Validação granular: Extract corpo da resposta, códigos de status, cabeçalhos, tipo de conteúdo e temporização por meio de uma cadeia fluente.
  • 🧩 Navegação por Caminho: Percorra valores JSON aninhados usando a notação de ponto, semelhante ao XPath em Selenium para afirmações precisas.
  • 🛡️ Integração CI/CD: Combine REST Assured com TestNG or JUnit para incorporar verificações de API diretamente em pipelines de compilação automatizados.

Tutorial REST Assured

O que é fique tranquilo?

Tenha certeza permite testar APIs REST usando bibliotecas java e integra-se bem com Maven. Possui técnicas de correspondência muito eficientes, portanto, afirmar os resultados esperados também é bastante simples. Rest Assured possui métodos para buscar dados de quase todas as partes da solicitação e resposta, não importa quão complexas sejam as estruturas JSON.

Para a comunidade de testes, o API Automation Testing ainda é novo e um nicho. As complexidades do JSON mantêm os testes de API inexplorados. Mas isso não o torna menos importante no processo de teste. A estrutura Rest Assured.io tornou tudo muito simples usando os fundamentos básicos do Java, tornando-o algo muito desejável de aprender.

Por que precisa do Rest-Assured?

Imagine que você abre o seu Google Visualize os mapas e procure o lugar que deseja visitar. Você verá imediatamente restaurantes próximos, opções de transporte dos principais provedores de viagens e muitas outras opções ao seu alcance. Todos sabemos que essas não são... Google produtos, então como é que Google Como exibi-los? Isso utiliza as APIs expostas desses provedores. Agora, se você for solicitado a testar esse tipo de configuração, mesmo antes da interface do usuário ser construída ou estar em desenvolvimento, testar as APIs torna-se extremamente importante. Testá-las repetidamente com diferentes combinações de dados torna esse um caso muito adequado para automação.

Anteriormente, as equipes usavam linguagens dinâmicas como Groovy e Ruby para alcançar isso, o que foi um desafio. Consequentemente, os testes de API não foram amplamente explorados pelos testadores funcionais.

No entanto, com o Rest Assured, o teste automatizado de APIs e o envio de solicitações HTTPS simples com personalizações fáceis de usar tornam-se simples para quem tem um conhecimento básico de JavaÉ útil para entender testes de API e testes de integração. O Rest Assured oferece grande confiança no backend, enquanto os testadores de frontend podem se concentrar na interface do usuário e nas operações do lado do cliente. O Rest Assured é de código aberto e a constante adição de métodos e bibliotecas o tornou uma ótima opção para automação de APIs.

#1 Melhor no geralTestes globais de aplicativos
9.8/ 10
★ ★ ★ ★ ★
Obter demonstração gratuita
PractiTest
9.5/ 10
★ ★ ★ ★ ★
Visite PractiTest
Testiny
9.3/ 10
★ ★ ★ ★ ★
Visite Testiny
Melhor ParaTestes colaborativos e controle de qualidade.Gerenciamento de TesteEquipes de controle de qualidade de pequeno e médio porte
Característica chave✓Testes de integração de terceiros✓gerenciamento centralizado de testes✓Casos de teste manuais e automatizados
ERP e SAP✓Jira, Slack, TestRail✓Jira, Jenkins, Slack✓Jira, GitHub, GitLab
Teste GrátisDemo grátis14-Day Free TrialDemo grátis
Obter demonstração gratuitaVisite PractiTestVisite Testiny

REST Assured vs Postman: Principais diferenças

Tanto REST Assured quanto Postman Existem várias ferramentas para validar APIs REST, mas cada uma se encaixa em uma etapa diferente do ciclo de vida de testes. A escolha da ferramenta certa depende das habilidades da sua equipe, do escopo do projeto e das necessidades de integração.

Aspecto Tenha certeza Postman
Formato Java Biblioteca para automação baseada em código Cliente de API baseado em GUI com suporte a scripts
Melhor Caso de Uso Pipelines de integração contínua e suítes de regressão Exploração manual e verificações rápidas de API
Requisito de habilidade Setores de Java conhecimento necessário Codificação mínima; utiliza JavaTrechos de script
Relatórios Integra-se com TestNG, JUnite Allure Resumos de execução integrados via CLI do Newman

Muitas equipes usam Postman para protótipos iniciaisping e migrar para REST Assured para regressão automatizada assim que a API estiver configurada.tract se estabiliza.

Como configurar o Rest Assured.io com Eclipse

A configuração do REST Assured envolve três dependências principais: Java, uma IDE e o Maven. Siga os passos abaixo para evitar erros de compilação posteriormente.

Etapa 1) Instalar Java. Consulte isto guia

Etapa 2) Baixe um IDE para começar: eclipse

Etapa 3) Instale o Maven e configure seu eclipse. Referir aqui..

Configuração fique tranquilo

  1. Crie um projeto Maven em sua IDE. Estamos usando o IntelliJ, mas você obterá uma estrutura semelhante em qualquer IDE que esteja utilizando.
  2. Abra seu arquivo POM.xml.

Estrutura do projeto para configuração do Maven com REST Assured

Estrutura do projeto para um espaço de trabalho Maven com REST Assured

Para ficar tranquilo.io: Para Java versão <9 usuários:

Adicione a dependência abaixo ao seu POM.xml:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Para ficar tranquilo.io: Para Java Usuários da versão 9+:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured-all</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Solução de problemas:

Caso encontre erros e não tenha certeza se as dependências foram baixadas corretamente, siga estes passos:

  1. Execute uma compilação Maven para importar todas as dependências. Você encontrará ajuda sobre a configuração do Maven em Guru99.
  2. Se os erros persistirem, execute um `Maven clean` seguido de um `Maven install`. A compilação deverá ser concluída sem erros.
  3. Adicione as importações abaixo em seu Java Execute a classe e confirme se não há erros de compilação.
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

Primeiro script simples de Rest Assured

Com as dependências configuradas, você já pode escrever seu primeiro script. O framework segue um estilo de Desenvolvimento Orientado a Comportamento (BDD) que se lê quase como inglês.

Sintaxe:

A sintaxe do Rest Assured.io é a parte mais legível da estrutura, pois é muito semelhante ao BDD e fácil de entender.

Given().
        param("x", "y").
        header("z", "w").
when().
Method().
Then().
        statusCode(XXX).
        body("x", "y", equalTo("z"));

Explicação:

Code Explicação
Dado() A palavra-chave 'Given' permite definir um plano de fundo. Aqui, você passa os cabeçalhos da solicitação, os parâmetros de consulta e caminho, o corpo e os cookies. Isso é opcional se esses itens não forem necessários na solicitação.
Quando() A palavra-chave 'quando' marca a premissa do seu cenário. Por exemplo, 'quando' você receber/postar/inserir algo, faça outra coisa.
Método() Substitua isso por qualquer uma das operações CRUD (get/post/put/delete).
Então() Suas condições de assert e matcher vão aqui.

Agora que você já tem a configuração e uma noção da sintaxe, vamos criar nosso primeiro teste simples. Não se preocupe se a estrutura parecer nova para você; conforme você for programando e interpretando cada linha, você vai se familiarizar.

O que você vai buscar?

Abra seu navegador e clique em – https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1. Certifique-se de ver algo como abaixo.

Exemplo de resposta da API do script Rest Assured

Exemplo de resposta da API capturada pelo REST Assured

Caso você receba um erro no navegador ao tentar obter uma resposta para a solicitação:

  1. Verifique se você usou HTTPS ou HTTP. Seu navegador pode ter configurações que bloqueiam sites não seguros.
  2. Verifique se algum proxy ou firewall está bloqueando o acesso ao site pelo seu navegador.

*Observação – Você não usou nenhum cabeçalho aqui, nem corpo, nem cookie. Foi um URLE você está obtendo conteúdo da API em vez de publicar ou atualizar qualquer conteúdo existente. Isso caracteriza uma chamada GET. Lembre-se disso para entender melhor nosso primeiro teste.

O objetivo do seu teste:

O objetivo do script é imprimir em seu console IDE a mesma saída que você recebeu no navegador por meio do Rest Assured.

Vamos codificar isso com as etapas abaixo:

Obtendo o corpo da resposta

Passo 1) Crie uma classe chamada “myFirstRestAssuredClass”.

Passo 2) Crie um método chamado “getResponseBody”.

Passo 3) Semelhante à estrutura aprendida anteriormente de dado, quando e então, digite o código abaixo:

dado(). -> Não são necessários cabeçalhos, nenhuma consulta ou parâmetro de caminho.

when(). -> Nenhuma condição específica definida.

pegar('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> apenas o URL precisa ser fornecido.

então(). -> Nenhuma asserção específica é necessária.

log().all() -> Assim que toda a resposta for obtida, registre a resposta, os cabeçalhos e essencialmente tudo o que a solicitação retornar.

public static void getResponseBody(){
   given().when().get("https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1").then().log()
  .all();

}

Observe agora que o URL O texto usado é longo e menos legível. Observando atentamente, você notará que três parâmetros de consulta estão sendo usados:

  1. Identificação do Cliente
  2. Senha
  3. Conta_Não

O Rest Assured nos ajuda a passar cada parte (consulta, caminho, parâmetro de cabeçalho) separadamente, tornando o código mais legível e fácil de manter. Além disso, podemos parametrizar os dados de um arquivo externo conforme necessário.

Para usar parâmetros de consulta, voltamos à nossa definição de sintaxe e vemos que todos eles são passados ​​​​como parte de determinado.

public static void getResponseBody(){

   given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log()
           .body();
}

**Observe que usamos “corpo” em vez de “todos”; isso nos ajuda a explicar melhor.**tracnão apenas o corpo da resposta.

Saída:

Obtendo o código de status da resposta

O próximo método que vamos programar é obter o código de status e inserir uma asserção para validá-lo.

Passo 1) Crie um método chamado getResponseStatus().

Passo 2) Use a mesma estrutura de solicitação usada acima. Copie e cole.

Passo 3) Em vez de registrar, use o 'getStatus'.Code'método integrado do Rest Assured para obter o valor do código de status.

Passo 4) Para afirmar que seu código de status é 200, use as palavras-chave – assertThat().statusCode(esperadoCode).

**Observação - URL é uma variável usada por simplicidade. URL contém toda a solicitação da API URL.

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

Saída:

Necessidade de Negócios

Uma das regras básicas da automação é que devemos colocar pontos de verificação para que o teste prossiga somente se todas as condições exigidas forem atendidas. Nos testes de API, a validação mais básica é verificar se o código de status da solicitação está no formato 2XX.

O código completo, até agora:

import java.util.ArrayList;
import static io.restassured.RestAssured.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class myFirstRestAssuredClass {

   final static String url="https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1";

   public static void main(String args[]) {

      getResponseBody();
     getResponseStatus();

; }

   //This will fetch the response body as is and log it. given and when are optional here
   public static void getResponseBody(){
       given().when().get(url).then().log()
      .all();

  given().queryParam("CUSTOMER_ID","68195")
               .queryParam("PASSWORD","1234!")
               .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log().body();
   }

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

}

*Nota:

  1. 200 é uma resposta bem-sucedida para este cenário. Às vezes, você pode precisar que a solicitação falhe, caso em que você pode usar 4XX ou 5XX. Tente alterar o código de status fornecendo parâmetros inválidos e verifique.
  2. Quando afirmamos uma condição, não haverá impressão no console, a menos que haja um erro.

Script para buscar diferentes partes de uma resposta

Além do corpo da resposta e do código de status, o REST Assured também expõe cabeçalhos, tempo de resposta e tipo de conteúdo por meio de expressões encadeáveis.tracmétodos tor. A palavra-chave 'extracÉ essencial para obter essas peças específicas.

cabeçalho

Rest Assured é uma linguagem muito direta e buscar cabeçalhos é igualmente simples. O nome do método é headers(). Como antes, criaremos um método independente para fazer o mesmo.

public static void getResponseHeaders(){
   System.out.println("The headers in the response "+
                   get(url).then().extract()
           .headers());
}

Observe que 'given().when()' é omitido aqui, e a linha de código começa em get(). Isso ocorre porque não há nenhuma pré-condição ou verificação feita antes de enviar a solicitação e obter uma resposta. Nesses casos, o uso de 'given().when()' é opcional.

Saída:

Necessidade de negócios:

Muitas vezes, você precisará usar o token de autorização ou um cookie de sessão para a solicitação subsequente, e esses detalhes geralmente são retornados como cabeçalhos da resposta.

Tempo de Resposta

Para obter o tempo necessário para buscar a resposta do back-end ou de outros sistemas downstream, o Rest Assured fornece um método chamado 'timeIn' com um timeUnit adequado para obter o tempo necessário para retornar a resposta.

public static void getResponseTime(){
  System.out.println("The time taken to fetch the response "+get(url)
         .timeIn(TimeUnit.MILLISECONDS) + " milliseconds");
}

Saída:

Necessidade de negócios:

Um aspecto muito importante no teste de APIs é o tempo de resposta, que mede o desempenho da aplicação. O tempo necessário para a sua chamada pode variar dependendo da sua velocidade de internet, do desempenho da API naquele momento, da carga do servidor e de outros fatores que influenciam o tempo de resposta.

Content-Type

Você pode obter o tipo de conteúdo da resposta retornada usando o método “contentType()”.

public static void getResponseContentType(){
   System.out.println("The content type of response "+
           get(url).then().extract()
              .contentType());
}

saída

Necessidade de negócios:

Em alguns casos, obter o tipo de conteúdo é essencial para garantir que não haja brechas de segurança para ameaças de origem cruzada e para confirmar se o conteúdo transmitido está de acordo com os padrões da API.

Buscar elemento JSON individual

Com base na resposta fornecida, você deve calcular o valor total. Você precisa reunir todos os valores e somá-los.

Passos:

Passo 1) O campo "amount" está dentro de uma matriz com a chave "statements", que por sua vez está na lista com a chave "result".

Passo 2) O Rest Assured fornece um mecanismo para acessar os valores na API usando o "caminho".

Passo 3) O caminho para chegar aos valores é “result.statements.AMOUNT”. Pense nisso como um XPath em Selenium.

Passo 4) Recupere todos os valores em uma coleção e, em seguida, percorra todos os valores para calcular a soma.

public static void getSpecificPartOfResponseBody(){

ArrayList<String> amounts = when().get(url).then().extract().path("result.statements.AMOUNT") ;
int sumOfAll=0;
for(String a:amounts){

    System.out.println("The amount value fetched is "+a);
    sumOfAll=sumOfAll+Integer.valueOf(a);
}
System.out.println("The total amount is "+sumOfAll);

}

Observação: Como o valor da quantia é do tipo string, nós o convertemos para um número inteiro para a soma.

Saída:

Melhores Práticas para Automação de Testes REST Assured

Depois de compreender os conceitos básicos, a aplicação de padrões disciplinados mantém seu conjunto de testes confiável à medida que a superfície da API cresce. As práticas abaixo ajudam as equipes a evitar testes instáveis ​​e sobrecarga de manutenção.

  1. Centralizar a base URL: Armazene o URI base e os tokens de autenticação em uma única classe de configuração ou arquivo de propriedades. Isso evita duplicação e simplifica a troca de ambientes.
  2. Utilize as especificações de solicitação e resposta: Crie objetos RequestSpecBuilder e ResponseSpecBuilder reutilizáveis. Eles reduzem o código repetitivo quando muitos testes compartilham cabeçalhos ou asserções comuns.
  3. Validar esquema JSON: Combine o REST Assured com o módulo json-schema-validator para confirmar a conformidade.tracIntegridade. As verificações de esquema detectam alterações incompatíveis antes que elas cheguem aos consumidores subsequentes.
  4. Externalizar dados de teste: Armazene os dados em arquivos JSON ou use provedores de dados de TestNGDados codificados diretamente no código rapidamente se tornam obsoletos.
  5. Realizar testes independentes: Cada teste deve configurar e limpar seus próprios dados. Conjuntos de testes dependentes da ordem falham de forma imprevisível em execuções paralelas de CI.
  6. Capturar registros seletivamente: Use `log().ifError()` em ambientes estáveis ​​e `log().all()` durante a depuração. Logs detalhados tornam os pipelines de CI mais lentos e ocultam problemas reais.
  7. Integre-se ao CI/CD: Acione suítes REST Assured por meio do Maven Surefire ou Failsafe em Jenkins, GitHub Actions ou GitLab. Execute verificações rápidas em cada commit e uma regressão completa durante a noite.

Adotar esses hábitos desde cedo transforma a automação de APIs em um ativo de longo prazo, em vez de um gargalo frágil.

Perguntas Frequentes

Sim. Assistentes de IA modernos, como o ChatGPT e o GitHub Copilot, podem gerar scaffolds de testes REST Assured a partir de especificações de API. Mesmo assim, os engenheiros devem revisar o código gerado quanto a asserções, tratamento de dados e casos extremos antes de integrá-lo.

Ferramentas baseadas em IA analisam padrões de resposta e sugerem localizadores ou asserções de autorrecuperação. Elas sinalizam desvios de esquema, recomendam refatorações e atualizam automaticamente os dados de teste, o que reduz a manutenção manual quando as APIs evoluem com frequência.

REST Assured é um Java Biblioteca criada para automação orientada a código em pipelines de CI. Postman É um cliente com interface gráfica para exploração manual e criação rápida de scripts. As equipes costumam combinar ambos ao longo do ciclo de vida de testes.

REST Assured é otimizado para REST e JSON. Ele pode enviar payloads XML brutos para SOAP, mas ferramentas dedicadas como SoapUI Oferece suporte mais completo para análise sintática de WSDL e asserções específicas de SOAP.

REST Assured combina naturalmente com TestNG e JUnit Para asserções, hooks de ciclo de vida e geração de relatórios, o Allure, o Extent Reports e o Maven Surefire adicionam visualização e integração de CI.

Resuma esta postagem com: