Como usar collections do Postman para testes automatizados de API

1. Introdução às Collections do Postman e Testes Automatizados

Collections no Postman são conjuntos organizados de requisições HTTP que podem ser agrupadas, documentadas e executadas de forma automatizada. Elas servem como a base para transformar testes manuais de API em processos automatizados e repetíveis. Ao utilizar collections para automação, você ganha reutilização de scripts, organização lógica dos endpoints e integração direta com pipelines de CI/CD.

A principal diferença entre testes manuais e automatizados com collections está na execução: enquanto o teste manual exige que um desenvolvedor ou QA clique em cada requisição e verifique visualmente as respostas, a automação permite executar centenas de testes em segundos, com validações programáticas e relatórios detalhados.

2. Estruturação e Organização de uma Collection para Testes

Uma collection bem estruturada facilita a manutenção e a escalabilidade dos testes. Comece criando pastas dentro da collection para agrupar endpoints por funcionalidade, como "Autenticação", "Usuários" e "Produtos". Utilize variáveis de ambiente e globais para parametrizar URLs, tokens e outros dados que mudam entre ambientes.

Boas práticas de nomenclatura incluem usar nomes descritivos para as requisições, como "POST - Login com credenciais válidas" ou "GET - Listar produtos paginados". Adicione descrições detalhadas em cada requisição para documentar o propósito e os dados esperados.

Exemplo de estrutura de collection:

Collection: API de E-commerce
├── Pasta: Autenticação
│   ├── POST - Login
│   └── POST - Refresh Token
├── Pasta: Produtos
│   ├── GET - Listar todos
│   ├── GET - Buscar por ID
│   └── POST - Criar produto
└── Pasta: Pedidos
    ├── POST - Criar pedido
    └── GET - Histórico de pedidos

3. Escrevendo Scripts de Teste no Postman

O Postman utiliza o Postman Sandbox, um ambiente JavaScript que permite escrever scripts de teste diretamente nas requisições. A sintaxe básica envolve o uso de pm.test() para descrever o teste e pm.expect() para fazer asserções.

Exemplo de script de teste para validar uma resposta de login:

pm.test("Status code é 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Resposta contém token de acesso", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property("access_token");
    pm.expect(jsonData.access_token).to.be.a("string");
});

pm.test("Headers contém Content-Type JSON", function () {
    pm.response.to.have.header("Content-Type", "application/json");
});

Você pode encadear múltiplas asserções e usar expressões regulares para validações mais complexas. O Postman também oferece atalhos como pm.response.to.have.status() para verificar códigos HTTP comuns.

4. Trabalhando com Dados Dinâmicos e Pré-requisições

Scripts de pré-requisição (Pre-request Script) são executados antes do envio da requisição e são ideais para gerar dados dinâmicos, como timestamps únicos ou UUIDs. Para extrair valores de respostas anteriores, use pm.response.json() e armazene em variáveis.

Exemplo de cadeia de requisições dependentes (login → recurso protegido):

No script de pré-requisição do login:

// Gerar email único para teste
var timestamp = Date.now();
pm.variables.set("email", "usuario_" + timestamp + "@teste.com");
pm.variables.set("senha", "Senha@123");

No script de teste do login, extraia o token:

var jsonData = pm.response.json();
pm.collectionVariables.set("authToken", jsonData.access_token);

Na requisição protegida, use a variável no header:

Authorization: Bearer {{authToken}}

5. Execução Automatizada com Collection Runner

O Collection Runner permite executar toda a collection ou pastas específicas com configurações avançadas. Você pode definir iterações, delays entre requisições e arquivos de dados externos (CSV ou JSON) para alimentar variáveis.

Para usar dados externos, crie um arquivo CSV:

email,senha,produto_id
teste1@email.com,Senha123,101
teste2@email.com,Senha456,102
teste3@email.com,Senha789,103

No Collection Runner, selecione o arquivo CSV como fonte de dados. As variáveis do CSV substituirão automaticamente as variáveis da collection durante cada iteração. Após a execução, analise os resultados no relatório de pass/fail e exporte os logs para debugging.

6. Integração com CI/CD e Ferramentas de Linha de Comando

Newman é a ferramenta de linha de comando do Postman que permite executar collections headless, sem interface gráfica. Instale via npm:

npm install -g newman

Execute uma collection com ambiente e relatório:

newman run "API-Ecommerce.postman_collection.json" \
  -e "homologacao.postman_environment.json" \
  --folder "Autenticação" \
  --reporters cli,htmlextra \
  --reporter-htmlextra-export ./reports/relatorio.html

Para integrar com GitHub Actions, crie um workflow:

name: Testes de API
on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Instalar Newman
        run: npm install -g newman
      - name: Executar testes
        run: |
          newman run "tests/collection.json" \
            -e "tests/env.json" \
            --reporters cli,junit \
            --reporter-junit-export results.xml

7. Boas Práticas e Troubleshooting em Testes Automatizados

Para lidar com timeouts e erros de rede, configure delays entre requisições no Collection Runner ou use pm.wait() em scripts para simular comportamento humano. Testes idempotentes são cruciais: cada execução deve produzir o mesmo resultado, independentemente do estado anterior do sistema.

Estratégias para testes isolados incluem criar dados de teste no início de cada execução e limpá-los ao final, utilizando scripts de pré-requisição e pós-requisição. Versionamento de collections é essencial: exporte as collections como arquivos JSON e mantenha no controle de versão (Git). Para colaboração em equipe, use o Postman Workspaces e compartilhe ambientes e variáveis.

Referências