Como utilizar o Postman para testar APIs

O Postman é uma das ferramentas mais populares para desenvolver e testar APIs. Utilizo-o desde 2017 e aprender a utilizar o Postman para testar APIs ajudou-me realmente a acelerar o meu processo de testes.

Neste artigo, vou guiá-lo passo a passo, mostrando como validar pedidos de API utilizando o Postman. No final, deverá conseguir criar os seus próprios testes automatizados.  

Mas antes de avançarmos para o tutorial prático do Postman, deixe-me explicar algumas coisas sobre APIs.

O que são APIs?

imagem do que é uma API
Fonte da imagem

API é a abreviatura de Interface de Programação de Aplicações. Ainda não é muito claro, pois não? 😅 Deixe-me explicar melhor:

Uma API é uma interface que define as formas como os scripts ou programas podem comunicar com uma aplicação ou serviço. Funcionam partilhando dados e informações entre aplicações, sistemas e dispositivos.

A API mais comum atualmente é a API REST, que utilizarei mais à frente neste tutorial de testes de API com o Postman. REST é também um acrónimo de REpresentational State Transfer. As APIs REST baseiam-se em princípios como a comunicação cliente-servidor, interfaces uniformes para comunicar entre sistemas, operações sem estado, entre outros.

A comunicação é realizada através de pedidos e respostas HTTP.

A anatomia dos pedidos HTTP

Os pedidos HTTP têm 4 componentes principais:

  • O URL 
  • O endpoint, que representa o recurso específico com o qual queremos interagir.
  • O método HTTP — os métodos HTTP informam o servidor se estamos a tentar obter informações ou que tipo de modificações pretendemos que a aplicação efetue. Hoje, abordaremos as operações CRUD básicas:
    • Criar: POST
    • Ler: GET
    • Atualizar: PUT
    • Eliminar: DELETE
  • O corpo do pedido. Este é opcional, dependendo do método que utilizamos. Neste tutorial do Postman, utilizaremos o formato JSON (JavaScript Object Notation).
Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Códigos de resposta HTTP

Quando efetuamos um pedido HTTP, o servidor emite um código de resposta que nos informa se o pedido foi bem-sucedido ou não. As principais categorias de códigos de resposta HTTP são:

  • 1xx: resposta informativa
  • 2xx: sucesso
  • 3xx: redirecionamento
  • 4xx: erro do cliente
  • 5xx: erro do servidor

Gosto muito desta representação visual da Julia Evans:

imagem dos códigos de estado HTTP
Lista dos códigos de resposta HTTP mais comuns (Fonte)

Pode consultar uma lista completa dos códigos de resposta aqui ou, se preferir que sejam explicados por gatos, aqui 🐱‍👓

Está bem, penso que já abordámos o suficiente para começar o tutorial propriamente dito — vejamos agora como utilizar o Postman para testar APIs! 

Como utilizar o Postman para testar APIs (passo a passo)

Pode utilizar o Postman de duas formas: diretamente a partir do navegador (terá de criar uma conta para o poder fazer) ou instalá-lo no seu computador — ter uma conta é opcional nesta opção. 

Prefiro tê-lo instalado, simplesmente porque não gosto da confusão causada por demasiados separadores abertos no navegador, por isso é essa a opção que utilizarei daqui em diante.

Este é um tutorial para principiantes, por isso utilizarei alguns casos de teste simples para demonstrar como utilizar o Postman para testar uma API. A aplicação de demonstração que utilizarei é o Swagger Petstore e o cenário que vou testar é:

  • Adicionar um novo animal de estimação à loja utilizando o estado «pending»
  • Atualizar o estado do animal de estimação para «available»
  • Validar se as informações do animal de estimação foram atualizadas
  • Eliminar o animal de estimação
  • Confirmar que o animal de estimação foi eliminado

Está bem, vamos começar!

gif de início do teste da API

O primeiro pedido HTTP no Postman

O Postman permite agrupar os pedidos da API em coleções. Estas são conjuntos de pedidos HTTP relacionados. Crie uma nova coleção para todos os pedidos seguintes que irá utilizar nos testes:

captura de ecrã de um pedido HTTP no Postman
Pode criar uma nova coleção clicando no botão Novo, selecionando Coleção e introduzindo um nome para essa coleção.

Está bem, agora tem uma coleção vazia.

Clique no URL «Adicionar um pedido» ou no botão «+» na lista de separadores:

