Blog > Testes em APIs com Rest-Assured (Parte 1): Introdução

09/jul

Neste primeiro episódio da série, conheceremos as ferramentas necessárias para automação de testes usando um framework open-source para automatizar testes em APIs Rest chamado Rest-Assured.

Introdução

Neste primeiro episódio da série, conheceremos as ferramentas necessárias para automação de testes usando um framework open-source para automatizar testes em APIs Rest chamado Rest-Assured.

Esta série será composta por 4 episódios, são eles:

  • Parte 1: Introdução
  • Parte 2: Meu primeiro teste
  • Parte 3: Tipos de requisições
  • parte 4: Data-driven testing
  • Parte 5: Gerando relatórios

O que é REST?

REST é um estilo arquitetural que utiliza requisições HTTP para comunicação entre máquinas ao invés de opções mais complexas como CORBA, COM+, RPC, ou mesmo SOAP. Usar REST significa que serão realizadas trocas de informação baseadas em mensagens via HTTP.

REST utiliza alguns métodos que definem qual será a ação realizada na aplicação, são eles: GET, POST, PUT, DELETE, HEAD, OPTIONS e TRACE.

Vejamos um exemplo de um resource “usuario” usado para gerenciar os dados de um usuário:

GET /usuario

Retorna todos os registros de usuários contidos no sistema

GET /usuario/1

Retorna os dados do usuário com ID 1

POST /usuario

Registra um novo usuário no sistema

PUT /usuario/1

Altera os dados do usuário com ID 1

DELETE usuario/1

Remove o usuário com ID 1

Como testar manualmente?

Os testes são realizados através de clients que fazem o envio de requisições e o envio de respostas que, geralmente, utilizam o formato JSON ou XML.

Alguns clients muito utilizados para este tipo de teste são:

cURL

curl.haxx.se

Rest-Client

code.google.com/p/rest-client

Postman

getpostman.com

Paw

luckymarmot.com

Todos eles possuem suporte aos métodos utilizados no desenvolvimento de APIs REST, aqueles mencionados no tópico anterior: GET, POST, PUT, DELETE, HEAD, OPTIONS e TRACE.

Após enviarmos uma requisição, recebemos uma resposta, esta resposta possui 3 características que precisam ser validadas, são elas: Cabeçalho, Corpo e Schema.

Vejamos um exemplo de resposta:

HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
   "status":"success",
   “mensagem”:”Julio, seja bem-vindo a API da Qualister",
   “dados”:
   {
      "atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
      "consultores":
      {
         "quantidade":5,
         "nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
} }
}

O Cabeçalho desta mensagem possui informações referentes ao estado do servidor que recebeu a requisição, como: informações do Servidor, Data e Hora, Versão do protocolo HTTP, Código de estado, Tipo do conteúdo, etc:

HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json

O Corpo possui dados que foram processados e retornados pela aplicação que está sendo testada. O conteúdo do corpo muda a dependendo da forma com que a requisição é enviada:

{
   "status":"success",
   “mensagem”:”Julio, seja bem-vindo a API da Qualister",
   “dados”:
   {
      "atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
      "consultores":
      {
         "quantidade":5,
         "nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
} }
}

O Esquema é o template do corpo da mensagem, ele dita quais propriedades devem existir, quais são os tipos de valores que devem conter, regras referentes a quantidade de itens, valores mínimos e máximos, etc.

O testador precisa validar a API nestas 3 perspectivas, de modo a validar que a aplicação funciona como esperado.

Sobre o Rest-Assured

O Rest-Assured é um framework open-source escrito em Java, que facilita a automação de testes para validar que as APIs funcionam como esperado.

Ele possui suporte a todos os métodos mencionados anteriormente e também possibilita a validação da API nas 3 perspectivas que foram mencionadas.

A linguagem utilizada é simplificada permite estruturar os testes não padrão descrita ágil, utilizando Given. When e Then.

Ele utiliza framework Hamcrest para fazer validações em respostas.

Se utilizado em conjunto com Unit e Maven é possível executar os testes a partir de linha de comando, possibilitando assim a execução a partir de mecanismos de integração contínua.

Desafios

Um dos principais desafios talvez seja aprender a utilizar a DSN do framework, a linguagem Java a forma de estruturação de testes do JUnit.

O testador precisará também conhecer a estrutura da API, seus parâmetros de entrada e as respostas esperadas para que assim possa validar se a aplicação funciona como esperado.

Próximo episódio

No próximo episódio aprenderemos na prática c também parece pra mim tava jogando algumaomo escrever o nosso primeiro teste utilizando JUnit e Rest-Assured para tal utilizaremos a IDE Eclipse.

Referências

http://blog.pluralsight.com/representational-state...

POSTS RELACIONADOS

Workshop Gratuito de Rest-Assured (Online)

Automatize os testes de suas APIs Rest com este fantástico framework open-source

AGENDA

CURSOS RELACIONADOS