Capa do Ebook gratuito Postman na Prática: Testes de API, Coleções, Ambientes e Automação de Rotinas de QA

Postman na Prática: Testes de API, Coleções, Ambientes e Automação de Rotinas de QA

Novo curso

18 páginas

Execução automatizada via Newman: linha de comando, variáveis e relatórios

Capítulo 14

Tempo estimado de leitura: 14 minutos

Audio Icon

Ouça em áudio

0:00 / 0:00

O que é o Newman e por que ele é útil em rotinas de QA

Newman é a ferramenta de linha de comando para executar Collections do Postman fora da interface gráfica. Na prática, ele permite rodar suites de testes em ambientes automatizados, como pipelines de CI/CD, jobs agendados e scripts locais, mantendo o mesmo conjunto de requests e testes que você já escreveu na Collection. A principal diferença é o contexto: em vez de clicar em “Run” no Postman, você dispara a execução via terminal, controla parâmetros por flags e gera relatórios em formatos consumíveis por times e ferramentas (HTML, JUnit, JSON).

Em rotinas de QA, o Newman costuma ser usado para: validar regressão de API a cada commit, rodar smoke tests antes de deploy, executar testes em múltiplos ambientes (dev, staging, prod) trocando variáveis, e produzir evidências (relatórios) para auditoria e rastreabilidade. O foco aqui é aprender a executar via CLI, controlar variáveis e gerar relatórios de forma repetível.

Pré-requisitos práticos: exportações e instalação

Instalando o Newman

O Newman é distribuído via npm. Em uma máquina com Node.js instalado, você pode instalar globalmente para ter o comando disponível no terminal.

npm install -g newman

Para confirmar a instalação:

newman -v

Exportando Collection e Environment

Para executar no Newman, você precisa de arquivos exportados: a Collection em JSON e, opcionalmente, um Environment em JSON. Exporte a Collection (v2.1) e salve como, por exemplo, collection.json. Se você usa Environment, exporte e salve como environment.json. Em automação, é comum versionar a Collection no repositório e tratar o Environment com cuidado (principalmente se contiver segredos), usando variáveis de sistema/CI para injetar valores sensíveis.

Continue em nosso aplicativo

Você poderá ouvir o audiobook com a tela desligada, ganhar gratuitamente o certificado deste curso e ainda ter acesso a outros 5.000 cursos online gratuitos.

ou continue lendo abaixo...
Download App

Baixar o aplicativo

Execução básica via linha de comando

Rodando uma Collection simples

O comando mais direto executa a Collection e imprime no terminal um resumo com requests, testes e falhas.

newman run collection.json

Se houver falhas de teste, o Newman retorna um exit code diferente de zero, o que é essencial para quebrar um pipeline automaticamente.

Executando com Environment

Quando a Collection depende de variáveis de ambiente (por exemplo, base URL), você aponta o arquivo de Environment:

newman run collection.json -e environment.json

Isso permite alternar o alvo (dev/staging) sem alterar a Collection. Em pipelines, você pode ter múltiplos arquivos de environment (ou gerá-los dinamicamente) e rodar a mesma suite em sequência.

Executando uma pasta específica (folder)

Collections grandes costumam ter pastas para separar smoke, regressão, contratos, etc. Você pode executar apenas uma pasta pelo nome:

newman run collection.json -e environment.json --folder "Smoke"

Se você tiver subpastas, pode chamar pelo nome exato. Uma prática comum é manter uma pasta “Smoke” com poucos requests críticos e rodá-la em todo deploy, deixando a regressão completa para janelas específicas.

Controle de variáveis na execução: data, env, globals e overrides

Passando variáveis diretamente pela CLI

Além do Environment, o Newman permite injetar variáveis pontuais via --env-var e --global-var. Isso é útil quando você quer sobrescrever um valor sem editar o JSON do environment, por exemplo, trocar apenas o host ou um token temporário.

newman run collection.json -e environment.json --env-var baseUrl=https://staging.api.exemplo.com

Você pode repetir a flag para múltiplas variáveis:

newman run collection.json -e environment.json --env-var baseUrl=https://staging.api.exemplo.com --env-var tenant=acme

Usando arquivo de variáveis de dados (iteration data)

Quando você quer executar a mesma Collection várias vezes com entradas diferentes, o Newman aceita um arquivo de dados (CSV ou JSON) via -d. Cada linha/objeto vira uma iteração. Isso é especialmente útil para rodar cenários parametrizados em lote, como validar múltiplos usuários, múltiplos produtos ou combinações de filtros.

newman run collection.json -e environment.json -d data.csv

Ou com JSON:

