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.
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!
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.
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.
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.
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!