API REST: entenda o passo a passo para realizar testes
Hoje estamos na onda dos microsserviços e com o surgimento dessa nova arquitetura, os serviços monolíticos estão sendo abandonados. Porém com tantos serviços desse tipo, surge uma questão preocupante: os testes. Como realizar testes unitários de um recurso presente em uma API REST? Como realizar testes de integração dos microsserviços? Essas são algumas dúvidas que surgem no dia a dia e tornam a construção dos testes algo desafiador para o desenvolvedor. Então, com o objetivo de ajudá-los, vou compartilhar alguns frameworks, ferramentas e dicas de como realizar tais testes.
Que testes devo realizar em um REST API?
Quando estamos criando nosso cenário de teste para API, devemos conhecer plenamente o contrato dela, uma API documentada com Swagger ajuda muito nessas horas, pois através dele saberemos os recursos, corpo de mensagem, etc.
Dados de uma requisição
- Method
- URI
- Headers
- Query Parameters
- Body
Dados para uma resposta
- Headers
- Body
- Status code
Comportamento de solicitação
- Validação dos dados de retorno.
- Validar os headers da resposta
- Validar se a resposta está de acordo.
- Validar se o content-type alterado, o comportamento continua o mesmo.
- Validar se a estrutura do JSON ou XML está correta.
- Validar se quando der erro o status está de acordo com os códigos de erro.
- Validar se uma requisição com informações incompleta, qual será o comportamento da requisição.
Após a coleta desses dados, já temos um cenário e saberemos quais comportamentos são esperados em nossa API.
Ferramentas de teste REST API
Após o levantamento dos principais pontos a serem testados em uma API, é necessário escolher a ferramenta para realização dos testes. Atualmente o mercado disponibiliza uma variedade de ferramentas, mas deve-se escolher a que melhor atenda o cenário do seu projeto.
Como exemplo, podemos citar:
Neste artigo vamos usar Postman para criar os testes e Newman para executar os testes automaticamente, de modo que será possível criar um cenário muito interessante para testar.
Postman/Newman
Postman é um REST Client muito popular entre os desenvolvedores que precisam fazer um pedido HTTP, o que ajuda a validar os testes realizados. Temos também o Newman que executa coleções do Postman por linha de comando, o que facilita o uso de softwares de integração contínua auxiliando a validação de uma API após a geração de um build.
Cenário de Teste de API Rest
Para mostrar como é fácil a utilização do Postman iremos construir um passo a passo para testar uma API. Essa API é muito simples ela é um CRUD de Tarefas, onde teremos os seguintes recursos.
![Testes em API REST](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e4a94a364451f962ab_5f4fe400019ce73a1d44e2e5_image5.webp)
Nosso plano será o seguinte.
Rule Expected result
POST /tasks with missing values return invalid request status HTTP Status 400
POST /tasks when running return creation status and with location in the header HTTP Status 201, Location no header
GET /tasks when running return ok status HTTP Status 200
GET /tasks/{taskid} with valid taskid return task object and ok status Task Object and HTTP status 200
GET /tasks{taskid} with invalid id return status of not found HTTP Status 404
DELETE /tasks/{taskid} with valid id return status of no content HTTP Status 204
Postman
Após o término da construção do cenário de teste, podemos começar a usar Postman para criar os cenários de teste. Para começar, temos duas opções: importar Swagger ou criar uma nova coleção.
![Como fazer Testes em API REST](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e48481a632f95afe27_5f4fe4008b91d23f5686afe8_image14.webp)
Importação Swagger
![Realização de testes em API REST](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e44f88801ae3ae9f14_5f4fe4005e864d670fb19e45_image11.webp)
Criar uma nova coleção
Para gerar coleções de requisições de teste no Postman podemos importar um documento Swagger ou então, gerar uma nova coleção através da própria ferramenta. A importação trará todas as requisições descritas no Swagger, enquanto a criação de uma coleção gerará requisições vazias, sendo necessário que o desenvolvedor descreverá os itens da coleção.
![Como realizar testes em API REST](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e40def61e286a6f415_5f4fe4002371860fa73a6f49_image3.webp)
Coleção criada com as solicitações que testaremos
Com Postman temos a possibilidade de trabalhar com vários ambientes, tais como Produção ou Sandbox. Em cada um deles, podemos colocar variáveis para ajudar nos testes. Um bom exemplo é a inserção do endpoint da API.
![Dicas para realização de testes em APIs](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e4a94a364451f962c9_5f4fe400237186aeb13a6f47_image6.webp)
Configuração do Environment.
Para criar os testes, selecione o método HTTP (POST, GET, PUT, DELETE, etc) e digite a URL de solicitação, observe que a URL {{{{uri_task_api}}} é uma variável de ambiente, para que possamos testar vários ambientes.
![Como devo realizar testes em API rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e58620ceef5f8d88c8_5f4fe40094914efaaacc9666_image7.webp)
Adicione os Headers necessários, nesse caso temos que passar o Header “Content-Type” para especificar que vamos passar um JSON, mas poderíamos passar um Header diferente para testar se API está tratando corretamente o erro “media type”.
![Testes em API rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e53f42098ae9198ec6_5f4fe4007ddba0943fa8b4f9_image2.webp)
Quando estamos realizando uma operação de inclusão ou edição de dados, devemos preencher o body, esse é um exemplo de um body utilizando JSON. Além de JSON, podemos usar XML, texto, form-data, x-www-form-urlencoded ou arquivos binários.
![Testes em API rest como realizar](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e51076c80ba447e5ae_5f4fe400c06716a2da9c71d1_image1.webp)
Na aba “Pre-request Script” é possível executar scripts antes de realizar um requisição, nessa imagem estamos criando uma variável “createdAt” com a data atual, e adicionando ela em um ambiente, assim podemos utilizar esse valor em qualquer lugar na requisição.
![realizar testes em API rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e599be2848c0fd93fc_5f4fe400c13f7cf57e73f5c6_image10.webp)
Na aba “Tests” é onde devemos criar os scripts para validar o cenário de teste, como validar se um status code está de acordo com previsto, se o Header “location” está presente, entre outras possibilidades. Além disso podemos recuperar valores para ser utilizados futuramente, ou seja conseguimos realizar vários scripts, vai depender da sua necessidade.
![teste api rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e51fecf2cd75b01ecb_5f4fe40023718669ef3a6f4a_image12.webp)
Executando os testes
Após a criação de todos os cenários, temos a possibilidade de executar o teste individualmente ou para toda a coleção. No teste de unidade, basta clicar no botão a seguir:
![teste em api rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e51076c80ba447e5bd_5f4fe401c4f3d14c88909d94_image15.webp)
Este botão ativará seu pedido e validará seus testes, e o informará quais testes foram aprovados ou reprovados.
![testes em api rest, aprenda como fazer](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e58481a632f95afea4_5f4fe400728fe0a4a1beba18_image17.webp)
Para executar a coleção vá no menu “Runner” Elá vai abrir um Janela, onde você deve selecionar a coleção e o “Environment”. Após isso basta clicar no botão
![teste api rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e599be2848c0fd943f_5f4fe401c13f7c2bcf73f5c7_image9.webp)
Ele vai disparar todas requisições programadas na sua coleção, e vai informar quais foram os testes que passou ou falhou.
![testes em api rest como fazer o seu](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e5740bffa4a81e3b86_5f4fe4012ee5899cc1b79bb6_image13.webp)
Newman
Como mencionado acima, temos o Newman que executa suas coleções do Postman, porém por linha de comando, isso é muito útil quando você quer deixar os seus testes como um passo da sua build. Para usá-lo basta exportar do Postman a coleção e o ambiente desejado.
![teste api rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e51076c80ba447e5cc_5f4fe4018d94898ab5ecb36e_image4.webp)
Exportar coleção.
![teste em api rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e64089ab436b409882_5f4fe4018a9c45793dae0358_image8.webp)
Exportar Ambiente.
Para executar na linha de comando basta digitar a seguinte expressão:
newman run tasks-api.postman_collection.json--environment task-environments.postman_environment.json
Depois de executar ele vai exibir os resultados, com os testes executados e mostrar qual teste passou e qual falhou.
![importancia de realização de teste em api rest](https://cdn.prod.website-files.com/6475df10614983200b234b6b/64aee7e6a94a364451f962d8_5f4fe401da09e7d765d528c8_image16.webp)
Bom essa é umas das formas que você pode utilizar para testar sua API, claro que existem várias ferramentas e métodos, basta você entender qual será a melhor para o seu contexto, e nunca deixar suas APIs sem testes.
GITHUB: https://github.com/renanpetronilho/task-api
Nossa Plataforma de API Management é um hub completo. Com a Sensedia, grandes empresas escalam suas operações com APIs, com ambientes de testes, adaptive governance, api security e muito mais
Publicado originalmente em julho de 2017, com pequenas atualizações em 2019.
Inicie sua jornada conosco
Estamos prontos para guiar o seu negócio rumo ao futuro, com a solução certa para você se beneficiar do potencial das APIs e integrações modernas.
Conteúdos relacionados
Confira os conteúdos produzidos pela nossa equipe
Sua história de sucesso começa aqui
Conte com nosso apoio para levar as melhores integrações para o seu negócio, com soluções e equipes profissionais que são referência no mercado.