newman run collection.json -e environment.json -d data.json

Na prática, você referencia as colunas/chaves do arquivo de dados como variáveis durante a execução. O Newman resolve essas variáveis por iteração, permitindo que o mesmo request rode com entradas diferentes.

Escolhendo número de iterações e controle de fluxo

Se você quer repetir a execução um número fixo de vezes (por exemplo, para um teste de estabilidade simples), use -n:

newman run collection.json -e environment.json -n 5

Se você usa -d, o número de iterações normalmente segue o tamanho do dataset. Ainda assim, você pode controlar e combinar estratégias conforme a necessidade do job.

Ordem de precedência e estratégia de sobrescrita

Em automação, o ponto crítico é saber “quem ganha” quando a mesma variável existe em mais de um lugar. Uma estratégia segura é: manter defaults no Environment exportado, sobrescrever valores de infraestrutura via --env-var no pipeline (como baseUrl), e nunca commitar segredos em arquivos versionados. Na prática, você trata o arquivo exportado como template e injeta o que muda por ambiente no momento da execução.

Passo a passo: rodando Newman como um job repetível

Passo 1: organizar arquivos no projeto

Crie uma estrutura simples no repositório para facilitar automação:

  • postman/collection.json
  • postman/environments/staging.json
  • postman/environments/dev.json
  • postman/data/smoke.csv (opcional)
  • reports/ (saída de relatórios)

Essa organização ajuda a manter caminhos previsíveis para scripts e pipelines.

Passo 2: criar um comando padrão de execução

Defina um comando base que qualquer pessoa consiga rodar localmente e que também funcione no CI:

newman run postman/collection.json -e postman/environments/staging.json

Se o seu pipeline precisa sobrescrever o host, adicione --env-var:

newman run postman/collection.json -e postman/environments/staging.json --env-var baseUrl=$BASE_URL

Em shells Unix, $BASE_URL vem de variável de ambiente do sistema/CI. Em Windows PowerShell, a sintaxe muda (por exemplo, $env:BASE_URL), então padronize o shell do pipeline para reduzir variações.

Passo 3: controlar timeouts e tolerância a instabilidade

APIs em ambientes compartilhados podem oscilar. O Newman permite ajustar timeouts para evitar falsos negativos por lentidão momentânea. Dois parâmetros comuns são timeout de request e timeout de script:

newman run postman/collection.json -e postman/environments/staging.json --timeout-request 30000 --timeout-script 10000

Isso define 30 segundos para requests e 10 segundos para scripts (pré-requisições e testes). Ajuste conforme o perfil do ambiente e o SLA esperado.

Passo 4: definir comportamento em falhas

Por padrão, o Newman executa a Collection inteira e reporta falhas ao final. Em alguns cenários (como smoke), você pode preferir abortar cedo para economizar tempo. Use --bail para interromper ao encontrar erro:

newman run postman/collection.json -e postman/environments/staging.json --folder "Smoke" --bail

Você também pode combinar com --bail e relatórios para gerar evidência mesmo quando falha cedo.

Relatórios: como gerar evidências úteis (CLI e CI)

Entendendo o reporter padrão e por que usar outros

O Newman já imprime um resumo no terminal, mas esse output é limitado para auditoria e histórico. Em pipelines, você geralmente precisa de: um relatório HTML para leitura humana, um JUnit XML para integração com ferramentas de CI, e às vezes um JSON para pós-processamento (dashboards, métricas, trend de falhas).

Usando múltiplos reporters na mesma execução

Você pode habilitar mais de um reporter com -r. Um exemplo comum é combinar cli com junit:

newman run postman/collection.json -e postman/environments/staging.json -r cli,junit

Para controlar onde o arquivo JUnit será salvo:

newman run postman/collection.json -e postman/environments/staging.json -r cli,junit --reporter-junit-export reports/newman-junit.xml

Relatório HTML com htmlextra (instalação e uso)

Um dos formatos mais usados para leitura humana é o HTML. Para isso, é comum usar o reporter comunitário newman-reporter-htmlextra. Instale-o no projeto ou globalmente:

npm install -g newman-reporter-htmlextra

Depois, execute com o reporter:

newman run postman/collection.json -e postman/environments/staging.json -r cli,htmlextra --reporter-htmlextra-export reports/report.html

Esse relatório costuma incluir detalhes por request, falhas de testes, tempos e, dependendo da configuração, informações adicionais úteis para depuração.

Relatório JSON para pós-processamento

Se você quer alimentar um processo que calcula métricas (por exemplo, taxa de falhas por pasta, tempo médio por request), exportar JSON pode ser útil:

