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 newmanPara confirmar a instalação:
newman -vExportando 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...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.jsonSe 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.jsonIsso 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.comVocê 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=acmeUsando 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.csvOu com JSON:
newman run collection.json -e environment.json -d data.jsonNa 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 5Se 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.jsonpostman/environments/staging.jsonpostman/environments/dev.jsonpostman/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.jsonSe o seu pipeline precisa sobrescrever o host, adicione --env-var:
newman run postman/collection.json -e postman/environments/staging.json --env-var baseUrl=$BASE_URLEm 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 10000Isso 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" --bailVocê 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,junitPara 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.xmlRelató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-htmlextraDepois, execute com o reporter:
newman run postman/collection.json -e postman/environments/staging.json -r cli,htmlextra --reporter-htmlextra-export reports/report.htmlEsse 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.jsonCom 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.xmlAssim 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.xmlIsso 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.htmlChecklist 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
--bailpara 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.