Automatizando seus testes com Newman

Já pensou em executar os testes do Postman por linha de comando?

Fabi Cavalcante
May 20 · 7 min read
Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

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:

Image for post
Image for post

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

Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

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!

Image for post
Image for post

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

Image for post
Image for post

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:

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:

Verifique o versão do Newman e garanta a instalação com êxito.

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.

Image for post
Image for post

Clique em Get public link e copie o link.

Image for post
Image for post

Execute o seguinte comando:

Image for post
Image for post

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.

Image for post
Image for 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

Image for post
Image for post

Selecione a opção Collection v2 e Exportar.

Image for post
Image for post

Agora vamos exportar a variável de ambiente.

Image for post
Image for post
Image for post
Image for post

Dentro do diretório em que salvamos a collection e a variável de ambiente, execute o seguinte comando:

Image for post
Image for post

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

Image for post
Image for post

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:

Image for post
Image for post
Image for post
Image for post

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!

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade…

Fabi Cavalcante

Written by

QA Engineer

Concrete

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Fabi Cavalcante

Written by

QA Engineer

Concrete

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store