newman run postman/collection.json -e postman/environments/staging.json -r cli,json --reporter-json-export reports/report.json

Com esse arquivo, você pode criar scripts que leem o JSON e publicam resultados em dashboards internos.

Boas práticas de nomenclatura e versionamento de relatórios

Em CI, relatórios podem ser sobrescritos a cada execução. Uma prática simples é incluir um identificador no nome do arquivo (por exemplo, número do build, commit SHA ou timestamp). Em pipelines, isso costuma vir de variáveis do próprio CI. Exemplo conceitual:

newman run postman/collection.json -e postman/environments/staging.json -r junit --reporter-junit-export reports/junit-$BUILD_ID.xml

Assim você mantém histórico e facilita comparar execuções.

Automação com scripts: padronizando comandos para o time

Usando scripts npm para simplificar

Mesmo que o Newman rode via CLI, padronizar comandos evita divergências de flags entre pessoas e entre CI e execução local. Em um package.json, você pode criar scripts como:

{ "scripts": { "api:smoke:staging": "newman run postman/collection.json -e postman/environments/staging.json --folder \"Smoke\" --bail -r cli,htmlextra --reporter-htmlextra-export reports/smoke.html", "api:regression:staging": "newman run postman/collection.json -e postman/environments/staging.json -r cli,junit --reporter-junit-export reports/regression.xml" } }

Com isso, qualquer pessoa roda npm run api:smoke:staging e obtém o mesmo comportamento e o mesmo formato de evidência.

Separando configuração de infraestrutura do comando

Quando a base URL e credenciais mudam por ambiente, evite “hardcode” no script. Prefira ler de variáveis do sistema e sobrescrever via --env-var. Exemplo:

newman run postman/collection.json -e postman/environments/staging.json --env-var baseUrl=$BASE_URL -r cli,junit --reporter-junit-export reports/results.xml

Isso reduz o risco de commitar endpoints sensíveis e facilita rodar o mesmo job em diferentes ambientes sem duplicar arquivos.

Dicas de depuração quando a execução no Newman falha

Diferenças comuns entre Postman UI e Newman

Quando algo funciona no Postman e falha no Newman, as causas mais comuns são: arquivo de environment diferente do esperado, variáveis não injetadas no CI, dependência de estado local (como valores que você tinha no Postman e não exportou), e diferenças de rede (proxy, DNS, certificados). O primeiro passo é imprimir no log quais variáveis estão sendo usadas (sem expor segredos) e garantir que o comando do Newman aponta para os arquivos corretos.

Aumentando a verbosidade do output

Para investigar falhas, você pode usar opções de log mais detalhadas. Um recurso simples é habilitar saída mais completa no terminal e, quando possível, usar relatórios JSON para inspecionar o que aconteceu em cada request. Também é útil rodar apenas a pasta problemática com --folder para reduzir ruído e acelerar o ciclo de tentativa e erro.

Falhas intermitentes e repetição controlada

Se você suspeita de instabilidade, rode múltiplas iterações com -n e compare tempos e padrões de erro. Combine com timeouts ajustados e relatórios para evidenciar se o problema é de performance, rede ou lógica de teste.

newman run postman/collection.json -e postman/environments/staging.json --folder "Smoke" -n 10 -r cli,htmlextra --reporter-htmlextra-export reports/flaky-smoke.html

Checklist prático para colocar Newman em um pipeline

Itens essenciais para execução confiável

  • Collection exportada e versionada no repositório (v2.1).
  • Environment exportado sem segredos (ou com placeholders), com sobrescrita via variáveis do CI.
  • Comando Newman padronizado (script npm ou shell script).
  • Time-outs ajustados ao ambiente.
  • Reporter JUnit para integração com CI e HTML para leitura humana.
  • Política de falha: usar --bail para smoke e execução completa para regressão, conforme o objetivo.
  • Diretório de relatórios persistido como artifact do pipeline.

Com esse conjunto, você transforma uma Collection em um job automatizado, rastreável e repetível, com controle fino de variáveis e evidências claras para análise de falhas.

Agora responda o exercício sobre o conteúdo:

Em uma pipeline de CI/CD, qual abordagem ajuda a executar a mesma Collection em diferentes ambientes sem alterar o arquivo da Collection e mantendo segurança para dados sensíveis?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

A prática recomendada é reutilizar a mesma Collection, apontar para um Environment (sem segredos) e sobrescrever valores variáveis (como baseUrl) com --env-var usando variáveis do CI, reduzindo duplicação e risco de expor dados sensíveis.

Próximo capitúlo

Integração básica em CI com GitHub Actions: pipeline de testes e artefatos

Arrow Right Icon
Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.