captura de ecrã da opção para adicionar um pedido HTTP no Postman
Será aberto um novo separador, onde poderá adicionar os elementos do pedido que mencionei anteriormente.

A página da interface do Swagger serve como documentação da API.

O recurso (endpoint) de que precisa para criar um novo animal de estimação é «/pet» e o método HTTP é POST.

No separador do modelo, pode ver o objeto que tem de enviar como corpo do pedido e os tipos de dados de cada valor:

captura de ecrã do formato JSON

Utilizaremos o formato JSON para enviar o corpo da resposta, por isso ative o botão de opção «bruto» e selecione JSON na lista pendente. 

O corpo do pedido deverá ser semelhante a este:

{

  "id": 0,

  "category": {

    "id": 0,

    "name": "dog"

  },

  "name": "Spike",

  "photoUrls": [

    "string"

  ],

  "tags": [

    {

      "id": 0,

      "name": "bulldog"

    }

  ],

  "status": "pending"

}

Pode facilmente adicionar o resto dos detalhes no novo separador do pedido:

captura de ecrã do novo separador de pedido HTTP
O que fizemos aqui foi criar um novo objeto para um animal de estimação chamado Spike, pertencente a uma categoria chamada «dog», com a etiqueta «bulldog» e o estado «pending». 

Para criar este novo animal de estimação no servidor, clique no botão Enviar.

Se tudo correr bem, receberá uma resposta de sucesso e o corpo da resposta conterá algumas informações sobre o animal de estimação, incluindo o respetivo ID.

Precisaremos de utilizar este valor daqui em diante:

captura de ecrã da criação de um novo animal de estimação

O passo seguinte consiste em atualizar as informações do animal de estimação.

Para isso, tem de aceder ao mesmo recurso, «/pet», mas enviar um pedido com o método HTTP PUT.

Pode ver que informações precisa de enviar no corpo do pedido:

captura de ecrã da atualização das informações do animal

Assim, crie um novo pedido utilizando o mesmo URL do pedido, selecione o método PUT e envie o mesmo corpo do pedido, exceto que deve alterar o valor do estado para ‘available’ e utilizar o ID da resposta anterior:

{

  "id": <introduza o ID aqui>,

  "category": {

    "id": 0,

    "name": "dog"

  },

  "name": "Spike",

  "photoUrls": [

    "string"

  ],

  "tags": [

    {

      "id": 0,

      "name": "bulldog"

    }

  ],

  "status": "available"

}

A resposta deverá ser novamente 200 OK. Em seguida, vamos ler as informações do animal para validar se o estado foi corretamente atualizado. 

O método HTTP para isto é GET e o pedido aceita o ID como parâmetro:

captura de ecrã do parâmetro de ID do método HTTP

A resposta contém todos os dados do animal, incluindo o estado, que agora tem o valor ‘available’:

captura de ecrã da resposta que contém os dados do animal

O pedido de eliminação será feito exatamente para o mesmo URL que o GET (incluindo o parâmetro de ID), mas o método HTTP selecionado será DELETE:

captura de ecrã do pedido de eliminação com método HTTP

Mais uma vez, o pedido deverá ser bem-sucedido e a resposta HTTP deverá ser 200:

captura de ecrã do sucesso do pedido de eliminação com método HTTP

Se reenviar o pedido GET para o mesmo ID do animal, obterá um pedido HTTP 404, porque o animal já não pode ser encontrado no servidor:

captura de ecrã do pedido HTTP 404

Adicionar testes no Postman

Com os passos anteriores, percorreu todos os passos do cenário de teste, mas cada resultado teve de ser validado manualmente, verificando os códigos e os corpos das respostas. 

Vejamos como automatizar os testes da API utilizando o Postman, para que não tenha de efetuar estas verificações manualmente.

Comece pelo primeiro pedido, o POST, e clique no separador Testes do pedido. 

No lado direito, escolha o fragmento de código ‘Código de estado: o código é 200’. Os fragmentos de código no Postman são scripts predefinidos que pode utilizar, para não ter de escrever manualmente o próprio código. Cada linha de código que introduzimos no separador Testes do pedido será executada depois de o pedido ser enviado. 

Pode alterar o nome do teste para algo mais descritivo (por exemplo, ‘A criação do animal foi bem-sucedida’). 

Reenvie o pedido e, desta vez, verá que o separador Resultados dos testes da resposta mostra que 1/1 dos testes foi aprovado, bem como o nome do teste aprovado:

