Automatizando seus testes com Newman
Já pensou em executar os testes do Postman por linha de comando?

Se você acompanha o Blog da Concrete há algum tempo, você já deve ter ouvido falar bastante em integração contínua, recurso que ajuda no retorno rápido aos desenvolvedores e desenvolvedoras sobre o desempenho das APIs após alguma alteração no código. Neste post, vamos conversar sobre a Newman, ferramenta desenvolvida para executar os testes do Postman por linha de comando. Mas vamos voltar um pouquinho para, antes, explicar o que é Postman e do que é que estamos falando aqui.
Postman é uma ferramenta muito utilizada no mundo das APIs, porque oferece uma maneira bem fácil de fazer requisições HTTP e executar scripts. Para explicar melhor, vamos usar uma analogia para APIs:
Digamos que você (consumidor) vai a um restaurante. Lá, você precisa fazer o pedido ao garçom (API), que vai até a cozinha (servidor) e solicita o seu pedido. Entretanto, nem sempre funciona simples assim. E se o prato não estiver disponível? Você vai ter que tentar novamente e escolher outra opção. Podemos ter muitos clientes (consumidores) presentes no restaurante, o que e pode atrasar o processo do chef, entre diversas outras possibilidades.

Todas essas situações acontecem também durante o uso de API. O usuário não vê o processo de pedido ou de resposta, tudo o que ele vê é uma integração entre sistemas diferentes. Por exemplo, quando usamos aplicativos de delivery de comida, como o iFood, precisamos informar o cardápio e o destino da entrega, correto?
Dessa forma, o app se conecta à internet e envia dados para um servidor. O servidor então recupera esses dados, interpreta-os, executa as ações necessárias e os envia de volta ao seu aparelho. O app então interpreta esses dados novamente e apresenta a informação que você queria de forma legível, isto é, os restaurantes.
Como testar uma API usando o Postman?
Let’s start! Vamos começar com uma requisição (request) via Postman na cozinha, ops na url: https://jsonplaceholder.typicode.com/ , um GET que retorne uma lista de usuários. Para isso, precisamos que o parâmetro users/ seja incorporado àURL e, assim, teremos o resultado esperado.
https://jsonplaceholder.typicode.com/users/

Recebemos o response com a lista de usuários e o status code 200, indicando que a requisição foi bem sucedida. O Postman permite a escrita de testes em JavaScript, e estes testes nos ajudam a garantir que a API esteja funcionando conforme o esperado. Para adicionar o teste em uma requisição, é preciso inserir o script de teste na aba Tests.
Vamos validar que, ao executar o GET que retorna a lista de usuários, o status code seja 200. Então, vamos usar o código abaixo:
pm.test(“Status code is 200”, function () {pm.response.to.have.status(200);});

O resultado do script de teste executado será exibido na aba Test Results como PASS, sendo 200 o status code.

Podemos adicionar vários cenários de teste em uma única requisição, e todos os testes serão executados simultaneamente. No exemplo abaixo, vamos validar os dados retornados na lista de usuários, no body do JSON.
var jsonData = pm.response.json();
pm.test(“Get user id”, function () {pm.expect(jsonData[0].id).to.eql(1);});pm.test(“Get user name”, function () {pm.expect(jsonData[0].name).to.eql(“Leanne Graha”);});pm.test(“Get user city”, function () {pm.expect(jsonData[0].address.city).to.eql(“Gwenborough”);});

Neste exemplo, criamos quatro testes, dos quais um deles retornou FAIL, ou seja, uma divergência no assert entre o esperado e o encontrado no JSON. O teste é executado apenas quando a requisição for bem-sucedida.

Agora vamos simular um exemplo no qual o parâmetro informado não existe, o id 11. Com isso, recebemos o status code 404, indicando que a requisição foi não foi encontrada, e portanto nenhum dos testes poderá ser validado.

Automatizar com o Collection Runner
Uma das opções do Postman é automatizar a execução da suíte de teste usando o Collections Runner, que permite executar todas as requisições dentro da collection ou pasta (o que você escolher) de uma só vez.
Para usar, basta clicar em Runner que vai abrir o Collection Runner.

Selecione a pasta ou collections, informe: iterations, que é a quantidade de vezes que todas as requisições serão executadas, e o delay, tempo de espera entre cada requisição. Então, Run!

O Run Results retorna as três iterações para cada teste no GET e POST, sendo 21 testes PASSED.

Finalmente, o que é Newman?
Já vimos como criar, executar e automatizar testes em API, agora finalmente vamos conhecer Newman, uma ferramenta que permite executar os testes do Postman por linha de comando e foi desenvolvido para ser utilizado com ferramentas de integração contínua. Basta apenas um comando via terminal para executar todos os testes na API! Lembrando que o Newman é escrito e roda sobre o NodeJs. Então, vamos ao passo a passo de como usar o Newman.
Instalar o Node Package Manager
Antes de instalar o node.js, verifique se ele já está instalado na máquina:
npm -v #Windowsnpm — versão #Linux/Mac
Caso ainda não o tenha instalado, consulte a documentação neste link.
Como instalar o Newman usando o NPM?
Para instalação, execute o seguinte comando:
npm install -g newman
Verifique o versão do Newman e garanta a instalação com êxito.
newman -v #Windowsnewman — versão #Linux/Mac
Execute uma collection usando Newman por meio do link de compartilhamento
Ao clicar na seta ao lado da collection que vamos testar, veremos a opção Share.

Clique em Get public link e copie o link.

Execute o seguinte comando:

Se a requisição foi bem sucedida, teremos os detalhes dos testes. O status code 200 para o GET e o 201 para o POST.

Lembrando que, após a atualização da requisição no Postman, ela não será atualizada automaticamente. É preciso atualizar o link.
Para executar a coleção usando Newman por meio do arquivo JSON

Selecione a opção Collection v2 e Exportar.

Agora vamos exportar a variável de ambiente.


Dentro do diretório em que salvamos a collection e a variável de ambiente, execute o seguinte comando:
newman run <collection.json> environment <environment.json >

Se a requisição foi executada com sucesso, teremos os detalhes dos testes.

Configurando iterações de teste usando Newman
Defina as iterações das collections, ou seja, o número de vezes que serão executadas repetidamente. Informe o nome do arquivo json salvo no seguinte comando:
newman run <nome do arquivo> -n <número de iterações>


E é isso! Neste post mostramos só algumas das formas de testar a API via Postman. É claro que existem outras ferramentas e métodos, tente entender qual será a melhor para o seu contexto. A principal lição aqui é nunca deixar suas APIs sem testes. Ficou alguma dúvida ou tem algo a acrescentar? É só deixar um comentário.
E se você quiser aprender junto comigo ou com o pessoal aqui da Concrete, é só dar uma olhada aqui e se candidatar a uma de nossas vagas. Vamos aprender juntos!