Automatizando testes de APIs Rest com Postman e Newman

Automatizando testes de APIs Rest com Postman e Newman

Cada vez é mais comum nos depararmos com sistemas que usam APIs Rest, sejam APIs desenvolvidas visando uma estrutura de microsserviços para o próprio sistema que é desenvolvido, quanto APIs de terceiros, que fornecem serviços para outros sistemas.
Quem trabalha com testes, ou mesmo com desenvolvimento envolvendo tais APIs sabe o quão cansativo é testar as mesmas.
Não raro nos deparamos com uma Api que posui cinquenta ou mais métodos com os seus incalculáveis parâmetros, testar ela exige tempo e esforço, para solucionar isso, uma opção é automatização desses testes, porém, a maioria das ferramentas disponíveis hoje em dia para isso exige certo conhecimento de programação, o que desestimula muitas vezes o analista de Qa a automatizar os testes.
Hoje trago um artigo que apresenta uma forma um pouco mais simples, que não envolve quase nada de programação, para que você analista de Qa ou desenvolvedor, possa automatizar os testes de APIs tanto sua quanto de terceiros, para garantir assim, uma melhor qualidade do seu software e muito menos dor de cabeça.

Nesse artigo mostrarei:

  • A ferramenta Postman;
  • Como efetuar requisições em APIs com a ferramenta;
  • Como criar e executar testes nas requisições que foram criadas;
  • Como executar os testes de forma sequencial;
  • A ferramenta Newman;
  • Como executar os testes de forma automatizada via linha de comando;
  • Como gerar relatórios dos seus testes.

Requisitos

Para criar e executar os testes devemos ter instalados e configurados:

Criando os testes no Postman.

Para exemplificar o uso da ferramenta irei utilizar a Api Rest do OMDb , o OMDb é uma base Open Source com informações de filmes e séries que disponibiliza uma Api Rest, esta Api é ótima para todo e qualquer tipo de estudo envolvendo APIs Rest. (Clique aqui para acessar o site).

Criando uma requisição:

Abro o Postman.

alt text

Seleciono o método Get, insiro o endereço da API no Postman.

alt text

Defino os parâmetros da minha consulta clicando no botão Params (Esses dados são fornecidos na documentação da APi).

alt text

Clico em Send e vejo abaixo na aba Body, o corpo da resposta, isto é, os dados do filme que acabei de consultar.**

alt text

Para que possamos efetuar esta requisição novamente sem precisar configurar tudo de novo, e para que possamos automatizar os testes dessa requisição, a salvamos.

