Testes de API (Parte 1)— Entendendo e botando a mão na massa com Postman

Olá caros amigos, espero que estejam todos bem! :)

Como o título diz, vamos botar a mão na massa sem delongas. Começando pelos conceitos :)

O que vamos ver nessa Parte 1:

O que é Teste de API :(conceito básico, jogo rápido!)
Como testar uma API (mão na massa diretão)

O que é Teste de API?

Application Programming Interface(API)

O conceito de API é bem amplo, e não vamos “destrinchá-lo” aqui, mas como o próprio nome diz, API é um conjunto de padrões que fornecem uma Interface para que possamos Programar nossas Aplicações. Na prática uma API é um conjunto de código de software que pode ser acessado de diversos locais.

Partindo desta explicação simplista, precisamos entender o conceito de Endpoint, que é literalmente uma ponta de uma canal de comunicação. No nosso caso, um Endpoint é uma das pontas da API, que pode ser acessada por uma URL, e que executa um trecho de código quando isso acontece.

Dando sentido a tudo isso junto ao tema principal

Embora o conceito de API seja amplo, quando falamos de testes de API na grande maioria das vezes a ideia é validar um trecho de código disponibilizado por um webservice, que pode ser acessador por uma URL, que nós chamamos de endpoint ali em cima.

Para isto, acessamos(requisitamos) a URL que corresponde ao trecho de código da API (método(s)), comumente chamado de endpoint, informamos alguns dados e ele vai nos retornar o status da requisição e algumas informações. Essas informações recebidas juntamente ao status são validadas, e esse é de fato o teste de API que todos comentam por aí.


Como testar uma API

Antes de tudo, se quiser botar a mão na massa mesmo, instale o Postman, que é a ferramenta que usaremos neste artigo(Parte 1), e nos próximos também. https://www.getpostman.com/

Item 1 — Entendendo a API

(1) A primeira informação que precisamos saber é qual ação/funcionalidade vamos testar, e em qual URL está o endpoint a ser testado

(2) Logo após, precisamos saber qual é o método da requisição, que pode ser basicamente:

  • GET: obter dados;
  • POST: inserir dados;
  • PUT: alterar dados;
  • DELETE: remover dados;
Entenda melhor sobre métodos de requisição aqui

(3)Saber quais são os headers da API. Headers são alguns dados-chave que uma API recebe, como pro exemplo o tipo de conteúdo do retorno, o método de autenticação, etc.

Esses são os atributos básicos de uma API. Agora vamos a prática, finalmente!!

Item 2 — Testando a API

Para este exemplo, vamos usar o Endpoint de ‘posts’, disponibilizado pelo site https://jsonplaceholder.typicode.com/, um serviço que disponibiliza APIs fake para testes. Esta API retorna os posts cadastrados no banco de dados.

Começaremos testando um endpoint que retorna todos os posts do banco de dados

Conforme a imagem mostra, temos os seguintes dados:

URL: https://jsonplaceholder.typicode.com/posts
Método: GET
Headers: nenhum obrigatório

Agora com o Postman aberto, vamos criar uma Collection. Clique no botão “New” e depois em “Collection”. Dê uma nome à sua Collection e clique no botão “Create”

Clicando no botão “New”
Selecionando o item “Collection”
Nomeando e criando a Collection

Agora criamos uma Request

Criando uma Request

E damos um nome para ela. Geralmente uma request recebe o nome do que ela faz de fato, e neste caso ela retorna todos os posts.

Nomeando a Request

Com a request “All Posts” criada, vamos agora pegar aqueles dados que coletamos na análise e replicar no Postman

O método da request é GET

Definindo método GET

A URL é https://jsonplaceholder.typicode.com/posts

Definindo a URL do endpoint

Agora é só Salvar essa request, e clicar em Send

Salvando e enviando a requisição

E então o webservice retorna todos os posts que estão no banco de dados

Dados retornados da API no formado JSON

SHOW, nossa request está pronta e funcionando, retornando os dados. Mas… será que retornou os dados da forma esperada?

É nesse ponto que entramos com os Testes de API, validando o retorno.

Como podemos ver na imagem abaixo, o endpoint /posts retorna 100 posts com ID sequencial, e cada um deles tem a propriedade userId, que vai de 1 a 10, e cada um desses userId está presente em 10 posts(como se cada usuário tivesses criado 10 posts)

Agora que temos as saídas esperadas, conseguimos definir alguns Cenários de Testes:

  • O Status Code deve ser 200 (entenda os status code aqui)
  • Deve retornar 100 posts
  • Cada userId deve ter 10 posts
  • O ID 1 deve ter o body = ‘quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto’
  • O ID 100 deve ter o title = ‘at nam consequatur ea labore ea harum’

Escrevendo os testes

No Postman os testes são escritos em JavaScript, e são executados assim que recebemos a response do endpoint. Para codificar os testes, usaremos a aba Tests.

É aqui onde escrevemos o código dos testes

Estes são os testes que escrevemos para validar cada um dos cinco cenários definidos:

E agora, quando clicamos em “Send” novamente, o Postman vai realizar a requisição, e assim que os dados retornarem, esse código escrito na aba Tests vai ser executado.

O Postman vai então exibir o resultado dos testes na aba Tests Results, próximo a aba Body(onde estão os dados da response)

Resultado dos testes executados

PRONTO!

Agora temos um teste de API(endpoint) realizado com sucesso.

Dica

Você não precisa escrever 100% do código de testes, o Postman já te dá diversos testes prontos em um menu lateral. É só clicar no teste que o código é gerado automaticamente.

Eu uso esses testes “prontos” em várias ocasiões: para de fato validar coisas simples até para que esses códigos prontos sirvam de base para um teste mais elaborado.

Menu lateral com testes prontos, top!

Conclusão e próximo artigo

O que vimos:

  • O que é API e Teste de API
  • Analisamos um endpoint de uma API
  • Montamos uma request para retornar os dados desse endopoint
  • Escrevemos testes para validar o retorno do endpoint

O que veremos no próximo artigo (parte 2) e nos eventuais futuros:

  • Teste de uma API(endpoint) um pouco mais complexa
  • Variáveis de ambiente
  • Pré-requests
  • Automatização de fluxos de testes de API

Quero te agradecer por ter acompanhado até aqui, e espero ter ajudado com o entendimento do que são e como fazer testes de API.


Ah, tem mais conteúdo legal sobre QA aqui ó: linkedin.com/in/thiagogrespi 😎

Fontes ⛲️ ⛲️ ⛲️ ⛲️

Tudo saiu da minha experiência com a ferramenta, com os testes de API que faço no dia a dia e da documentação do Postman