Automatize seus testes de API com Jenkins, Postman e Newman

um pouco de experiência

hoje em dia, os pipelines de CI são uma obrigação em nosso dia de desenvolvimentojob, ajudando-nos a encurtar os ciclos de entrega e a trazer software de maior qualidade.

como desenvolvedor de back-end, as APIs se tornaram uma pedra de milho na maioria dos meus aplicativos, portanto, testá-las tornou-se uma obrigação.

ter um estágio de teste de API em nosso pipeline de CI nos traz confiança na qualidade do produto e nos alerta se algo quebrou.

Postman

Postman é uma ótima ferramenta que ajuda os desenvolvedores em todas as etapas do nosso ciclo de vida da API. Tem uma ótima documentação e uma comunidade cada vez mais de desenvolvedores que a usam, por isso é fácil encontrar postagens explicando dicas e truques legais.

coleções

Postman facilita a organização de nossa solicitação diferente em coleções. Pessoalmente, crio uma coleção para cada projeto que quero testar. Então, dentro da coleção, eu crio uma pasta para cada entidade no projeto, tentando cobrir cada endpoint na API.

Pedidos organizadas por coleções

os Pedidos são organizados por entidades

Ambientes

Carteiro permite-nos criar ambientes diferentes para executar nossos pedidos. Dando um exemplo real, eu diria que trabalho em três ambientes diferentes: meu ambiente local, um ambiente de teste e um ambiente de produção, então crio três ambientes diferentes com variáveis que representam a mudança de dados entre os ambientes (como o caminho base para as solicitações da API). Dessa forma, posso definir uma única solicitação, mas direcioná-la para meus três ambientes diferentes facilmente. Pense em como seria fácil mudar ou adicionar um novo ambiente!

Usando variáveis de ambiente no url de solicitação

a Extração da base de dados de caminho de como a variável de ambiente para atingir diferentes ambientes

pedidos de Teste

Uma das maiores características do Carteiro é que permite testes de código que é executado sempre que um pedido de execução. Eles são escritos em JS e têm um conjunto legal de afirmações para verificar coisas como o código de resposta, corpo de resposta o cabeçalhos de resposta.

Uma solicitação com alguns testes

Um pedido com alguns testes

Doce! Depois de escrever um conjunto de testes para cobrir nossa API, usamos o Collection Runner, uma ferramenta integrada fornecida pelo Postman para executar todas as solicitações de uma coleção e gerar um relatório dos resultados dos testes.

relatório de Teste do corredor da coleção

quão belos são os prados verdes…

Bônus: Às vezes, queremos executar nossos pedidos em uma determinada ordem e adivinhe? Carteiro nos permite fazer isso! Verifique no problema de criação de fluxos de trabalho

o que temos até agora?

neste ponto, construímos uma coleção de Carteiros com um monte de solicitações que poderiam segmentar nossa API em todos os nossos ambientes. Além disso, cada solicitação tem vários testes para verificar se está funcionando corretamente. Que hora de estar vivo!

Newman

você se lembra do corredor da coleção que mencionei anteriormente? Ele pode executar todas as solicitações em nossa coleção com um simples clique. Mas e uma ferramenta de linha de comando para fazer o mesmo? Newman faz isso. Newman é um corredor de coleção de linha de comando para Postman que permite executar e testar uma coleção Postman diretamente da linha de comando e integrá-la facilmente em servidores CI, o que a torna uma ótima ferramenta para o nosso propósito: automatizar nosso teste de API com Jenkins.

execute uma coleção

para executar uma coleção com Newman, primeiro temos que exportá-la do carteiro. Uma vez que temos algumas variáveis brincando em alguns de nossos pedidos, temos que exportar o ambiente adequado também. Assim que tivermos os dois arquivos, poderemos executar a coleção com:

$ newman run our.postman_collection.json -e our.postman_environment.json

e veremos um relatório da execução da coleção, semelhante a outros frameworks de teste.

Newman CLI relatório de ensaio

Newman CLI relatório de ensaio

Formatação de saída

O relatório pode ser formatado de diversas maneiras. Para conseguir isso, Newman fornece um conjunto de repórteres para suportar diferentes formatos de saída como JSON, xUnit ou HTML. Além disso, você pode criar seu próprio repórter para formatar o relatório em qualquer formato que desejar.

Jenkins

legal, definimos nosso conjunto de testes de API com Postman e podemos executá-lo na linha de comando e obter um bom relatório dos resultados até agora com Newman. Mas agora queremos incluir nossa incrível nova habilidade em nosso pipeline de CI.Aviso Legal: Estamos usando o Jenkins como um servidor de automação para construir nossos pipelines de CI/CD e executamos nosso pipeline de CI em um contêiner Docker que possui todas as ferramentas necessárias instaladas (como Newman).

misturando as coisas

essencialmente, precisaremos de três arquivos para incluir nosso teste de API dentro de um pipeline de CI:

  • Jenkinsfile, que define o nosso pipeline
  • Carteiro Coleção, que define o nosso conjunto de solicitação e testes
  • Carteiro Ambiente, que define as variáveis de ambiente de destino

Nós incluí-las todas no repositório do projeto, de modo que podemos nos beneficiar de versão o controle sobre eles, e rastrear suas alterações.

fala o suficiente, vamos codificar!

precisamos criar um novo estágio em nosso pipeline para executar o teste de API. Costumamos colocá-lo após testes de unidade e integração para ter certeza de que tudo está funcionando conforme o esperado antes de testar a interface.

pipeline { ... stage('Test API Rest') { steps { sh 'newman run tests/Newman/our.postman_collection.json -e tests/Newman/env/test.postman_environment.json -r junit,html --reporter-junit-export var/reports/newman/junit/newman.xml --reporter-html-export var/reports/newman/html/index.html' publishHTML() } } ...}

como você pode ver, invocamos o comando Executar do Newman, fornecendo à nossa coleção um arquivo do ambiente de teste como parâmetros. Além disso, também informamos quais repórteres queremos usar (JUNIT, HTML) e onde as saídas serão armazenadas.

como bônus, usamos o plugin HTML PUblisher Jenkins para vincular o relatório HTML à compilação.

espero que você tenha gostado dessa jornada tanto quanto eu escrevi e, como sempre, o feedback será bem-vindo!

Deixe uma resposta

O seu endereço de email não será publicado.