captura de ecrã do separador de resultados do teste

Também pode adicionar este fragmento de código aos pedidos PUT e DELETE. 

Para validar o valor do estado na resposta do pedido GET, utilize o fragmento de código ‘Corpo da resposta: verificação do valor JSON’:

pm.test("Nome do seu teste", function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.value).to.eql(100);

});

Este fragmento de código guarda a resposta numa variável de código jsonData, que irá analisar, ler o valor de um atributo e compará-lo com um valor esperado. 

Para nós, isto significa que o atributo ‘status’ deve ter o valor ‘available’. O teste deverá, portanto, ter o seguinte aspeto:

pm.test("O estado do animal é 'available'", function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.status).to.eql("available");

});

E, para a verificação final, que confirma que o animal foi eliminado, executando novamente o GET, podemos duplicar o pedido GET inicial e adicionar um teste que valide que, desta vez, o código de resposta HTTP é 404:

captura de ecrã dos testes de API

Pode mover os pedidos para dentro da coleção através de arrastar e largar.

captura de ecrã do pedido de testes de API

Utilizar variáveis no Postman

Provavelmente reparou que tivemos de copiar e colar manualmente o ID do pedido POST para todos os pedidos seguintes. E se houvesse uma forma mais simples de fazer isto?

A boa notícia é que existe! Podemos utilizar variáveis do Postman para armazenar valores reutilizáveis. Assim, se os valores precisarem de ser alterados, podemos fazê-lo num único local, tal como procuramos fazer em todos os testes automatizados.

As variáveis do Postman têm 3 âmbitos:

  • Global: variáveis que serão acedidas a partir de qualquer ambiente e de qualquer coleção
  • Ambiente: variáveis guardadas ao nível do ambiente. Não utilizei ambientes neste tutorial, mas é importante saber que o Postman permite criar ambientes diferentes para os vários ambientes com que trabalhamos. Por exemplo, ambientes separados para Desenvolvimento, UAT e Produção
  • Coleção: estas variáveis são armazenadas ao nível da coleção e podem ser acedidas a partir de todos os pedidos dentro da coleção.

Existem várias formas de configurar variáveis de coleção. 

A forma mais simples é criá-la diretamente a partir da coleção.

Para isso, clique no nome da coleção, selecione o separador das variáveis e introduza o nome e o valor da variável:

captura de ecrã da coleção de testes de API

Para utilizar esta variável, substitua o valor original nos pedidos pelo nome da variável escrito entre duas chavetas, desta forma: {{petId}}

Terá de a utilizar dentro dos corpos dos pedidos POST e PUT, para o parâmetro “id”, desta forma:

"id": {{petId}},

E no URL dos pedidos GET e DELETE, desta forma: https://petstore.swagger.io/v2/pet/{{petId}}

Pode consultar a versão final da coleção aqui.

More Articles

Executar a coleção do Postman

E agora chegamos à melhor parte! O objetivo deste tutorial foi mostrar-lhe como executar testes automatizados utilizando o Postman. Tudo o que fizemos anteriormente serviu para preparar esta parte. 

Para executar os testes automaticamente, clique com o botão direito do rato no nome da coleção ou passe o cursor sobre ele, clique no menu de três pontos junto ao nome e selecione ‘Executar coleção’. 

captura de ecrã da execução da coleção de testes de API

Isto abrirá o Executor de coleções:

captura de ecrã do executor de coleções

Nesta página, pode selecionar quais dos seus pedidos pretende enviar, alterar a ordem, executar a coleção várias vezes (aumentando o número de Iterações) ou adicionar intervalos entre os pedidos.

Pode deixar os valores predefinidos por agora e clicar no botão ‘Executar’. Quando a execução terminar, poderá ver os resultados dos testes para todos os cenários que queríamos testar, com apenas um simples clique:

captura de ecrã de todos os testes da API

E era tudo! Se seguiu todos os passos deste artigo, deverá ter os seus primeiros testes automatizados de API no Postman! 🚀

Conclusão

O Postman é uma ferramenta muito útil para testar APIs, e este artigo abordou apenas os conceitos básicos. No entanto, conseguimos explicar como enviar pedidos HTTP, como ler as respostas, como criar testes e como verificar automaticamente os resultados dos testes.

Se gostou deste artigo, subscreva a newsletter do QA Lead para se manter a par de todas as novidades e tendências nos testes de software.

You may also like