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.

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.
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
- Crie um projeto Maven em sua IDE. Estamos usando o IntelliJ, mas você obterá uma estrutura semelhante em qualquer IDE que esteja utilizando.
- Abra seu arquivo POM.xml.
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:
- Execute uma compilação Maven para importar todas as dependências. Você encontrará ajuda sobre a configuração do Maven em Guru99.
- Se os erros persistirem, execute um `Maven clean` seguido de um `Maven install`. A compilação deverá ser concluída sem erros.
- 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 capturada pelo REST Assured
Caso você receba um erro no navegador ao tentar obter uma resposta para a solicitação:
- Verifique se você usou HTTPS ou HTTP. Seu navegador pode ter configurações que bloqueiam sites não seguros.
- 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:
- Identificação do Cliente
- Senha
- 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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.