Para isso clicamos no botão Save, será exibido uma nova Janela onde podemos dar um nome a requisição (Geralmente nomeio com algo que me lembre o que ela faz, nesse exemplo nomeie como “Consulta Filme Matrix”, e para que fique organizado criei uma coleção (Pasta) chamada OMDB Filmes, onde colocarei quaisquer outras consultas de filmes do OMDB.

alt text

Criando os testes:

Após criar e salvar a requisição vamos propriamente dito criar os testes, somente o fato de criar e efetuar a requisição com sucesso, já caracteriza um teste, porém, esse é um teste manual, o qual deve ser feito um a um, o que pode ficar bem trabalhoso e improdutivo, além disto, o teste nesse caso é limitado, pois testa apenas o caminho feliz.
Mostrarei agora como podemos no Postman criar testes para que assim que um requisição for feita algumas verificações sejam efetuadas.

Clicar na requisição que foi salva, depois clicar na aba Test.

O próprio Postman já traz no menu a direita, algumas opções prontas de testes (Snnipets), porém, caso você entenda um pouco sobre Javscript pode criar os seus próprios testes.

alt text

No nosso exemplo criarei cinco testes sendo eles:

  • Um teste que verifica se o código de retorno é o esperado, neste caso 200, para isso clico no Snippet “Status code is 200”.

  • Um teste que verifica se o tempo de resposta foi inferior a 200 ms, para isso clico no Snippet “Response time is less than 200ms”.

  • Um teste que verifica se no corpo da resposta existe a palavra “Canada”, para isso clico no Snippet “Body matches string”.

  • E por fim um teste que verifica se os valores das chaves Title e Year são Matrix e 1993-, para isso clico no Snippet ““Response body: Json value check”

Embora o testes sejam escrito em JavaScript, observe que você não precisa saber nada da linguagem para criar os seus testes, apenas um inglês básico já serve.

Códiog Gerado:

tests["Status code is 200"] = responseCode.code === 200;

tests["Response time is less than 200ms"] = responseTime < 200;

tests["Body matches string"] = responseBody.has("Canada");

var jsonData = JSON.parse(responseBody);
tests["Your test name"] = jsonData.Title === "Matrix";
tests["Your test name"] = jsonData.Year === "1993-";

Assim que clico em Send vemos o o sinal na aba Tests mostrando que todos os testes passaram.

alt text

ps: Para saber mais sobre os scripts do Postaman Acesse: https://www.getpostman.com/docs/postman/scripts/intro_to_scripts

Rodando os testes de forma sequencial

Anteriormente configuramos os testes para a nossa requisição, embora consigamos deixar o teste mais completo, o mesmo ainda é feito de forma manual, ou seja, para cada requisição e testes que tenhamos salvado na coleção, devemos acessar um a um e clicar em Send, o que continua não sendo muito produtivo.
Pensando nisso a equipe que desenvolve o Postman, desenvolveu junto à ferramenta um Runner, que nos permite rodar todos os testes que foram criados, de forma sequencial apenas apertando um botão.

Acessamos o Runner, clicando no botão Runner.

alt text

Selecionamos a coleção em que salvamos nossas requisições com os seus devidos testes (Adicionei mais uma requisição na coleção para mostrar melhor) após selecionar a coleção clicamos botão “Start Test”.
Os testes serão iniciados e efetuados um a um de forma sequencial pelo Postman.
É apresentado no lado direito o resultado, nesse caso eu tinha duas requisições com um total de sete testes, todos rodaram com sucesso (Observar o status “pás”).

alt text

Executando os testes de forma automatizada via linda de comando com o Newman

Anteriormente vimos que podemos criar nossos testes e rodar todos eles de uma única vez, porém, se pretendemos automatizar os nossos testes para utilizarmos com alguma ferramenta de integração continua, ou se quisermos um relatório mais detalhado, essa opção acaba sendo muito limitada.
Não podemos, por exemplo, colocar nossos testes automatizados para rodar em uma rotina de deploy, sendo que todos a vezes que precisamos rodar os testes temos que abrir o Postmasn, clicar no botão Runer, selecionar a coleção e aí sim rodar a suíte de testes.

Para sanar essa limitação a equipe do Postman desenvolveu a ferramenta Newman, que nada mais é que o próprio Postman, porém, que pode ser rodado vai linha de comando, ou seja, com apenas um comando via terminal você é capaz de rodar todos os testes de sua Api, o melhor de tudo é que o Newman é escrito e roda sobre o NodeJs, podendo assim ser utilizado em qualquer sistema operacional, a seguir mostro como podemos utilizar esta ferramenta.

Comece exportando os as coleção que criamos (Contendo todas as requisições e testes criados), clicando nos três pontos ao lado do nome da coleção e clicando em Export.

Será aberto uma janela onde vamos selecionar a opção Collection v2 e vamos clicar no botãso Export.

Será gerado um arquivo json, esse arquivo contém todas as consultas e testes que foram configurados e salvos no Postman, sendo a sua edição caso necessário, muito simples.

alt text

alt text

Após exportar a minha coleção, acesso pelo terminal a mesma pasta que salvei o arquivo json “OMDB_Filmes.postman_collection.json”, no meu exemplo a pasta é “Teste Api”.

Executo o commando:

$ newman run OMDB_Filmes.postman_collection.json –n 10

No fim será exibido um relatório no próprio terminal mostrando informações dos testes.

Os: No meu caso, executei o comando usando o parâmetro “-n 10” o que fez com que Newman executasse toda a suíte de testes dez vezes, gerando assim o relatório do print

alt text

Gerando relatórios de seus testes.

A ferramenta Newman possibilita exportar o resultados de seus testes em cli, json, html e junit.
Nesse exemplo mostro como fica o relatório exportado em html.

Executo o comando:

$ newman run OMDB_Filmes.postman_collection.json -r HTML

Onde o parâmetro “-r” define o tipo de relatório o qual desejo, neste exemplo será em html.
Neste caso não será apresentado nada no terminal, o relatório será gerado na mesma pasta que se encontra o arquivo json, dentro da pasta chamada Newman.

alt text

Abrindo o arquivo html gerado temos esse relatório:

alt text

Indico a todos uma lida melhor na documentação tanto do Postman quanto do Newman, pois estas duas ferramentas não se limitam ao que mostrei aqui, e conseguem cobrir quase todo tipo de teste em uma Api, incluindo testes utilizando data driven e o uso de upload de arquivos.

Bom pessoal é isso, qualquer dúvida ou sugestão fico a disposição.

Documentação do Postman: https://www.getpostman.com/docs/
Documentação do Newman: https://github.com/postmanlabs/newman

Show de bola, Alan! Só corrige o título, que tá escrito `` Postaman` .

@stefanteixeira
Corrigido, vlw :D

@Alan-Schveitzer Massa d+ \o/

Achei interessante e uma boa opção para quem está acostumado apenas com SoapUI

Parabéns.

Show!
Ah lembrando que o postman já tá disponível para download em https://www.getpostman.com. Não sendo mais necessário o chrome para usar o postman.

@Thaise-Ponciano ótima noticia :) ele integrado com o chrome era um saco…haha

@Thaise-Ponciano Boa dica Thaise, muito obrigado!

@Fred-Moreira Vlw Fred, fico feliz que tu tenha gostado :D

@alan-schveitzer said in Automatizando testes de APIs Rest com Postman e Newman:

via linda de comando Corrige provavelmente é linha né?!

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.