Como testar uma API REST?

logoEstamos acostumado em grande parte a testar sistemas que possuem uma interface gráfica (UI). Mas como testamos uma API REST? O teste de integração de uma API é similar ao que já estamos acostumado, executamos alguma funcionalidade que chama uma API e validamos o resultado final pela interface do sistema. Porém existem situações que é necessário validar a API por si só.

Seguem algumas dicas sobre testes para esse tipo de arquitetura.

Massa de dados

A massa consiste em montar a estrutura de dados a serem enviados para a API. Essa estrutura basicamente é criar arquivos JSON ou XML com os parâmetros da API, variando as informações para os cenários mapeados. Após ter as estruturas de dados para envio prontas, basta informar os dados no body da requisição e fazer a chamada da API.

Tipos de validações

  • Validar o status de retorno;
  • Validar o header que está sendo retornado;
  • Validar o body do response, que nada mais é que uma nova estrutura de dados;
  • Validar o comportamento da API quando o serviço está fora;
  • Validar se enviado um JSON/XML com a estrutura incorreta, qual será o comportamento da API;
  • Validar se enviado dados inválidos qual será o comportamento;
  • Validar se a API não retorna nada;
  • Validar o retorno é o esperado com base nas condições definidas para cada tipo de dado enviado;
  • Nem sempre a API tem como retorno uma nova estrutura de dados, nesse caso é imprescindível validar no sistema o resultado esperado.

Alguns erros que podem ser encontrados durante os testes 

  • API não atende a estrutura de dados enviada;
  • Erros relacionado a segurança;
  • Problemas de Multi-threading;
  • Não implementado retorno de erros ou avisos para determinados cenários.

Boas práticas

  • Durante a escrita de casos de teste, deixar visível a chamada da API de qual se trata o caso de teste;
  • Deixar claro nos casos de teste a estrutura de dados que será enviada;
  • Realizar testes de segurança, verificando que tipo de autentificação é necessária, se os dados devem ser criptografados etc;
  • Utilizar ferramentas que automatizem a API e os dados enviados, assim torna-se mais eficiente o processo de executar as chamadas;
  • Criar testes que cubram todas as combinações de entradas possíveis na chamada da API;
  • Como testador validar se a documentação provem todas as informações necessárias para utilização da API, como tipos de dados a serem enviados e o resultado esperado, até porque muitas vezes a documentação é entregue junto com o produto final;

Pontos de atenção

  • Pode ser difícil medir a performance de uma API, uma vez que o tempo de resposta é rápido;
  • Pode se gastar um tempo montando a estrutura dos dados (JSON/ XML) dependendo da complexidade da estrutura de dados;
  • Se a API fizer integração com sistemas que o testador tenha acesso, é importante validar os resultados no sistema também (testes de UI).

Ferramentas

Uma boa ferramenta para testes de API deve ser aquela que permite de forma fácil que o testador configure os parâmetros do header, o método de request e o body da requisição. Além de ser uma ferramenta que permita a automatização das chamadas da API. Abaixo algumas ferramentas utilizadas no mercado:

  • SOAPUI
  • Postman with jetpacks
  • Postman with newman
  • Runscope
  • Curl
  • Cfix
  • Check
  • CTESK
  • dotTEST
  • Eclipse SDK tool- Automated API testing

Difícil?! Com certeza não 😀. Os tipos de testes que devem ser feitos são similares ao que fazemos em testes de interface. É importante lembrar que há alguns pontos específicos para serem testados quanto se trata de API REST, além da necessidade de aprender a manipular algumas ferramentas que facilitam a execução dos testes.

Just as traditional testers test how an operator would use the front end of their product, an API tester can test how internal and external users use the APIs. The concepts are very similar to non-API testing; the only difference is that in most cases you are manipulating the API outside of a user interface (UI) using different tools.” Jonathan Cooper, a principal quality engineer for the ExactTarget Marketing Cloud.

Por MONISE COSTA

Formada em Sistemas de Informação pela PUC Campinas, MATERANA desde 2011. Apaixonada pela área de TI, Analista de Requisitos na maior parte do tempo e desenvolvedora Java/Android por lazer.

Postado em: 03 de dezembro de 2015

Confira outros artigos do nosso blog

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

Three laws that enable agile software development

09 de março de 2017

Celso Gonçalves Junior

Medindo performance de uma API REST

21 de fevereiro de 2017

Monise Costa

Deixe seu comentário